一、Java基础语法
-
数据类型与变量
Java是强类型语言,所有变量都必须先声明后使用。基本数据类型包括byte(8位)、short(16位)、int(32位)、long(64位)、float(32位)、double(64位)、char(16位)和boolean(1位)。引用数据类型包括类、接口和数组。变量作用域分为类变量(static)、实例变量和局部变量。 -
运算符与表达式
Java支持算术运算符(+ - * / %)、关系运算符(> < >= <= == !=)、逻辑运算符(&& || !)、位运算符(& | ^ ~ << >> >>>)、赋值运算符(= += -=等)和三目运算符(?:)。运算符优先级决定了表达式的计算顺序。 -
流程控制
if-else语句用于条件判断,switch-case用于多分支选择。循环结构包括while、do-while和for循环。Java5引入了增强for循环(foreach)。break和continue用于控制循环流程。
二、面向对象编程
-
类与对象
类是对象的模板,包含字段(属性)和方法(行为)。对象是类的实例,通过new关键字创建。构造方法用于初始化对象,可以重载。this关键字指代当前对象。 -
封装、继承与多态
封装通过访问修饰符(public/protected/private/default)实现数据隐藏。继承使用extends关键字,支持单继承。方法重写(Override)实现运行时多态,方法重载(Overload)实现编译时多态。super关键字用于访问父类成员。 -
抽象类与接口
抽象类用abstract修饰,可以包含抽象方法和具体方法。接口用interface定义,Java8前只能包含抽象方法,现在可以包含默认方法和静态方法。一个类可以实现多个接口但只能继承一个类。
三、Java核心API
-
集合框架
Collection接口派生出List(有序可重复)、Set(无序唯一)和Queue(队列)。Map接口表示键值对集合。常用实现类包括ArrayList、LinkedList、HashSet、TreeSet、HashMap和TreeMap。Java5引入泛型保证类型安全。 -
异常处理
Throwable是所有异常的超类,分为Error(严重错误)和Exception(可处理异常)。Checked异常必须处理,RuntimeException是unchecked异常。try-catch-finally用于捕获处理异常,throws声明可能抛出的异常。 -
IO流
字节流(InputStream/OutputStream)处理二进制数据,字符流(Reader/Writer)处理文本。常用实现类包括FileInputStream、FileOutputStream、BufferedReader和BufferedWriter。NIO提供了非阻塞IO操作。
四、高级特性
-
多线程编程
线程通过继承Thread类或实现Runnable接口创建。synchronized关键字实现同步,volatile保证可见性。Java5引入java.util.concurrent包提供更强大的并发工具,如Executor框架、Lock、Atomic类和并发集合。 -
反射机制
Class类表示运行时类信息,通过Class.forName()获取。Field、Method和Constructor类分别表示字段、方法和构造方法。反射可以实现动态加载类、调用方法和访问字段,但会带来性能开销和安全问题。 -
注解与泛型
注解(Annotation)用于为代码添加元数据,如@Override、@Deprecated。自定义注解通过@interface定义。泛型提供编译时类型检查,支持通配符(?)、上限()和下限( )。
五、JVM原理
-
内存模型
堆内存存储对象实例,方法区存储类信息,虚拟机栈存储局部变量,本地方法栈支持native方法,程序计数器记录执行位置。垃圾回收主要针对堆内存,使用可达性分析算法判断对象是否存活。 -
类加载机制
加载-验证-准备-解析-初始化五个阶段。双亲委派模型保证类加载的安全性,启动类加载器(Bootstrap)、扩展类加载器(Extension)和应用类加载器(Application)形成层级关系。 -
性能调优
-Xms和-Xmx设置堆初始和最大大小,-XX:NewRatio设置新生代比例,-XX:SurvivorRatio设置Eden区比例。常用垃圾收集器包括Serial、Parallel、CMS和G1。JIT编译器将热点代码编译为本地机器码。
六、新特性演进
-
Java8
Lambda表达式支持函数式编程,Stream API提供声明式数据处理,Optional避免空指针异常,新的日期时间API(java.time)更易用,接口支持默认方法和静态方法。 -
Java11
局部变量类型推断(var关键字),HTTP客户端API标准化,新的垃圾收集器ZGC,单文件源代码程序直接运行,字符串新增方法(isBlank、strip等)。 -
Java17
密封类(sealed class)限制继承,模式匹配简化instanceof检查,文本块改进,新的伪随机数生成器API,弃用Applet和Security Manager等过时功能。
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。