9月30Java类与对象中动手动脑
定义了一组大体相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性
对象则是类的具体化,是类的实例。
类通过派生类可以有子类,同样也可以有父类,形成层次结构。
引用类型vs原始数据类型
“引用”一个对象的变量称为“引用类型”的变量,有时又简称为“对象变量”。
诸如int ,float之类的变量还曾为“原始数据类型”的变量
变量与内存分配
当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null.
定义一个原始类型的变量时,会马上给其分配内存。
变量初始化
引用对象后的对象变量
当对象不再使用时,JVM会回收MyClass对象所占用的内存,这个过程称为“垃圾回收”。
理解赋值“=”的含义
独特的对象引用:this
对象中所有数据字段都是通过this指针间接引用的。
同一类中的方法可以相互调用,或者直接存取本类定义的字段,可看成其中隐含了一个this调用。
作为常量的对象变量
可以使用final定义一个“常量”对象变量
注意:“常量”对象不能指向另一个对象,但可以修改对象,比如设置它所引用对象的某公有字段值
==
当==施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当==施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以==实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
类的构造方法
类的构造方法有时习惯上也被称为构造函数
当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。
如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的默认构造方法
如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法
多构造函数
同一个类可以有多个构造函数,多个构造函数之间通过参数来区分
构造函数之间可以相互调用。这是方法重载的一个实例
类的初始化
可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员
类的这种“没有名字"的”成员“,多用于初始化类的字段。
运行结果为
由此可知道
执行类成员定义时指定的默认值或类的初始化块,先执行类成员定义时指定的默认值。
运行结果为
由此可知
静态初始化只执行一次
创建子类型的对象时,也会导致父类型的静态初始化块的执行