java的入门学习

news2024/11/28 1:37:30

1. 安装jdk

一般是安装java8,大部分使用的版本是java8;
然后需要部署java环境变量

2. 编译class文件

javac 文件名.java

3. 执行class文件

编译命令为java 文件名

配置classpath路径为.\为当前路径下的class文件名在这里插入图片描述

4. 变量

成员变量:类里面的变量
局部变量:方法里面的变量
变量不能重复定义,在上一级作用域中已经声明的变量在该作用域里不能再次声明该变量

5. 类型

八大基本数据类型↓
在这里插入图片描述

6. X进制之间的转换

多少进制就是多少进1;我们日常用的是十进制

在这里插入图片描述
进制转换:
二进制1101转十进制为 13
在这里插入图片描述
十进制13转二进制为 1101
在这里插入图片描述
8进制转换
在这里插入图片描述

7. 在不同类型之间运算时,会按照类型级别由高到低地统一为统一为最高级的类型

在这里插入图片描述
运算时的类型转换
在这里插入图片描述

8. 数组

存储多个相同类型数据的存储模型,数组在初始化时会为储存空间添加默认值
在这里插入图片描述
静态初始化:int[] arr = new int[]{ 1,2,3}; 简化格式:int[] arr = { 1,2,3 };
动态初始化:int[] arr = new int[];

数组操作的两个常见问题:

  • 索引越界: 访问了数组中不存在的索引对应的元素,造成索引越界;
  • 空指针异常: 访问的数组已经不再指向堆内存的数据,造成空指针异常;
  • null: 控制,引用数据类型的默认值,表示不再指向任何有效对象;

9. 内存

栈内存:存储局部变量 例如定义在方法中的变量
堆内存:存储new出来的内容(实体, 对象)

栈是临时存储空间,也是方法和变量调用时的临时空间
当new一个对象/数组时,堆里就会创建一个新的地址;

int[] arr = new int[3]
// 栈内存里的arr[0]对应堆内存的new int的堆内存地址“001”
int[] arr2 = arr;
arr2[0] = 100;
// 这里arr[0]也会变为100

10. 方法

  • 调用: main(): void类型的方法可以直接调用;非void类型的方法,使用变量接收调用;
  • 定义:public static void xxx(){}
  • 如果方法没有返回值则使用void声明,有返回值需要声明对应的数据类型并返回数据;如:public static int xxx(){ return 100; }
  • 方法重载:类里具有多个相同方法的方法名,且参数不同,则形成方法重载;

11. private

在类中使用private String name被privave定义的name属性,只能通过类内部定义的方法获取和使用,不能被外部访问;

12. this

在类中的方法里存在,this等于当前调用他的对象;

13. 构造方法

无参构造方法 public 类名(){}
有参构造方法 public 类名(int 100){}
无论是否有参最好都在类里声明无参构造方法

14. 一个标准的类应该含有的属性

在这里插入图片描述

15. String

String类在java.lang包下,Java程序中所有的双引号字符串,都是String类的对象
JVM只会创建一个String对象,并在字符串池中维护

new出来的string都有自己的堆内存空间,直接赋值的string值存在常量池里,直接调用并共用一个常量池,没有新堆内存

字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
↑JDK8以前是字符数组,JDK9以后是字节数组

16. StringBuilder

	String s = "ni";
	s += "hao"
	// 在常量池里会创建 ni hao nihao 三个内存地址
	StringBuilder s = new StringBuilder;
	// 此时s的内容可以随意改变

字符串每次拼接都会构建一个新的String对象,耗时耗内存,使用StringBuilder解决字符串拼接问题;

八大基本数据类型↓

17. 集合

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生变化;

  • ArrayList<>接收一个泛型,可以根据传入的类型而指定类型;ArrayList<String> array = new ArrayList<>()

18. 继承

子类被称为派生类,父类称为基类,超类

// public class 子类名 extends 父类名 {}
public class Zi extends Fu {}
  • 好处:提高了代码的复用性,提高了代码的维护性;
  • 坏处:增加了类的耦合,削弱了子类的独立性;
  • super关键字: 当前对象访问父类成员属性的方式,super.成员变量->用来访问父类的成员变量;
  • 继承中的构造方法: 子类有可能会使用父类的数据,子类初始化之前一定要先完成父类的数据初始化,每一个子类构造方法的第一条语句默认都是:super();
  • 方法重写:子类可以重写父类中相同名字的成员方法(父类私有方法不能被重写,父类私有成员子类不能继承)

