类的定义:定义了一组大体上相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性。
对象则是类的具体化,是类的实例。
类通过派生可以有子类,同样也可以有父类,形成层次结构。
引用类型 vs 原始数据类型
“引用”一个对象的变量称为“引用类型”的变量,有时又简称为“对象变量”。
诸如int,float之类的变量称为“原始数据类型”的变量)。
当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null。
定义一个原始类型的变量时,会马上给其分配内存
例子:MyClass obj;int value=100;
Obj=NULL value=100.
当对象不再使用时,JVM会回收MyClass对象所占用的内存,这个过程称为“垃圾回收(GC:Garbage Collection)”.
独特的对象引用:this
对象中的所有数据字段都是通过this指针间接引用的。
同一类中的方法可以相互调用,或者直接存取本类定义的字段,可看成其中隐含了一个this调用。
可以使用final定义一个“常量”对象变量
final MyClass obj = new MyClass();
注意:“常量”对象变量不能指向另一个对象,但可以修改对象,比如设置它所引用对象的某公有字段值。
当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
两个对象的“内容”,其实是指它们在某一时刻的所有字段的值,“内容相等”,其实是就“对应字段值”一致。
在Java中要比对两个对象的字段值,可以 “重写(override)”基类的equals()方法
Demo: ObjectEquals.java
当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。
如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”. 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
同一个类可以有多个构造函数,多个构造函数之间通过参数来区分。这是方法重载的一个实例。
构造函数之间可以相互调用。
可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。
类的这种“没有名字”的“成员”,多用于初始化类的字段。
可以使用“静态初始化块”初始化类的静态字段
public class Test {
public static int value;
static {
value=100;
}
}
可以用对象名或类名作为前缀访问静态数据
Employee newhire=new Employee();
newhire.total_employees=1;
Employee.total_employees=1;
推荐使用类名来直接访问静态字段。
类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
静态初始化块只执行一次。
创建子类型的对象时,也会导致父类型的静态初始化块的执行。
标签:初始化,变量,构造方法,对象,引用,课后,类型 From: https://www.cnblogs.com/kun1790051360/p/16757813.html