1、“==”和equals
2、“对象引用”和“对象”
3、Java多继承
4、面型对象
面相对象编程、面相过程编程都是一种编程范式。
5、抽象类和接口
6、Java中有哪些类
普通类可以继承抽象类,实现抽象类的抽象方法,也可以实现接口,实现接口中生命的方法,两者有什么区别呢?什么时候该用抽象类,什么时候该用接口呢?
7、方法重载
8、方法重载和方法重写:
9、静态绑定&动态绑定:
10、静态&动态:
学习编程的过程中经常会遇见这两个字,但是我还没搞懂。
11、final & finally & finalize
12、String底层实现:
13、String & StringBuffer & StringBuilder
14、intern()方法
15、包装类
除了包装类,还有原子类呢。
16、擦除机制
17、值传递&引用传递
什么是值传递,什么是引用传递。为什么说Java中只有值传递。_为什么引用传递-CSDN博客
18、Exception & Error
// 受查异常,运行时异常,乱七八招的,不仅牵扯到异常的分类,还跟编译,虚拟机有关系
// 异常和错误两个事情
19、什么是反射,为什么需要反射
// 只是会用,理解起来还挺麻烦的(有空再看吧,先找个八股文背一背)
// 还是找视频好好看看Java反射机制吧
package com.example.demo.JavaBasics;
import java.lang.annotation.Annotation;
import java.lang.reflect.*;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// 获取类对象
Class<?> clazz = MyClass.class;
// 获取构造函数并创建对象
Constructor<?> constructor = clazz.getConstructor();
Object obj = constructor.newInstance();
// 获取方法并调用
Method method = clazz.getMethod("sayHello", String.class);
method.invoke(obj, "Alice");
// 获取字段并访问
Field field = clazz.getField("publicField");
System.out.println("Public Field Value: " + field.get(obj));
Field privateField = clazz.getDeclaredField("privateField");
privateField.setAccessible(true);
System.out.println("Private Field Value: " + privateField.get(obj));
// 获取注解
Annotation annotation = clazz.getAnnotation(MyAnnotation.class);
System.out.println("Annotation Value: " + ((MyAnnotation) annotation).value());
// 动态代理
InvocationHandler handler = new MyInvocationHandler();
Class<?>[] interfaces = { MyInterface.class };
Object proxy = Proxy.newProxyInstance(clazz.getClassLoader(), interfaces, handler);
((MyInterface) proxy).doSomething();
}
}
class MyClass {
public String publicField = "Public Field";
private String privateField = "Private Field";
@MyAnnotation("Hello Annotation")
public void sayHello(String name) {
System.out.println("Hello, " + name + "!");
}
}
interface MyInterface {
void doSomething();
}
class MyInvocationHandler implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Dynamic Proxy: Before method invocation");
Object result = method.invoke(proxy, args);
System.out.println("Dynamic Proxy: After method invocation");
return result;
}
}
@interface MyAnnotation {
String value();
}
20、为什么反射的执行比较慢
// 如果能投理解透彻,为什么可以根据类名就可以获取这个类,那么就离理解反射为什么这么慢不远了。
21、动态代理 & 静态代理
// 太高深了,结合具体的应用场景