获取键盘输入的字符串: String str = sc.next();
标准 JavaBean
新的概念,抽象的知识
标准的JavaBean类具有一下特征
- 类名见名知意
- 成员变量 使用 private 修饰
- 提供至少两个构造方法
- 无参的
- 带全部参数的的
- 对于每一个私有化的成员变量提供成员方法
- setXxx/ getXxx
- 若还有其他行为,也需要写上
标准JavaBean的生成快捷键在IDEA中也具有快捷键
Alt + Insert
或者使用Ptg插件
对象内存图
JVM 内存分配
栈 堆 方法区
虚拟机内存
从JDK8开始,取消方法区,新增元空间
代码运行
类的字节码文件加载进入方法区的内存中临时存储
一个对象的内存图
Student s = new Student();
- 加载.class字节码文件(所有成员变量的临时存储,所有成员方法的临时存储)
- 声明局部变量,对s声明(存储 类对象 的地址值)
- 在堆内存中开辟一个空间
- (成员变量)默认初始化
- 显示初始化
- 构造方法初始化
- 将堆内存中的地址值赋值给左边的局部变量
JavaBean类
public class Student {
String name;
int age;
public void study(){
System.out.println("好好学习");
}
}
测试类
public class TestStudent {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s);
}
}
局部变量打印出来的是地址值
一旦没有变量指向这个空间(对象)了,这个空间也会消失,变成垃圾
两个对象的内存图
两个引用(变量)指向同一个对象
三大内存空间 栈 堆 方法区
(赋值给存地址的变量) null 表示一个不存在的空间 (用于断开连接)
Student stu1 = new Student();
stu1 = null;
System.out.println(stu1.name); 就会产生空指针异常 (NullPointerException)