欢迎光临
我们一直在努力

Java基础知识全览

Java基础知识全览:从入门到进阶的完整脉络
作为一名写了十几年Java的工程师,我常被问:"Java基础到底要学哪些?"这个问题看似简单,实则决定了你未来能走多远。本文按知识依赖顺序梳理Java核心基础,帮你建立完整的地图。

一、Java语言概述
Java诞生于1995年,由Sun公司(现属Oracle)推出,核心特性是"一次编写,到处运行"——源码编译成字节码(.class),由JVM在不同平台解释执行。Java是面向对象、强类型、跨平台的语言,广泛应用于后端服务、大数据、Android等领域。

JDK是开发工具包(含编译器javac、运行工具),JRE是运行环境(含JVM和核心类库),JVM是虚拟机。三者关系:JDK ⊃ JRE ⊃ JVM。

二、第一个程序与基本语法
java
public class Hello {
public static void main(String[] args) {
System.out.println(“Hello, Java!”);
}
}
main方法是程序入口,public static void三要素缺一不可。Java程序结构由包(package)、类(class)、方法(method)层层组织,文件名必须与public类名一致。

三、数据类型与变量
Java有8种基本类型:byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean。记住int和double是默认选择,浮点数存在精度问题,涉及金额必须用BigDecimal。

引用类型包括类、接口、数组、枚举。基本类型与引用类型的关键区别:前者存值,后者存地址引用;基本类型有默认值(如int为0),局部变量必须先初始化。

类型转换分自动(小转大)和强制(大转小,可能丢失精度)。变量作用域分成员变量、局部变量、静态变量,遵循就近原则。

四、运算符与流程控制
运算符包括算术(+ – * / %)、关系(> < == !=)、逻辑(&& || !,具备短路特性)、位运算(& | ^ ~ << >> >>>)、三元(? :)。注意==对引用类型比较的是地址,字符串比较必须用equals()。

流程控制:if-else、switch(JDK 14+支持箭头语法和yield返回值)、for、while、do-while、增强for(for-each)。break跳出循环,continue跳过本次,return结束方法。

五、面向对象三大特性
封装:用private隐藏字段,提供getter/setter控制访问,保护数据完整性。

继承:extends实现单继承,子类复用父类成员,通过super调用父类构造器。Java不支持多继承类,但支持多实现接口。

多态:父类引用指向子类对象,运行时动态绑定。前提是继承+方法重写(@Override),这是Java扩展性的核心。

java
Animal a = new Dog(); // 向上转型
a.speak(); // 调用Dog重写的方法
抽象类用abstract修饰,可有构造器和具体方法,不能实例化;接口定义行为契约,JDK 8后支持default和static方法,JDK 9支持private方法。接口可多实现,是设计中的首选。

构造器与类同名、无返回值,用于初始化对象;static修饰的成员属于类而非实例;final修饰类不可继承、方法不可重写、变量不可变。

六、常用核心类
String不可变,每次操作产生新对象;频繁拼接用StringBuilder(非线程安全)或StringBuffer(线程安全)。字符串常量池优化内存。

包装类(Integer、Double等)实现基本类型与对象互转,JDK 5引入自动装箱拆箱,但注意Integer缓存[-128,127],超出范围==比较会失效。

Object是所有类的根,定义了equals()、hashCode()、toString()、getClass()等方法。重写equals必须重写hashCode,这是HashMap正确工作的前提。

七、集合框架
这是面试和实战的重中之重。核心接口:Collection(List/Set/Queue)和Map。

ArrayList:数组实现,随机访问快O(1),中间插入删除慢O(n),线程不安全。

LinkedList:双向链表,增删快,查询慢。

HashMap:数组+链表+红黑树(JDK 8),key无序,允许一个null键,非线程安全,默认容量16,负载因子0.75。

TreeMap:红黑树,key有序。

HashSet:基于HashMap实现,元素唯一。

ConcurrentHashMap:分段锁/CAS+synchronized,线程安全的高性能Map。

遍历时优先用迭代器或增强for,避免ConcurrentModificationException。

八、异常处理
异常体系根为Throwable,分Error(系统级,如OOM,不可处理)和Exception。Exception又分受检异常(必须处理,如IOException)和运行时异常(如NullPointerException、ArrayIndexOutOfBoundsException)。

java
try {
// 可能出错的代码
} catch (SpecificException e) {
// 处理
} finally {
// 必定执行,用于释放资源
}
推荐try-with-resources自动关闭资源。异常不要吞掉,也不要滥用——异常开销大,能用条件判断的别用异常控制流程。

九、IO流
分字节流(InputStream/OutputStream)和字符流(Reader/Writer)。缓冲流(BufferedXxx)提升性能,转换流(InputStreamReader)处理编码。NIO(JDK 1.4+)引入Channel、Buffer、Selector,支持非阻塞IO,是高并发网络编程基础。

十、多线程
线程创建:继承Thread、实现Runnable、实现Callable(有返回值)、线程池。生产环境一律用ThreadPoolExecutor,禁止Executors快捷方法(易OOM)。

线程状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。

同步:synchronized(锁对象/方法)、volatile(保证可见性和有序性,不保证原子性)、Lock接口(ReentrantLock更灵活)。线程通信用wait/notify或Condition。ThreadLocal为每个线程提供独立副本。

JMM(Java内存模型)定义happens-before规则,是理解并发安全的基石。原子类(AtomicInteger)基于CAS实现无锁并发。

十一、泛型与反射
泛型提供编译期类型检查,本质是类型擦除(运行时无泛型信息)。通配符? extends T(上界,只读)和? super T(下界,可写)遵循PECS原则。

反射在运行时获取类信息、调用方法、创建对象,是框架(Spring、MyBatis)的底层支撑,但性能较低,谨慎使用。

十二、JVM基础
理解类加载机制(加载→验证→准备→解析→初始化,双亲委派模型)、运行时数据区(堆、栈、方法区、程序计数器、本地方法栈)、垃圾回收(可达性分析、分代收集、G1/ZGC)。内存泄漏与OOM排查是进阶必修课。

结语
以上是Java基础的完整骨架:语法→面向对象→核心类库→集合与IO→并发→泛型反射→JVM。建议的学习路径是:先动手写代码吃透语法和OOP,再精读集合与并发源码,最后深入JVM。

赞(0)
未经允许不得转载:171主机测评 » Java基础知识全览
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址