以下是对Java基础知识的详细总结:
Java语言概述
- Java之父:詹姆斯·高斯林。
- 语言特性:完全面向对象,具有跨平台性,依靠Java虚拟机(JVM)实现“一次编写,到处运行”。
- 相关工具与环境:JDK(Java开发工具包)是Java程序开发所需,包含JRE(Java运行环境),JRE又包含JVM。JDK中的开发工具主要有编译工具
javac.exe和运行工具java.exe。 - 程序开发流程:先编写Java源文件,再使用
javac命令编译生成字节码文件(.class),最后通过java命令运行。 - 基本组成单位:Java程序中最基本的组成单位是类。
Java语法基础
- 关键字:如
public、static、void、class等,全部小写,具有特殊含义,不能用作标识符。 - 标识符:由数字、字母、下划线、美元符号组成,不能以数字开头,不能是关键字,区分大小写,理论上长度无限制。
- 常量:包括整型(如10、100)、浮点型(如3.14)、布尔型(
true、false)、字符型(如'a')、字符串型(如"abc")和空常量(null)。 - 变量:必须先声明再赋值才能访问。根据位置分为局部变量(在方法体中声明)和成员变量(在类体内、方法体外声明),局部变量只在方法体有效,方法执行完内存释放。
- 数据类型:基本数据类型有整数型(
byte、short、int、long)、浮点型(float、double)、布尔型(boolean)、字符型(char);引用数据类型如String等,除基本数据类型外都是引用数据类型。 - 运算符:包括算术运算符(
+、-、*等)、关系运算符(>、<、==等,结果为布尔型)、逻辑运算符(&&、||、!等,&&和||有短路特性)、赋值运算符(=、+=等)、自加自减运算符(++、--,单独使用时在前在后结果相同,参与操作时在前先自增/减后参与运算,在后则先参与运算后自增/减)和三元运算符(关系表达式? 表达式1 : 表达式2,根据关系表达式结果选择执行表达式1或表达式2)。 - 类型转换:小容量可自动赋值给大容量,如
byte可自动转为int;大容量赋值给小容量需强制类型转换,可能会有精度损失。boolean类型不能与其他类型转换。
流程控制
- 选择结构:有
if - else语句和switch语句。if - else可实现单分支、双分支或多分支判断;switch语句根据表达式的值与多个case常量进行匹配,执行相应分支,JDK7后switch支持字符串类型。 - 循环结构:包括
for循环、while循环和do - while循环。for循环常用于已知循环次数的场景;while循环先判断条件,条件为真则执行循环体;do - while循环先执行一次循环体,再判断条件,至少会执行一次循环体。
面向对象编程
- 类和对象:类是对象的模板,定义了属性和方法,对象是类的实例。如定义
Person类,包含name、age属性和sayHello方法,通过Person p = new Person();创建对象。 - 封装:将属性和方法捆绑在一起,通过访问控制符(
private、public、protected等)限制外部访问,通常用getter和setter方法访问私有属性,可保护数据安全,隐藏实现细节。 - 继承:子类继承父类属性和方法,实现代码复用和扩展。如动物类是父类,狗类继承动物类,狗类可拥有动物类的部分属性和方法。
- 多态:同一操作作用于不同对象有不同行为,通过方法重写和动态绑定实现。例如父类
Animal有speak方法,子类Dog和Cat重写该方法,不同子类对象调用speak方法会有不同表现。 - 接口:是更抽象的“类”,包含常量、抽象方法和默认方法,可实现多重继承,用于定义规范。
集合框架
- ArrayList:是动态数组,实现了
List接口。可通过List<Integer> nums = new ArrayList<>(Arrays.asList(1, 2, 3, 4));创建,便于增删改查元素,遍历删除元素时需注意避免索引越界问题,可使用迭代器或倒序删除。 - HashMap:基于哈希表的键值对存储结构,通过
put方法存储数据,如scores.put("李四", 85);。遍历HashMap时,使用entrySet方式效率较高,JDK8底层是数组+链表+红黑树。
异常处理
- 异常分类:分为
Error、Checked Exception和Unchecked Exception。Error是系统级错误,如OutOfMemoryError,一般无需处理;Checked Exception必须使用try - catch - finally块处理或在方法声明中抛出;Unchecked Exception如NullPointerException,通常是代码逻辑问题,可不强制处理,但建议处理以增强程序健壮性。 - 处理方式:使用
try块包裹可能抛出异常的代码,catch块捕获并处理异常,finally块中的代码无论是否发生异常都会执行,常用于资源释放等操作。
其他重要知识点
- 字符串:
String类用于表示字符串,字符串是不可变的。可通过+号进行字符串拼接,比较字符串内容是否相等用equals方法,而不是==,==用于比较引用地址。 - JVM内存模型:JVM内存主要分为堆、栈、方法区等。堆用于存储对象实例;栈用于存储局部变量等,遵循先进后出原则;方法区存储类信息、常量等。
Java 基础,面向对象编程,Java 集合框架,多线程,异常处理,Java IO,NIO, 反射机制,注解,泛型,Java 内存模型,JVM,Lambda 表达式,Stream API, 设计模式
代码获取方式
https://pan.quark.cn/s/14fcf913bae6