问题描述
- Help!!关于java构造块问题
-
public class Test{
public int i=print("why");
{
print("构造块");
}private static int print(String str){ System.out.println(str); }
}
为什么每次实例化对象时,调用构造块的同时也会调用构造块前面的那个赋值语句?
解决方案
首先
private static int print(String str){
System.out.println(str);
}
这代码没有返回值,肯定有问题
public int i=print("why");和构造块没有任何联系。对象实例化时,内部成员变量都要初始化,只是这里i的值是静态方法print的返回值而已
解决方案二:
每次实例化都创建了新的对象,当然都要调用一次。每个对象的字段是独立的。
解决方案三:
应该和你的private static int print这个有关
解决方案四:
为什么调用构造块会同时调用public int i=print("why");呢?
解决方案五:
静态属性和静态块在类初始化时只执行一次,其他每次对象初始化时都要执行。
解决方案六:
public int i=print("why");因为这是全局变量啊,实例化的时候当然要调用,
private static int print(String str){
System.out.println(str);
}
这个方法里可以用 i 哦,那 i 是哪来的,当然实例化的时候要一起执行啊。
时间: 2024-07-28 15:45:50