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

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();什么都没有。所以不符合逻辑。