以下是一篇关于Java基础知识的总结文章,涵盖了Java语言特性、语法基础、面向对象编程、集合框架、异常处理等内容,并包含相关应用实例,供你学习使用:
Java基础知识总结
Java语言核心特性
- 面向对象(OOP):以“对象”为中心,将事物抽象为具有属性和方法的实例。例如设计一个
Car
类,可封装品牌、速度等属性,以及启动、刹车等方法。 - 简洁易用:去除了C/C++中的复杂特性,如指针运算,语法更严谨统一,内存管理由JVM自动完成,减少了编程错误。
- 健壮性:通过强类型检查、异常处理和自动垃圾回收等机制,在编译期和运行期进行多重校验。如
NullPointerException
可被及时捕获,提高程序的稳定性。 - 安全性:内置沙箱模型、类加载器验证和字节码校验等机制,防止恶意代码侵入,适用于网络应用等场景,如Applet的运行环境安全保护。
- 平台无关性(WORA):Java字节码可在不同操作系统和硬件上,通过安装相应的JVM运行,实现“一次编写,到处运行”,如Windows、Linux、macOS系统均可运行同一Java程序。
- 多线程支持:内建
Thread
类与高层java.util.concurrent
框架,简化了并发编程。例如可同时下载多个文件,提高资源利用率。 - 分布式能力:提供丰富的网络API(
java.net
),便于实现Socket编程与远程调用(RMI),常用于客户端 - 服务器模型的远程对象调用。 - 编译与解释并存:先将源码编译为字节码(.class),再由JVM逐条解释或JIT编译执行,兼具效率与灵活性,如Spring Boot热部署框架支持快速重启。
Java语法基础
- 标识符:由字母、数字、下划线(
_
)或美元符号($
)组成,首字符不能是数字,区分大小写,不能使用关键字或保留字,如String userName
是合法的标识符。 - 关键字和保留字:关键字是Java语言内部定义并赋予特殊意义的,如
class
、if
等;保留字当前未使用,将来可能成为关键字,如goto
、const
。 - 变量:声明格式为“数据类型 变量名;”,赋值使用“变量名 = 表达式;”,也可声明并赋值,如“
int count = 5;
”。 - 注释类型:包括单行注释(
// 注释内容
)、多行注释(/* 注释内容 */
)和文档注释(/** 注释内容 */
),文档注释可用于生成API文档。 - 数据类型:基本数据类型有
byte
、short
、int
、long
、float
、double
、boolean
和char
。如byte b = 100;
,double d = 3.1415926;
。 - 类型转换:分为隐式转换(精度小的类型自动转为精度大的类型)和强制(显式)转换(手动指定,可能丢失精度),如
int x = 10; double y = x;
是隐式转换,double d = 9.99; int n = (int)d;
是强制转换。 - 运算符:包括算术运算符(如
+
、-
、*
、/
、%
)、赋值运算符(如=
、+=
等)、比较运算符(如==
、!=
等)、逻辑运算符(如&&
、||
、!
)和三元运算符(? :
)。
面向对象编程
- 类和对象:类是对象的模板,由属性和行为组成。对象是类的实例化。例如定义一个
Person
类,包含name
、age
等属性和sayHello
等方法,通过Person p = new Person();
创建对象。 - 构造方法:用于创建对象时初始化对象的属性。构造方法名与类名相同,没有返回值类型。若类中未显式定义构造方法,系统会提供默认无参构造方法,若定义了有参构造方法,系统则不再自动生成无参构造方法。
- 成员变量和局部变量:成员变量声明在类中方法体之外,作用域为整个类,可使用修饰符,有缺省值。局部变量声明在方法体或代码块中,作用域为当前方法体,无缺省值,只能使用
final
修饰。 - 方法重载:在同一个类中,可定义多个方法名相同但参数不同的方法,根据传入参数的不同来调用相应的方法。
集合框架
- ArrayList:是一个动态数组,实现了
List
接口。可通过List<Integer> nums = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
创建。需注意,在遍历ArrayList
时若要删除元素,不能直接使用普通for
循环正序删除,否则会出现索引越界等问题,应使用迭代器或倒序操作。 - HashMap:是一种基于哈希表的键值对存储结构。通过
scores.put("李四", 85);
存储数据,遍历HashMap
时,使用entrySet
方式效率较高。JDK8的HashMap
底层是数组 + 链表 + 红黑树,加载因子默认0.75,扩容2倍,这是面试常考知识点。
异常处理
- 异常分类:分为
Error
、Checked Exception
和Unchecked Exception
。Error
是系统级错误,如OutOfMemoryError
,一般无需处理;Checked Exception
必须使用try - catch
块处理,如IOException
;Unchecked Exception
可处理可不处理,如NullPointerException
。 - 自定义异常:可通过继承
Exception
或RuntimeException
来创建自定义异常类。若继承RuntimeException
,则为非检查型异常。注意,不要用异常做业务逻辑控制,否则会影响性能。
JVM基础
- 内存模型:主要包括方法区(存储类信息、静态变量等)、堆(对象实例所在地,GC主战场)、虚拟机栈(方法调用栈帧,存储局部变量)、本地方法栈(用于Native方法)和程序计数器(记录当前执行位置)。例如,
String str = new String("abc");
创建对象时,若常量池没有"abc",会先在常量池创建,再在堆创建,若已有"abc",则只在堆创建新对象。
其他重要知识点
==
和equals
:基本类型使用==
比较值是否相等,对象比较通常使用equals
方法。对于String
类型,尤其要注意,==
比较的是引用地址,equals
比较的是字符串内容。- 字符串拼接:在循环内不要使用
+
号拼接字符串,应使用StringBuilder
或StringBuffer
,否则会产生大量临时字符串对象,影响性能。 BigDecimal
:进行金钱计算等对精度要求高的场景,必须使用BigDecimal
,因为double
类型会存在精度丢失问题。- 资源关闭:使用
try - with - resources
语句可以自动关闭实现了AutoCloseable
接口的资源,如文件流等,这是JDK7+的特性,可简化代码并确保资源正确关闭。
Java 基础,面向对象编程,Java 核心类库,异常处理,集合框架,多线程,IO 流,Java 并发编程,JDK,Java 语法,泛型,反射机制,注解,Java 虚拟机 (JVM),Java 开发工具
代码获取方式
https://pan.quark.cn/s/14fcf913bae6