Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。

时间:2023-12-19 10:38:02

1.Car c = new Car();

Car c2 = new Car();

1> c 和 c2之间的区别?

	public static void main(String[] args) {
// TODO Auto-generated method stub
Car c = new Car();
Car c2 = new Car();
System.out.println(c == c2);
}
}
class Car{
int number = 4;
String color = "red";
}

  输出结果:false

表明,c和c2两个是不同的存储空间。因为在堆中的位置不一样。

2> 匿名内部类,new Car();

使用规则:1.如果是匿名内部类使用一次,那么用匿名内部类比较合适。

2.如果是多次要使用匿名内部类,就要给匿名内部类命名,不然在内存中就是垃圾了。

3>java把程序执行的流程信息都放在了栈中,可以画出堆栈执行流程图。

Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。

总结:堆中放实例化的对象,栈中放执行流程的方法信息。如果函数中包含函数,比如函数A中调用函数B,函数B中调用函数C,那么,c 函数是属于栈顶,b函数是属于栈顶下面的那个,A函数是属于栈底的那个元素。

意思就是说明,C函数最新执行完成,然后就是B函数,再然后就是A函数。

2.封装:

3.this关键字,

1>表示本类对象的引用,用户传入参数同名的情况。

2>this();表示可以调用本类的构造函数,也可以传值(“hhhh”);

3>什么this();要放在第一行?如何不放在第一行,会有什么情况发生?

this.name = name;

this();

那么这段代码肯定会报错,因为,this()只能在构造函数中互相调用,所以,在调用this()之前已经初始化了 this代表的对象。

本来,this.name 已经初始化了,this类的name属性,而打印的时候,this();什么都没有。所以不符合逻辑。