19. 包-就是文件夹,对类的分类

无论是否有参最好都在类里声明无参构造方法

  • 权限修饰符
  • final: 结扎修饰符,被final修饰的类不能被继承;方法不能被重写;变量不能再次被赋值基本类型的变量变常量,引用类型的变量地址值不会变地址内容可以改变;
  • static: 静态修饰符,被类的所有对象共享;静态成员方法只能访问静态成员;
    在这里插入图片描述

20. 多态

多态的前提
(1)有继承或者实现关系
(2)有方法重写
(3)有父类/接口引用指向子类对象

多态的分类

  • 编译型多态:也称为静态多态性或早期绑定(Early Binding)。编译时多态性发生在编译时,是通过函数重载和运算符重载来实现的。在编译时多态性中,编译器根据方法的签名(参数类型和数量)来确定要调用哪个方法。
  • 运行时多态:也称为动态多态性或晚期绑定(Late Binding)。运行时多态性发生在程序运行时,是通过方法覆盖(重写)来实现的。在运行时多态性中,程序在运行时根据对象的实际类型来确定要调用的方法。
  • 多态的转型:类型转换是将一个引用从其原始类型转换为其父类类型或接口类型的操作
    (1)向上转型:将一个子类对象引用赋给一个父类类型的引用变量的过程
    (2)向下转型:向下转型是将一个父类类型的引用变量转换为一个子类类型的引用变量的过程,通常需要使用instanceof运算符来检查对象的类型,以避免ClassCastException异常

21. 抽象类

抽象类和抽象方法必须使用abstract关键字修饰

public abstract class 类名 {}
public abstract void eat();

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

22. 抽象类成员特点

  • 构造方法但是不能实例化,用于子类访问父类数据的初始化
  • 抽象方法:限定子类必须完成某些动作
  • 非抽象方法:提高代码复用性

23. 接口

  • 接口用关键字interface修饰
public abstract 接口名 {}
  • 类实现接口用 implements 表示
public class 类名 implements 接口名 {}

24. 接口的成员特点

(1)成员变量
只能是常量:public static final
(2)构造方法
接口没有构造方法,因为接口主要是对行为进行抽象;一个类没有父类,默认继承Object类
(3)成员方法
只能是抽象方法:public abstract 接口名 {}

25. 抽象类和接口的区别

26. 匿名内部类

new 类名 () {
	重写方法
}

27. 基本类型包装类

在这里插入图片描述

28. 装箱和拆箱

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pycharm中配置Celery启动

