java 基础
Java 基础
1. 继承和多态
类的划分:
- 普通类:使用 class 定义且不含有抽象方法
- 抽象类:使用 abstract class 定义,它可以含有具体方法和抽象方法
- 接口:使用 interface 定义,只有抽象方法
继承规则:
- 类与类之间可以互相继承,使用 extends 关键字
- 类可以继承接口,使用 implements 关键字
- 接口只能继承接口,使用 extends 关键字
- 一个类只能继承一个类,但可以继承多个接口
- 继承关系具有传递性
- private 变量和方法不会被继承
多态:
- 实现多态的必要条件
- 继承
- 重写方法
- 向上转型:父类引用指向子类对象
- 重写的返回类型必须是父类返回值的派生类
2. 值传递和引用传递
- 在 java 中,默认只有值传递
- 只有明确使用地址并修改对应地址的值之后才是引用传递
结果分析:
- 对于数组而言,当我们创建一个数组之后,jvm为数组分配了三个连续的内存空间,这个 arr 就指向这片内存空间。方法 func 得到的是数组的引用/地址的一个拷贝
- 情况1:修改了第一个空间块中的内容,故输出的是修改后的内容
- 情况2:只是将arr的引用指向了另一片内存空间,原本的那片内存空间并未发生变化。
【下面代码对比JAVA和C++】
public void func1(int[] arr){
arr[0] = 1
}
public void func2(int[] arr){
int[] arr2 = {1, 2, 3}
arr = arr2
}
int[] arr1 = {3, 4, 5};
func1(arr1); // {1, 4, 5} 传的引用/地址的副本,因此能改变
// c++ 值传递 {3, 4, 5} c++ 引用传递 {1, 4, 5}
print(arr1[0]);
int[] arr2 = {3, 4, 5};
func2(arr2); // {3, 4, 5} 传进去的引用/地址的副本,只修改了副本的地址指向
//
print(arr2[0]);
3. 异常
- Throwable
- Error:错误无法恢复和预防,建议终止
- IOError
- VirtualMachineError
- StackOverflowError
- OutOfMemoryError
- Exception:发生异常但通常可以恢复
- RuntimeException
- IllegalArgumentException
- NullPointerException
- SQLException
- IOException
- RuntimeException
- Error:错误无法恢复和预防,建议终止
public static void main(String[] args) {
try {
int a = 5 / 0;
} catch (ArithmeticException e) {
e.printStackTrace();
}
System.out.println("Hello World!");
}
4. 其他
- 集合
- List
- Set
- Queue
- Map
- 正则表达式
- 注解
- 序列化和反序列化
- 用于对象与字节流的转换
- 用于跨进程数据交换

浙公网安备 33010602011771号