int value=100;
MyClass obj = new MyClass();
这两种方式定义的变量不一样
当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null。
定义一个原始类型的变量时,会马上给其分配内存
对象变量不能使用使用“”判断两变量值是否相等
当“”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以“”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。
当你定义一个类时,如果不显式指明它的“父亲”类是哪个,则默认是Object。
当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。
如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”。
动手动脑1
如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
动手动脑2
静态初始模块的执行顺序是父类(Root)的静态初始化块。子类(Mid)的静态初始化块。子类的子类(Leaf)的静态初始化块。
静态初始化块:在类加载时执行,且只执行一次。顺序是从父类到子类。
普通初始化块:在每次实例化时执行,顺序也是在父类到子类,且在构造器的主体之前执行。
构造器调用:子类构造器会隐式或显式调用父类构造器(通过super()),确保父类先初始化。
在静态方法内部创建对象可以让静态方法访问类的实例成员
Java 对 Integer 缓存了 -128 到 127 的值,超出范围的 Integer 会创建新对象。
== 比较的是对象地址,而不是值。