P98 类和对象的关系
分别是什么
类:
- 图纸
- 一类事物的描述
- 抽象的
对象:
- 实物
- 一类事物的实例
- 具体的
实例化:
- 即创建对象
P99 类的定义
成员变量:
- 直接定义在类当中,在方法外面
- 如果没有赋值,会有一个默认值
·string==>null
·int==>0
成员方法:
- 不要写static关键字
P102 一个对象的内存图
源代码:
自我小结:
- 方法都进栈stack
- 成员变量都在堆heap中
- 成员方法的地址在堆heap中
- 成员方法的内容在方法区(MethodArea)中(由heap中的地址指向MA)
P103 两个对象使用同一个方法的内存图
情况:创建了两个对象都调用一个方法
赋值:两者地址会是同一个值
//Phone是已声明的手机类
Phone one=new Phone();
Phone two=one; //one和two的地址都会是同一个值----->会指向同一个对象空间
- 栈中按main方法中的顺序,依次运行成员方法
- 成员方法也在栈中运行,运行完立即出栈
- 运行到main方法最后一行:整个main方法出栈
P105 使用对象类型作为方法的参数
//
public class Phone2 {
public static void main(String[] args) {
Phone one=new Phone();
one.brand="苹果";
one.price=8388.0;
one.color="土豪金";
method(one);//one是一个地址值
}
public static void method(Phone param){//!!可以用自定义的类作为参数
System.out.println(param.brand);
System.out.println(param.price);
System.out.println(param.color);
}
}
带有static的就是普通方法
public static void method(){}
当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的地址值
P106
main方法没有创建对象,它的对象two是从getPhone中返回值得到的
public class Demo04PhoneParam{
public static void main(String[]args){
Phone two=getPhone();//调用getPhone函数,要接收的是Phone类型故也声明Phone类型的对象
System.out.println(two.brand);
System.out.println(two.price);
System.out.println(two.color);
}
public static Phone getPhone(){//注意此刻的返回类型位Phone类类型
Phone one=new Phone();//再函数内创建对象one,后又返回该对象
one.brand="苹果";
one.price=8388.0;
one.color="玫瑰金";
return one;//返回的是Phone类的对象one
返回值其实是对象的地址值
顺序:方法区放入—》方法进栈—》new后的东西进堆