java我没有初始化变量,但仍然收到一个输出
这是我的密码:
class Xyz{
public static void main(String args[])
{
first fobj = new first(10);
for(int i=0;i<5;i++){
fobj.add();
System.out.printf("%s",fobj);
}
}
}
class first{
public int sum=0;
public final int num;
first(int x){
num=x;
}
public void add(){
sum+=num;
}
public String toString()
{
return String.format("sum = %d" ,sum);
}
}
output:
sum=10
sum=20
sum=30
sum=40
sum=50
在类first
中,我没有初始化名为“sum”的变量,但仍然得到了输出。有人能给我解释一下吗?
asgfafgalsdfkjsaflkasflaskfalskfajlskfaskfaskfaslkjflaskfaslkflasjkf
# 1 楼答案
类和实例数据成员会自动默认为其类型的所有位关闭值(
0
在int
的情况下),即使您没有显式地这样做。由于sum
是一个实例数据成员,因此隐式默认为0
以下是§4.12.5 of the Java Language Specification的内容:
# 2 楼答案
实例成员自动初始化为默认值JLS-4.12.5 Initial Values of Variables
# 3 楼答案
在Java中,所有成员变量都会在创建对象时自动初始化为默认值,即使您自己不这么做。
int
的默认值为0