1.java字段初始化的规律
如果在一个类中有初始化块,构造方法以及指定的默认值时,通过new构造对象时会直接执行类的构造函数从而赋值。如果是通过初始化块,构造方法来赋值的话就是要看两个的顺序了,为了规范化还是初始化一次就行了,代码不会有冗余。
2.静态方法中使用非静态数据
如果我们想要用静态方法调用此类中的非静态方法,可以通过创建此类的对象,通过对象可以调用方法,而想要访问实例成员则需要传递值的方法:就是将静态方法的参数类型设为类的实例从而传递实例成员的值
代码:
package tiaoshi; public class second { public static void main(String[] args) { first a1=new first(); first.qq(a1); } } class first { int a=1; public static void qq(first b) { System.out.print(b.a); } }
3.动手动脑的问题
第一个问题是为什么的没用通过编译,这是因为你没有定义类中的构造函数时,是会自动定义一个没有参数的构造函数的,而当你定义了一个由参数的构造函数时原本的类的实例化就会报错。
第二个问题是静态初始化块的问题,它的顺序在于先定义父类然后是子类在执行静态语句然后执行构造函数等。
第三个问题就是诡异的integer,它的范围是-127到127,在这个范围中定义的话都会new初始化空间,而超过范围的则会new不同的储存空间。