对象在内存中的存在形式
name ->String类型 堆中存地址 方法区存在一个常量池,将数据存在常量池中,常量池地址与堆中地址
age是常量,直接存在堆中
在执行
Cat cat1 = new Cat();
在常量池中还会加载Cat类信息
真正的对象是 new Cat(); 在堆中分配的空间,包括相关的数据; 而cat只是引用(指向对象),所以叫做对象引用/对象名
成员变量=属性=field(字段)
属性可以是基本数据类型,也可以是引用类型(对象,数组)
注意事项及细节说明
1、属性定义语法如同变量,例如:访问修饰符 属性类型 属性名;
访问修饰符:控制属性的访问范围 有四种:public,protected,默认(public),private
2、属性类型可以为任意类型,包含基本类型和引用类型
3、属性不赋值,有默认值,规则和数组一致(int 0, short 0, byte 0, long 0, float 0.0, double 0.0, char \u0000, boolean false, String null)
public class PropertiesDetail {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Person p1 = new Person();
System.out.println("名字" + p1.name + "年龄" + p1.age + "成绩" + p1.sal + "是否通过" + p1.isPass);
}
}
class Person{
String name;
int age;
double sal;
boolean isPass;
}
对象分配机制
public class Object02 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Person1 p1 = new Person1();
p1.age=10;
p1.name = "小明";
Person1 p2 = p1;
System.out.println(p2.age);
}
}
class Person1{
String name;
int age;
}