Pycharm中配置Celery启动 前置条件 目录结构 ----FerDemo --------celery_demo ------------tasks.py tasks.py文件代码 import sys import time from celery import Celeryapp Celery(demo,backendredis://:password127.0.0.1/0,brokerredis://:password127.0.0.1/1,broker…

【线性代数】沉浸式线性代数在线学习网站

地址&#xff1a;http://immersivemath.com/ila/index.html 这是全球第一本带交互式图形的线性代数教材&#xff0c;作者是 J. Strm, K. strm, and T. Akenine-Mller。 全书一共十章&#xff0c;各章节内容如下&#xff1a; 接下来我将对各章节进行简单的总结&#xff0c;另外…

LLM - SFT workflow 微调工作流程

目录 一.引言 二.Workflow 分流程拆解 1. Workflow 代码 2.Workflow 拆解 ◆ 超参数初始化 ◆ 数据集初始化 ◆ 加载与量化 ◆ 数据集预处理 ◆ DataCollator ◆ 模型微调 sft 三.总结 一.引言 前面我们对 LLM 相关流程的单步都做了分析…

Linux入门教程||Linux文件基本属性

Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们可以使用 ll 或者 ls –l…

分类预测 | Matlab实现RBF-Adaboost多特征分类预测

分类预测 | Matlab实现RBF-Adaboost多特征分类预测 目录 分类预测 | Matlab实现RBF-Adaboost多特征分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于RBF-Adaboost数据分类预测&#xff08;Matlab完整程序和数据&#xff09; 2.多特征输入…

有关Monaco LSP的集成 monaco-languageclient 项目的开启

要求 node 18x npm 9x git clone https://github.com/TypeFox/monaco-languageclient.git cd monaco-languageclient npm i# Cleans-up, compiles and builds everything npm run build npm run dev # 访问 http://127.0.0.1:8080/两个自动完成&#xff0c; 两个验证 纠错

马蹄集 oj赛(第十一次)

目录 除法2 tax 约数个数 约数之和 全部相同 石头剪刀布 模数 余数之和 数树 除法 除法2 黄金时间限制:1秒占用内存: 128 M难度: 给定n&#xff0c;求 ”i*[n/]&#xff0c;[] 表示对 取下整 格式 一个正整数n。输入格式: 输出格式:一个数表示答案 样例1 输入:4 输出…

iPhone苹果15手机怎么取消订阅付费的项目?

iPhone苹果15手机怎么取消订阅付费的项目&#xff1f; 1、打开iPhone苹果手机桌面上的「设置」&#xff1b; 2、在苹果iPhone手机设置内点击进客户我的「Apple ID」; 3、在苹果iPhone手机Apple ID内找到「订阅」并点击进入&#xff1b; 4、在苹果iPhone手机Apple ID订阅内找到…

康拓123发卡软件支持PN532读卡器

康拓123发卡软件&#xff0c;支持PN532、PCR532等532系列读卡器&#xff0c;使用普通M1卡&#xff0c;就是也物业使用的一样的卡授权卡。 软件打开如下图 将PN532插电脑上&#xff0c;安装驱动&#xff0c;软件可以自动连接读卡器&#xff0c;也可以手动连接&#xff0c;在软件…

React隐藏显示元素

1、引入 2、添加布尔类型的状态变量 3、切换变量的状态值 4、给<div>赋值 给button按钮设置点击事件 这样就可以实现了

2023/9/13 -- C++/QT

作业&#xff1a; 1> 将之前定义的栈类和队列类都实现成模板类 栈&#xff1a; #include <iostream> #define MAX 40 using namespace std;template <typename T> class Stack{ private:T *data;int top; public:Stack();~Stack();Stack(const Stack &ot…

Spring WebFlux详解

Spring 框架中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器而设计的。后来在 5.0 版本中加入了 reactive 栈的 Web 框架 Spring WebFlux。它是完全非阻塞的&#xff0c;支持 Reactive Streams 背压&#xff0c;并在 Netty、Undertow 和 Servlet 容…

基于Protege的知识建模实战

一.Protege简介、用途和特点 1.Protege简介 Protege是斯坦福大学医学院生物信息研究中心基于Java开发的本体编辑和本体开发工具&#xff0c;也是基于知识的编辑器&#xff0c;属于开放源代码软件。这个软件主要用于语义网中本体的构建&#xff0c;是语义网中本体构建的核心开发…

山西电力市场日前价格预测【2023-09-14】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-09-14&#xff09;山西电力市场全天平均日前电价为314.65元/MWh。其中&#xff0c;最高日前电价为362.07元/MWh&#xff0c;预计出现在19: 00。最低日前电价为154.13元/MWh&#xff0c;预计…

c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】

C 手动内存管理&#xff1a;C语言没有内置的安全检查机制&#xff0c;容易出现内存泄漏、缓冲区溢出等安全问题。 适用于系统级编程 C 手动内存管理&#xff1a;C需要程序员手动管理内存&#xff0c;包括分配和释放内存&#xff0c;这可能导致内存泄漏和指针错误。 适用于…

一百七十五、Kettle——海豚调度kettle任务的脚本需不需要配置log日志文件?

一、目的 总结一下&#xff0c;在用海豚调度kettle任务脚本是需不需要配置log日志文件&#xff1f; 二、两种情形介绍 &#xff08;一&#xff09;海豚配置kettle任务调度脚本时加log日志文件 #!/bin/bash source /etc/profile /usr/local/hurys/dc_env/kettle/data-integ…

《PostgreSQL物化视图:创建、维护与应用》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

Python——urllib库

urllib是一个用来处理网络请求的python内置库。 一.基本使用 二.一个类型和6个方法 2.1 一个类型 urllib的request库中urlopen方法返回的类型&#xff1a;<class http.client.HTTPResponse>。为了与之后request库做区别。 2.2 6个方法 read()方法&#xff1a;获得响应…

spark6. 如何设置spark 日志

spark yarn日志全解 一.前言二.开启日志聚合是什么样的2.1 开启日志聚合MapReduce history server2.2 如何开启Spark history server 三.不开启日志聚合是什么样的四.正确使用log4j.properties 一.前言 本文只讲解再yarn 模式下的日志配置。 二.开启日志聚合是什么样的 在ya…

C#,数值计算——哈希表的实现代码

1 文本格式 using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Hash<K, V> : Hashtable<K> { private List<V> els { get; set; } new List<V>(); public Ha…