一、Java语言特性
Java作为一门经典的面向对象编程语言,具有以下核心特性:
跨平台性:通过JVM(Java虚拟机)实现"一次编写,到处运行"。开发者编写的.java文件会被编译为字节码文件(.class),由不同平台的JVM解释执行。
面向对象:支持封装(隐藏内部实现)、继承(代码复用)、多态(同一方法的不同实现)三大特性。
自动内存管理:垃圾回收(GC)机制自动回收不再使用的对象内存,避免内存泄漏。
多线程支持:内置Thread类和并发工具包,简化并发程序开发。
二、基础语法
1. 数据类型
Java数据类型分为基本类型和引用类型:
基本类型:直接存储值,包括int(整型)、double(双精度浮点)、char(字符)、boolean(布尔)等8种
引用类型:存储对象内存地址,如String、数组、自定义类等
// 基本类型示例
int age = 25; // 4字节整型
double salary = 15000.5; // 8字节浮点
char grade = 'A'; // 单个字符
boolean isPass = true; // 布尔值
// 引用类型示例
String name = "程序员"; // 字符串对象
int[] scores = {90, 85, 95}; // 整型数组
2. 变量与常量
变量:用于存储可变数据,需先声明后使用
常量:使用final修饰,值一旦设定不可更改
int count; // 声明变量
count = 10; // 初始化赋值
count = 20; // 修改值
final double TAX_RATE = 0.15; // 常量命名建议全大写
// TAX_RATE = 0.2; // 错误!常量不可修改
3. 运算符
Java支持多种运算符:
算术运算符:+, -, *, /, %
比较运算符:>, <, ==, !=
逻辑运算符:&&(与), ||(或), !(非)
int x = 10, y = 3;
System.out.println(x / y); // 3(整数相除取整)
System.out.println(x % y); // 1(取余运算)
System.out.println(x > y && x < 15); // true(逻辑与)
三、流程控制
1. 条件语句
通过判断条件执行不同代码块:
if-else:处理多条件分支
switch:匹配固定值(JDK14+支持表达式)
// if-else示例
int temperature = 28;
if (temperature > 30) {
System.out.println("开启空调");
} else if (temperature > 20) {
System.out.println("适宜温度"); // 执行此分支
} else {
System.out.println("注意保暖");
}
// switch示例(JDK12+)
int day = 3;
String dayType = switch (day) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "周末";
default -> "无效日期";
};
2. 循环结构
用于重复执行代码:
for循环:明确循环次数时使用
while/do-while:不确定循环次数时使用
// 打印1-10的平方
for (int i=1; i<=10; i++) {
System.out.println(i + "的平方:" + (i*i));
}
// 增强for循环遍历数组
String[] languages = {"Java", "Python", "C++"};
for (String lang : languages) {
System.out.println("编程语言:" + lang);
}
// while循环示例
int num = 5;
while (num > 0) {
System.out.println(num--); // 5 4 3 2 1
}
四、面向对象编程
1. 类与对象
类:对象的模板,包含属性(成员变量)和方法
对象:类的实例,通过new关键字创建
// 定义手机类
public class Phone {
// 属性
String brand;
double price;
// 方法
public void call(String number) {
System.out.println("正在拨打:" + number);
}
}
// 创建对象
Phone myPhone = new Phone();
myPhone.brand = "Huawei";
myPhone.price = 5999.0;
myPhone.call("10086"); // 输出:正在拨打:10086
2. 继承与多态
继承:子类继承父类属性和方法,实现代码复用(单继承)
多态:父类引用指向子类对象,调用重写方法时表现子类行为
class Animal {
public void eat() {
System.out.println("动物进食");
}
}
class Cat extends Animal { // 继承
@Override
public void eat() { // 方法重写
System.out.println("猫吃鱼");
}
}
// 测试多态
Animal animal = new Cat();
animal.eat(); // 输出"猫吃鱼"
3. 接口与抽象类
接口:定义行为规范(默认方法为public abstract),支持多实现
抽象类:包含抽象方法(无具体实现)和具体方法,用于部分实现
// 接口定义
interface Flyable {
void fly(); // 抽象方法
}
// 实现接口
class Bird implements Flyable {
public void fly() {
System.out.println("鸟儿展翅飞翔");
}
}
// 抽象类示例
abstract class Shape {
// 抽象方法(子类必须实现)
abstract double calculateArea();
// 具体方法
void printInfo() {
System.out.println("这是一个形状");
}
}
五、集合框架
Java集合框架用于存储和操作对象组,主要接口:
List:有序可重复(如ArrayList、LinkedList)
Set:无序不可重复(如HashSet、TreeSet)
Map:键值对存储(如HashMap、TreeMap)
// List示例
List
cities.add("北京");
cities.add("上海");
cities.get(0); // 返回"北京"
// Map示例
Map
population.put("北京", 2154_0000);
population.put("上海", 2487_0000);
System.out.println(population.get("上海")); // 输出24870000
六、异常处理
Java使用try-catch-finally处理运行时错误:
try:包裹可能抛出异常的代码
catch:捕获并处理特定异常
finally:无论是否发生异常都会执行(常用于释放资源)
try {
FileInputStream fis = new FileInputStream("config.txt");
// 读取文件操作...
} catch (FileNotFoundException e) {
System.out.println("文件未找到:" + e.getMessage());
} finally {
System.out.println("资源清理完成");
}
七、IO操作
Java IO分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),推荐使用try-with-resources自动关闭资源:
// 自动关闭的读取示例
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
八、多线程
1. 线程创建
两种实现方式:
继承Thread类
实现Runnable接口(推荐,避免单继承限制)
// 方式1:继承Thread
class MyThread extends Thread {
public void run() {
System.out.println("线程ID:" + Thread.currentThread().getId());
}
}
// 方式2:实现Runnable
Runnable task = () -> {
System.out.println("通过Lambda创建线程");
};
new Thread(task).start();
2. 线程同步
使用synchronized保证线程安全:
class Counter {
private int count = 0;
public synchronized void add() {
count++;
}
}
九、常用API
1. String类
字符串不可变,常用方法:
length():获取长度
substring():截取子串
equals():内容比较
String s1 = "Hello";
String s2 = new String("Hello");
System.out.println(s1.equals(s2)); // true(比较内容)
System.out.println(s1 == s2); // false(比较对象地址)
2. 日期处理(Java8+)
LocalDate、LocalTime等类解决传统Date类的缺陷:
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间:" + now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
学习建议:
每个知识点务必配合代码实践
理解面向对象设计思想
掌握集合框架的选用场景(如快速查询用HashMap,排序用TreeMap)
重视异常处理和资源释放
多线程编程注意线程安全
希望这篇系统总结能帮助您夯实Java基础!
欢迎评论区留言!