Java虚拟机总结
Java内存区域
-
堆:存放new出来的对象本身
-
虚拟机栈:线程隔离一个方法一个栈帧,存放局部变量表(包含基本数据类型、对象引用)、操作数栈、动态链接、方法出口
-
本地方法栈:同上,不同的地方是虚拟机栈存放java方法,本地方法存放其他语言方法,如C
-
方法区:被虚拟机加载的类型信息、常量、静态变量
运行时常量池:装Class文件
-
PC程序计数器:下一条指令地址
反射(几乎所有java框架的核心)
JAVA反射机制是在运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
图片来源:https://blog.csdn.net/weixin_42724467/article/details/84311385 ,侵删。
反射的使用场景:
- 不知道类的基本信息,可以通过反射获得(如属性、方法、接口等)
- 知道类的基本信息,可以用反射去设置
注解
注解利用了反射机制去实现,例如常用的@Override注解,我们用@Override去标注一个方法,然后就可以通过反射机制读取拥有这个方法的类的父类,然后查看父类有无此方法,无则报错。
Spring框架
基本使用:
我对spring的总结
@Component
public class Student {
@Value("10")
private int age;
@Value("jack")
private String name;
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
//在另一个类中
@Autowired
Student student;
运行结果:
System.out.println("这个student对象是:"+ student.toString());
这个student对象是:Student{age=10, name='jack'}