构造Oput不来
问题描述:
class Constr
{
int a;
Constr()
{
int a=5;;
}
public void sd()
{
System.out.println(a);
}
public static void main()
{
Constr obj=new Constr();
obj.sd();
}
}
当我们运行这段代码,我们得到一个输出:{ 0 }
构造Oput不来
答
这里
Constr(){
int a=5;
}
您创建一个新的变量,而不是分配5到创建外部之一。删除声明,只留下a=5
。
答
默认情况下,int基元的实例变量的默认值设置为0 。
现在既然在你的构造你重新声明变量a
,而不是分配值实例变量,你没有得到你想要的输出(即变量的值应设置为0)。
相反,试试这个:
class Constr {
int a;
Constr() {
a = 5; // Assigning the value to the instance variable.
}
public void sd() {
System.out.println(a);
}
public static void main() {
Constr obj = new Constr();
obj.sd();
}
}
答
全局变量和局部变量是不同的。在类中,不初始化“a”是全局的,而在构造函数中,“a”是局部变量。如果你需要显示局部变量值5。修改如下。
class Constr { int a;
Constr()
{
int a=5;
this.a = a;
}
public void sd()
{
System.out.println(a);
}
public static void main()
{
Constr obj=new Constr();
obj.sd();
}
}
+0
这不是全球性的。我猜你认为Global的意思是“实例变量”。 Java不支持全局变量:)。 – nagendra547
+0
我的意思是全局var是类自己的,本地var是方法或构造函数自己的var。 – Myo
'INT A = 5 ;;'重新初始化在构造器变量'A'。将该行更改为'a = 5;'。查找成员变量及其范围 – XtremeBaumer
请避免添加“快速回复”等内容,但通常不会达到预期的效果。 – Berger
请在格式化,标点符号和拼写方面加倍努力,写这样的帖子对读者是不尊重的。 –