如何在Java中获取对象中的值?

如何在Java中获取对象中的值?,java,Java,假设我有这样的东西: public class obj{ public int x; public obj(int x){ this.x = x; } } 这是: public class main{ obj o = new obj(1); public static void main(String[] args){ //get the value of OBJ //add 1 to the value

假设我有这样的东西:

public class obj{
    public int x;
    public obj(int x){
        this.x = x;
    }
}
这是:

public class main{

    obj o = new obj(1);
    public static void main(String[] args){
        //get the value of OBJ
        //add 1 to the value got from above(let's just say I wanted to. no reason why)
    }

}

是否有可能在不将x更改为静态的情况下获得obj的x值?这样你就可以改变它了?当我尝试这样做的时候,它总是说把x改成静态。为什么?我知道这可能是个奇怪的问题,但我只是想知道:)

是的,你可以使用

o.x

它不会告诉您将
x
更改为
静态
。它告诉您将
o
设置为静态
o
是非静态的,不能在静态主方法中使用。

非静态实例不能在静态方法中直接评估。由于
o
是一个实例变量而不是静态变量,因此需要创建
Main
的实例来访问它的非静态变量

public class Main {

    Obj o = new Obj(1);
    public static void main(String[] args){

      Main main = new Main();
      main.o.x += 1; 

    }

}

您需要首先将对象更改为
static
,因为您直接从
static main
访问它

private static obj o = new obj(1);

// You can get the value of `x` from `o` as follows:
int x = o.x;

// You can increment the value in the object `o` as follows:
o.x++;

首先,你的类声明是错误的。在类声明中不使用括号

此外,在Java中,您可以编写大的类名。(类对象已经存在,不要将类设为“Obj”,因为它的意思相同,并且是缩写。)


您想访问静态方法
main
中的非静态变量
o
?为什么可能呢?
公共类obj(){…}
-这是用java编译的吗?我在写的时候有点匆忙。我来解决:)哦,是的!我忘了想那件简单的事了!:)谢谢当您重命名类时,还要重命名构造函数。
public class MyObject {
    public int x;
    public MyObject(int x){
        this.x = x;
    }
}


public class Main {

    MyObject myInstance = new MyObject(1);
    public static void main(String[] args){
        // You can just do ++ behind the variable. This adds +1.
        myInstance.x++;
        // If you want to get the value of the (public) variable x:
        int temp = myInstance.x;
    }
}