导图社区 Java之基石底蕴
这是一篇关于Java之基石底蕴的思维导图,主要内容包括:Java语言概述,Java开发环境搭建,Java基本语法,面向对象编程,异常处理,集合框架,输入输出(I/O),核心类库,多线程编程,反射,Java新特性(可选)。
编辑于2025-11-05 14:39:04Java之基石底蕴
Java语言概述
Java的历史
由Sun Microsystems公司于1995年发布
设计目标:一次编写,到处运行
Java的特点
面向对象
平台无关性
简单性
分布式
健壮性
安全性
多线程
性能
Java开发环境搭建
JDK安装
下载JDK
安装JDK
配置环境变量
JAVA_HOME
PATH
CLASSPATH
mavem安装
1. **下载Maven**:访问官网下载对应系统的Maven压缩包(如.zip或.tar.gz)。
2. **解压文件**:将压缩包解压到指定目录(如`C:\apachemaven`或`/opt/maven`)。
3. **配置环境变量**:设置`MAVEN_HOME`指向解压目录,并将`bin`路径加入`PATH`。
4. **验证安装**:命令行运行`mvnv`,确认显示版本信息即安装成功。
5. **配置本地仓库**:修改`conf/settings.xml`,指定本地仓库路径(如`D:\mavenrepo`)。
6. **配置镜像源**:在`settings.xml`中添加阿里云等镜像源,加速依赖下载。
开发工具
IDEs(集成开发环境)
Eclipse
IntelliJ IDEA
NetBeans
编辑器
Notepad++
Sublime Text
Visual Studio Code
Java基本语法
数据类型
基本数据类型
整数类型
byte
short
int
long
浮点类型
float
double
字符类型
char
布尔类型
boolean
引用数据类型
类
接口
数组
变量
变量声明
变量初始化
变量作用域
变量作用域
定义
变量的作用域是指程序中可以访问该变量的区域
类作用域
类变量(静态变量)
用static修饰
在类的所有实例中共享
可以在类内部或外部通过类名访问
实例变量
不用static修饰
每个对象都有自己的实例变量副本
可以在类内部通过this访问
方法作用域
局部变量
在方法内部定义
只在方法内部可见
方法执行完毕后局部变量消失
块作用域
在代码块内定义
如for循环、if语句等
只在该代码块内可见
作用域规则
内层作用域可以访问外层作用域的变量
外层作用域不能访问内层作用域的变量
作用域限制
变量遮蔽
内层作用域的变量名与外层作用域相同,会遮蔽外层变量
生命周期
变量的生命周期由其作用域决定
类变量生命周期最长,直到程序结束
实例变量生命周期与对象相同
局部变量生命周期与方法或代码块的执行时间相同
作用域最佳实践
尽量减少变量的作用域范围
使代码更清晰,减少错误
避免不必要的全局变量
以减少潜在的命名冲突和依赖问题
运算符
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
条件运算符
控制流程语句
条件语句
if
switch
循环语句
for
while
do-while
跳转语句
break
continue
return
面向对象编程
类与对象
类的定义
对象的创建
对象的使用
继承
继承的概念
super关键字
方法重写
final关键字
封装
private、protected、public访问修饰符
构造方法
getter和setter方法
多态
方法重载
抽象类和接口
引用类型转换
抽象类和接口
抽象类的定义和使用
接口的定义和实现
异常处理
异常的概念
异常类的层次结构
捕获异常
try-catch语句
抛出异常
throw关键字
throws关键字
异常类型
1. RuntimeException:未检查异常,如空指针,运行时报错
2. IOException:输入输出操作失败时抛出,如文件未找到
3. ClassNotFoundException:类加载失败,如类路径错误
4. NullPointerException:访问空对象成员或调用其方法时触发
5. ArrayIndexOutOfBoundsException:数组越界访问时抛出
6. SQLException:数据库操作异常,如连接失败或SQL错误
7. ClassNotFoundException:JVM找不到指定类定义时抛出
8. IllegalArgumentException:方法参数不合法时触发
9. ArithmeticException:算术运算错误,如除数为零时抛出
自定义异常
集合框架
集合框架概述
Collection接口
Map接口
List接口及其实现
ArrayList
LinkedList
Set接口及其实现
HashSet
TreeSet
Map接口及其实现
HashMap
TreeMap
迭代器
Iterator接口
ListIterator接口
输入输出(I/O)
字节流
InputStream
OutputStream
字符流
Reader
Writer
文件操作
File类
RandomAccessFile类
序列化
Serializable接口
ObjectInputStream
ObjectOutputStream
核心类库
核心类库
java.lang
Object
getClass
toString
equals
hashCode
wait
notify
notifyAll
clone
Class
forName
newInstance
Math
abs
max
min
pow
sqrt
random
String
length
charAt
indexOf
substring
toUpperCase
toLowerCase
trim
System
out
println
printf
err
println
exit
currentTimeMillis
arraycopy
java.util
Collections
sort
binarySearch
max
min
reverse
fill
copy
Arrays
asList
sort
binarySearch
equals
fill
copyOf
Date
after
before
compareTo
equals
hashCode
Calendar
getInstance
add
set
get
getTime
setTime
HashMap
put
get
remove
size
isEmpty
ArrayList
add
get
remove
size
isEmpty
java.io
InputStream
read
close
OutputStream
write
flush
close
Reader
read
close
Writer
write
flush
close
File
exists
createNewFile
delete
mkdir
list
renameTo
FileInputStream
FileInputStream(File file
FileInputStream(String name
FileOutputStream
FileOutputStream(File file
FileOutputStream(String name
FileReader
FileReader(File file
FileReader(String fileName
FileWriter
FileWriter(File file
FileWriter(String fileName
java.net
URL
openStream
openConnection
URLConnection
connect
getInputStream
getOutputStream
Socket
connect
getInputStream
getOutputStream
ServerSocket
accept
bind
close
java.text
DateFormat
getInstance
parse
format
SimpleDateFormat
SimpleDateFormat(String pattern
NumberFormat
getInstance
getNumberInstance
getPercentInstance
getCurrencyInstance
ChoiceFormat
ChoiceFormat(String pattern
MessageFormat
MessageFormat(String pattern
java.util.concurrent
Executors
newFixedThreadPool
newSingleThreadExecutor
newCachedThreadPool
newScheduledThreadPool
Callable
call
Future
get
cancel
CountDownLatch
await
countDown
CyclicBarrier
await
Semaphore
acquire
release
ConcurrentHashMap
put
get
remove
CopyOnWriteArrayList
add
get
remove
CopyOnWriteArraySet
add
contains
remove
java.util.logging
Logger
getLogManager
addHandler
setLevel
Handler
publish
flush
close
Level
ALL
FINEST
FINER
FINE
CONFIG
INFO
WARNING
SEVERE
OFF
Formatter
format
ConsoleHandler
ConsoleHandler
FileHandler
FileHandler(String pattern
SimpleFormatter
SimpleFormatter
XMLFormatter
XMLFormatter
多线程编程
线程的创建和运行
实现Runnable接口
实现Runnable接口,将实例传给Thread构造方法后启动
使用Lambda表达式简化Runnable接口实现,代码更简洁
继承Thread类
继承Thread类并重写run方法,调用start启动线程
1. 线程启动后由JVM调度,run方法自动执行且仅一次 2. 不可重复调用start,否则抛出IllegalThreadStateException
线程同步
synchronized关键字
Lock接口
线程通信
wait()、notify()、notifyAll()方法
线程池
Executor框架
ThreadPoolExecutor类
1. 核心参数灵活配置:支持自定义核心线程数、最大线程数及任务队列类型
2. 动态资源管理:通过存活时间控制非核心线程回收,优化空闲资源占用
3. 拒绝策略保障稳定性:提供AbortPolicy等四种策略,防止任务堆积导致系统崩溃
4. 任务执行流程清晰:优先创建核心线程→队列缓冲→扩展线程池,确保高效任务处理
反射
Java之基石底蕴
反射
定义
运行时动态获取类信息
修改类的行为
Class类
获取Class对象
类名.class
对象.getClass()
Class.forName()
Class对象的作用
获取类信息
创建类实例
访问字段、方法、构造器
获取类信息
获取类名
getName()
获取字段信息
getFields()
getDeclaredFields()
获取方法信息
getMethods()
getDeclaredMethods()
获取构造器信息
getConstructors()
getDeclaredConstructors()
创建类实例
使用无参构造器
newInstance()
使用有参构造器
getConstructor()
Constructor.newInstance()
访问字段
获取字段值
get()
设置字段值
set()
调用方法
无参方法调用
invoke()
有参方法调用
invoke()
访问构造器
创建实例
newInstance()
反射的限制
访问权限限制
private字段和方法无法直接访问
性能开销
反射操作比直接代码慢
反射的应用场景
动态代理
框架开发
插件架构
反射的安全性考虑
安全策略
代码签名
类加载器安全
自定义类加载器
反射的优缺点
优点
灵活性高
代码解耦
缺点
性能问题
安全风险
Java新特性(可选)
Java 8新特性
Lambda表达式
Stream API
新时间日期API
Java 9及以后版本特性
模块系统
JShell
其他改进和新增特性