JavaSE 总复习:夯实基础,迈向进阶之路
我的个人主页
一、数据类型与变量
二、控制语句
三、数组
四、面向对象编程(OOP)
五、异常处理
六、常用类库
七、输入输出流
八、总结
在 Java 编程的学习旅程中,JavaSE(Java 标准版)是基石般的存在。它涵盖了丰富的基础知识和核心概念,对深入学习 Java 后端开发、安卓开发等领域起着至关重要的作用。以下将对 JavaSE 的重点知识进行全面复习总结。
(一)基本数据类型
Java 有 8 种基本数据类型,分别是:
整型:byte(1 字节,-128 到 127)、short(2 字节)、int(4 字节)、long(8 字节,需在数值后加L或l)。例如:int num = 10;
浮点型:float(4 字节,需在数值后加F或f)、double(8 字节)。如:double pi = 3.14;
字符型:char(2 字节,用单引号括起来的单个字符)。像char ch = ‘A’;
布尔型:boolean(只有true和false两个值)。
(二)引用数据类型
包括类、接口、数组等。例如创建一个字符串对象:String str = “Hello”;
(三)变量声明与初始化
变量在使用前必须先声明,声明格式为数据类型 变量名。可以在声明时进行初始化,也可以先声明后赋值。例如:
int a;
a = 5;
int b = 10;
(一)条件语句
if - else:根据条件判断执行不同的代码块。
if (condition) {
// 条件满足时执行的代码
} else {
// 条件不满足时执行的代码
}
switch - case:用于多分支选择,适用于对某个表达式的多个固定值进行判断。
switch (expression) {
case value1:
// 表达式等于 value1 时执行的代码
break;
case value2:
// 表达式等于 value2 时执行的代码
break;
default:
// 表达式不等于任何 case 值时执行的代码
}
(二)循环语句
for 循环:常用于已知循环次数的情况。
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}
例如打印 1 到 10 的数字:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
while 循环:先判断条件,条件满足时执行循环体。
while (condition) {
// 循环体
}
do - while 循环:先执行一次循环体,再判断条件。
do {
// 循环体
} while (condition);
(三)跳转语句
break:用于跳出当前循环或switch语句。
continue:跳过本次循环剩余部分,直接进入下一次循环。
(一)数组的声明与创建
声明一维数组:数据类型[] 数组名; 或 数据类型 数组名[];
创建数组:数组名 = new 数据类型[数组长度]; 例如:int[] arr = new int[5]; 也可以在声明时直接初始化:int[] arr = {1, 2, 3, 4, 5};
(二)二维数组
声明与创建二维数组:数据类型[][] 数组名 = new 数据类型[行数][列数]; 例如:int[][] matrix = new int[3][3]; 同样可以在声明时初始化:int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
(三)数组的遍历
可以使用for循环遍历数组元素。对于一维数组:
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
对于二维数组:
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.println(matrix[i][j]);
}
}
(一)类与对象
类:是对象的模板,定义了对象的属性(成员变量)和行为(成员方法)。例如:
class Person {
// 成员变量
String name;
int age;
// 成员方法
void speak() {
System.out.println("My name is " + name + ", I'm " + age + " years old.");
}
}
对象:是类的实例。通过new关键字创建对象:Person p = new Person(); 然后可以访问对象的成员变量和调用成员方法:p.name = “John”; p.age = 25; p.speak();
(二)封装
将类的成员变量设为private,通过public的getter和setter方法来访问和修改成员变量,实现数据的隐藏和封装。例如:
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
}
(三)继承
一个类可以继承另一个类,子类继承父类的非private属性和方法。使用extends关键字。例如:
class Student extends Person {
String school;
void study() {
System.out.println("I'm studying in " + school);
}
}
子类可以重写父类的方法,通过@Override注解来标识。
(四)多态
多态体现为父类引用指向子类对象,在运行时根据对象的实际类型来调用相应的方法。例如:
Person p = new Student();
p.speak();
这里p虽然是Person类型,但实际指向Student对象,调用speak方法时会根据Student类中的重写情况来执行。
(一)异常类型
Java 中的异常分为Checked Exception(受检异常,如IOException)和Unchecked Exception(非受检异常,如RuntimeException)。
(二)异常处理机制
使用try - catch - finally语句块来处理异常。try块中放置可能抛出异常的代码,catch块捕获并处理异常,finally块中的代码无论是否发生异常都会执行。例如:
try {
// 可能抛出异常的代码
int result = 10 / 0;
} catch (ArithmeticException e) {
// 处理算术异常
System.out.println("除数不能为 0");
} finally {
// 清理资源等操作
System.out.println("Finally block");
}
还可以使用throws关键字在方法声明中抛出异常,让调用者处理。
(一)字符串类String
String类提供了许多操作字符串的方法,如length()获取字符串长度,charAt()获取指定位置字符,substring()截取子字符串,equals()比较字符串内容等。例如:
String str = "Hello, World!";
System.out.println(str.length());
System.out.println(str.charAt(0));
System.out.println(str.substring(7));
(二)包装类
对应基本数据类型的包装类,如Integer、Double等。可以将基本数据类型转换为包装类对象(装箱),反之亦然(拆箱)。例如:
int num = 10;
Integer integer = Integer.valueOf(num); // 装箱
int num2 = integer.intValue(); // 拆箱
(三)集合框架
List:有序可重复的集合,如ArrayList和LinkedList。ArrayList基于数组实现,随机访问快;LinkedList基于链表实现,插入和删除操作快。
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list.get(0));
Set:无序不重复的集合,如HashSet和TreeSet。HashSet基于哈希表实现,TreeSet基于红黑树实现,可以对元素排序。
HashSet<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(1); // 重复元素不会被添加
Map:键值对集合,如HashMap和TreeMap。HashMap基于哈希表实现,TreeMap基于红黑树实现,可以根据键排序。
HashMap<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
System.out.println(map.get("Apple"));
(一)字节流
InputStream和OutputStream是字节流的抽象基类。FileInputStream用于读取文件字节数据,FileOutputStream用于写入文件字节数据。例如:
try {
FileInputStream fis = new FileInputStream("input.txt");
int data;
while ((data = fis.read())!= -1) {
System.out.print((char) data);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
(二)字符流
Reader和Writer是字符流的抽象基类。FileReader和FileWriter用于读取和写入字符数据,更适合处理文本文件。例如:
try {
FileReader fr = new FileReader("input.txt");
char[] buffer = new char[1024];
int len;
while ((len = fr.read(buffer))!= -1) {
System.out.print(new String(buffer, 0, len));
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
八、总结
JavaSE 知识体系庞大而丰富,通过对数据类型、控制语句、数组、面向对象编程、异常处理、常用类库以及输入输出流等方面的复习,我们能更牢固地掌握 Java 编程的基础。这些知识是进一步学习 Java 高级特性和应用开发的必备前提。在实际编程中,不断实践和深入理解这些概念,才能更好地运用 Java 语言解决各种复杂的问题,为后续的学习和项目开发奠定坚实的基础。希望本次复习总结能帮助大家查漏补缺,提升对 JavaSE 的掌握程度,在 Java 编程之路上越走越远。