从其他类调用java中的私有静态变量
我认为这可能是一个直截了当的问题,但是我有一个类,它有一个私有的静态int变量,这个变量在类中递增,我想在第二个类中显示这个值。但是,即使0已递增,它仍会继续打印出0 同样的代码也可以从其他类调用java中的私有静态变量,java,class,static,Java,Class,Static,我认为这可能是一个直截了当的问题,但是我有一个类,它有一个私有的静态int变量,这个变量在类中递增,我想在第二个类中显示这个值。但是,即使0已递增,它仍会继续打印出0 同样的代码也可以 public class Test{ private static int toIncrement; public static int returnValue{ return toIncrement; } public void test
public class Test{
private static int toIncrement;
public static int returnValue{
return toIncrement;
}
public void test{
for(int i = 0; i < 4; i++){
toIncrement++;
}
}
}
公共类测试{
私有静态int-to-increment;
公共静态返回值{
回归增长;
}
公共空隙试验{
对于(int i=0;i<4;i++){
toIncrement++;
}
}
}
因此,上面的代码运行,然后从另一个类调用Test.returnValue();
这个返回0
所以上面的代码运行,然后从我调用的另一个类开始
Test.returnValue();这个返回0
当您说上面的代码运行时,并不意味着您的
test
方法将自动执行,而无需从任何地方调用。如果先调用test
方法,然后尝试获取test.returnValue()
,则该值不应为0。。我从哪里开始
public void test{
for(int i = 0; i < 4; i++){
toIncrement++;
}
}
同样,括号
private static int toIncrement;
public static int returnValue{
return toIncrement;
}
这真的是静态的吗?要么将其设置为静态并调用Test.Test(),要么将其设置为非静态并正确调用构造函数。您忘记了方法中的参数括号。 应该是:
public class Test{
private static int toIncrement;
public static int returnValue(){
return toIncrement;
}
public void test(){
for(int i = 0; i < 4; i++){
toIncrement++;
}
}
当您这样做时,代码将在您运行程序时自动运行(只要这是您的主类,如果不是,您需要为构造函数创建一个实例来运行。)使用静态块
public class Test{
private static int toIncrement;
public static int returnValue(){
return toIncrement;
}
static {
for(int i = 0; i < 4; i++){
toIncrement++;
}
}
}
公共类测试{
私有静态int-to-increment;
公共静态int returnValue(){
回归增长;
}
静止的{
对于(int i=0;i<4;i++){
toIncrement++;
}
}
}
@hovercraftfullofels都在那里。@hexafraction:啊,上面的代码甚至都没有编译。对于原始海报:请不要浪费我们的时间张贴“垃圾”代码供我们审查。如果您遇到了严重的问题,希望得到认真的帮助,请只发布真实的代码。您的类首先是如何编译的。您知道如何用Java编写方法吗?“即使是这样,它也没有用,因为toIncrement
是静态的,它会崩溃。”它不会崩溃。静态变量可以在非静态上下文中使用(只有相反的是不正确的)。@arshajii谢谢,我总是很难混淆2,尽管现在看起来很直观。
public test()
{
code here
}
public class Test{
private static int toIncrement;
public static int returnValue(){
return toIncrement;
}
static {
for(int i = 0; i < 4; i++){
toIncrement++;
}
}
}