这是我关于stackoverflow的第一个问题,
我想访问另一个类中某个类的 static int variable 但是当我在另一个类中访问此变量时,它总是给我“0”。
这是头等:
package kk;
public class ag {
public static int n=0;
public static int as()
{
return n;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
n=3;
n=n*5;
System.out.println(n);
}
}
此处输出为15,即此处n = 15.
第二课:
package kk;
public class ah extends ag {
public static void main(String[] args) {
// TODO Auto-generated method stub
//ag aa =new ag();
int k =ag.as();
System.out.println(k);
}
}
在这个尝试从First类访问静态变量n但输出为0但我想要15。
答案 0 :(得分:5)
您获得0,因为这是第一个班级n
中ag
的初始值。执行n
的{{1}}方法时,ag
仅更改为15,但您目前尚未执行此操作。
您可以在main()
的{{1}}方法中手动调用ag.main()
方法,例如: -
main()
这会将ah
设置为15,但这不是最好的方法。
答案 1 :(得分:0)
Java只保留为变量维护的值以便执行。当第一个程序完成执行时,该对象不再存在。因此,对于第二类执行,该值将不存在&根据定义初始化为0。
如果你真的希望它是15,那么将它初始化为15。
package kk;
public class ag {
public static int n=3*5;
public static int as()
{
return n;
}
}
或强>
在调用ag
as()
的main()
package kk;
public class ah extends ag {
public static void main(String[] args) {
ag.main(args);
int k =ag.as();
System.out.println(k);
}
}
答案 2 :(得分:0)
您的计算:
n=3;
n=n*5;
正在使用类{ag}的main()
方法进行评估,所以它对于你有第二个main()
方法的类啊没什么影响 - 看起来你需要编程,而不只是一个。
答案 3 :(得分:-1)
@anju,还有一件事要考虑......
创建静态变量时,编译器有时会替换该值以节省时间。特别是当你使用关键字final。这意味着在编译时,它将替换辅助(或使用)类中的当前值。如果更改该值,则需要重新编译所有用法或编译所有内容,否则它们将具有旧值。