这是我的代码:
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
中,我没有初始化一个名为&#34; sum&#34;的变量。但我仍然得到输出。有人可以向我解释一下吗?
asgfafgalsdfkjsaflkasflaskfalskfajlskfaskfaslkjflaskfaslkflasjkf。
答案 0 :(得分:2)
实例成员会自动初始化为默认值JLS-4.12.5 Initial Values of Variables
每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化(§15.9,§15.10):
...
For type `int`, the default value is zero, that is, 0.
答案 1 :(得分:0)
类和实例数据成员会自动默认为其类型的所有位数关闭值(0
的情况下为int
),即使您没有明确地这样做。由于sum
是实例数据成员,因此它隐式默认为0
。
这由§4.12.5 of the Java Language Specification
涵盖每个类变量,实例变量或数组组件在创建时都使用默认值进行初始化(§15.9,§15.10.2):
- 对于类型
byte
,默认值为零,即(byte)0
的值。- 对于类型
short
,默认值为零,即(short)0
的值。- 对于类型
int
,默认值为零,即0
。- 对于类型
long
,默认值为零,即0L
。- 对于类型
float
,默认值为正零,即0.0f
。- 对于类型
double
,默认值为正零,即0.0d
。- 对于类型
char
,默认值为空字符,即'\u0000'
。- 对于类型
boolean
,默认值为false
。- 对于所有参考类型(§4.3),默认值为
null
。
答案 2 :(得分:0)
在Java中,即使您自己不做,也会在创建对象时自动将所有成员变量初始化为其默认值。 int
的默认值为0
。