当我使用a = x,b = y时,结果为15.但是当我使用x = a,y = b时,结果为0.你能解释一下原因吗?
public class Test {
int a , b;
Test(int x, int y) {
a=x;
b=y;
}
int sr() {
return a*b;
}
public static void main (String args[]){
Test t=new Test(5,3);
System.out.println(t.sr());
}
}
答案 0 :(得分:4)
a=x;
b=y;
将设置实例属性a
& b
值包含传递的值x
和y
。因此,当您使用:
Test t=new Test(5,3);
a和b的值为5&分别为3。因此调用方法t.sr
将返回
a*b = 5*3 = 15;
另一方面,如果你使用:
x = a;
y = b;
局部变量x和y将设置为默认值a和b,即0.还有a和b将defualt值保持为0,因为没有设置其他值。所以,当你做
Test t=new Test(5,3);
作为& b的值为0,因此调用方法t.sr
将返回
a*b = 0*0 = 0;
答案 1 :(得分:3)
int字段的默认值为0.因此,如果不为它们指定值,则它们为0。 请参阅:http://www.javapractices.com/topic/TopicAction.do?Id=14
答案 2 :(得分:1)
在构造函数中,您传递 x和y 的值,并将其存储在 a和b 中。现在,当您调用方法时,a 已获得值,因此返回a*b
的值。
a和b也是类变量,所以它有默认值,即a = 0,b = 0;
现在在第二种情况下 x = a,y = b 。你在x和y 中存储 a和b的值。由于你没有在a和b中存储任何值,你再次调用sr方法,所以它只返回a和b的值即0*0
所以你得到0作为输出
答案 3 :(得分:1)
使用时 x = a,y = b
您没有为sr()中使用的a和b赋值。
由于存在实例变量,因此将为其分配默认值0,因此结果为0
答案 4 :(得分:1)
使用时 x = a,y = b x和y是局部变量。一旦该块(构造函数)被执行,它们就会被丢弃。 但 a,b是实例变量。它们一直存在,直到你从类中获得实例。 int实例的默认值为0; 因为你没有改变这些值,所以总是得到0
答案 5 :(得分:0)
在构造函数的范围内,x and y
是局部变量。
如果你这样做:
x = a;
y = b;
成员变量a and b
永远不会在构造函数中初始化。因此,当a * b
的默认值为0时,执行a and b
将产生0。
实际上,执行x = a
和y = b
毫无意义。