java课后反思
在定义变量时,我们需要对变量进行初始化才可以继续进行使用,同时,对象变量如果不引用一个真实的值,则必须·对他声明为null;
对于原始数据类型变量,可以使用==来进行相等,但当变量为对象变量时,则无法通过==来进行相等
public class Test {
public static void main(String[] args) {
Foo obj1=newFoo();
Foo obj2=newFoo();
System.out.println(obj1==obj2);
}
}
class Foo{
int value=100;}
当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
这个方法是类的构造方法,具有参数值;
此代码无法运行是由于Foo obj1=new Foo()错误;
如果类提供了一个自定义的·构造方法,就会导致系统不再提供默认构造方法,上文代码需要添加默认的参数才可运行。
如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?
是由“public int field = 100;”说了算。就是谁比较靠后就是谁初始化起作用。执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
构造函数,类的初始化块不接收任何的参数,只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
静态初始化块只执行一次,创建子类型对象时,父类静态初始化块也执行。