目录
一、面向对象的三大特征
二、接口和抽象类
三、深拷贝、浅拷贝和引用拷贝
四、String、StringBuilder、StringBuffer
五、字符串常量池
六、Java中的异常
七、泛型
八、值传递&引用传递
九、序列化和反序列化
十、反射机制
十一、注解
十二、JavaBean
十三、this关键字
十四、a=a+b与a+=b区别?
十五、什么是Java语法糖?
1、switch 语句支持 String 类型
2、泛型
3、自动拆箱与装箱
4、可变长参数
5、枚举
6、增强的for-each循环
7.lambda表达式
十六、List、Set、Queue、Map
十七、ArrayList 和 Array区别
十八、断言
十九、内部类
二十、匿名内部类
封装,继承,多态,详见
Java基础知识速成笔记“超实用”学完就去实战!(一)-CSDN博客
详见 Java基础知识速成笔记“超实用”学完就去实战!(一)-CSDN博客
浅拷贝(Shallow Copy):
深拷贝(Deep Copy):
引用拷贝(Reference Copy):
总的来说,深拷贝会完全复制对象及其嵌套的所有对象,而浅拷贝只复制对象的字段而不复制字段引用的对象。引用拷贝则简单地创建了指向同一对象的新引用。
String长度不可变,相当于常量,StringBuilder线程不安全,StringBuffer线程安全。
在Java中,String的长度是不可变的。一旦一个String对象被创建,它的长度就固定了,不能再改变。这意味着你不能直接修改一个String对象的长度。当你对一个String进行操作时(例如连接、剪切等),实际上是创建了一个新的String对象,而原始的String对象保持不变。
如果你需要处理可变长度的字符串,可以使用Java中的其他数据结构,比如StringBuilder或StringBuffer。这些类允许你在字符串上进行修改操作,而不必创建新的对象
总结:
String
StringBuilder
StringBuffer
详见Java中的常见类“StringBuilder、StringBuffer类”(四)用法详解-CSDN博客
在Java中,字符串常量池是一个特殊的内存区域,用于存储字符串字面量。当你创建一个字符串字面量时,Java会首先检查字符串常量池。如果已经存在相同内容的字符串,则返回该字符串的引用,而不会创建新的字符串对象。这种机制被称为字符串的“interning”(内部化)。
// 在堆中创建字符串对象”ab“
// 将字符串对象”ab“的引用保存在字符串常量池中
String aa = "ab";
// 直接返回字符串常量池中字符串对象”ab“的引用
String bb = "ab";
System.out.println(aa==bb);// true
异常是一种对象,它包含有关错误状态的信息,并在异常发生时通过异常处理机制传播到调用栈上层。Java中的异常类都继承自 Throwable
类,它有两个主要的子类:Exception
和 Error
·Exception
类及其子类通常用于表示可以通过合适的处理措施来恢复程序正常执行的异常情况
·Error
类及其子类通常用于表示无法通过程序处理的严重异常情况,这些情况通常属于系统级别的问题,例如内存不足或虚拟机崩溃。与 Exception
不同,Error
类通常不被程序捕获和处理,而是由Java虚拟机或操作系统处理
Throwable
类常用方法
getMessage()
: 返回异常的详细描述信息字符串。通常,这个描述包含异常的原因或上下文信息。try {
// 可能抛出异常的代码
} catch (Exception e) {
System.out.println(e.getMessage());
}
printStackTrace()
: 打印异常跟踪栈信息到标准错误流。这个方法会将异常发生的地点以及方法调用的堆栈信息打印出来,以帮助调试程序。try {
// 可能抛出异常的代码
} catch (Exception e) {
e.printStackTrace();
}
getCause()
: 返回导致异常的原因(如果有的话)。通常在异常链中使用,如果异常是由另一个异常引起的,那么可以使用该方法获取引起异常的原因。try {
// 可能抛出异常的代码
} catch (Exception e) {
Throwable cause = e.getCause();
// 处理异常的原因
}
toString()
: 返回包含异常类名和异常消息的字符串。通常,这个方法返回的是异常类的全限定名以及异常的详细描述信息。try {
// 可能抛出异常的代码
} catch (Exception e) {
System.out.println(e.toString());
}
详见Java基础知识速成笔记“超实用”学完就去实战!(一)-CSDN博客
泛型是一种编程机制,允许在类或方法中使用参数化类型(Parameterized Type)
详见Java基础知识速成笔记“超实用”学完就去实战!(一)-CSDN博客
Java中只有值传递!!! C++中有引用传递。
1.传递基本数据类型参数
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
a = 20
b = 10
num1 = 10
num2 = 20
2.传递引用类型参数
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] array) {
// 将数组的第一个元素变为0
array[0] = 0;
}
1
0