【问题标题】:How does java call variables modified by functions in another class? [duplicate]java如何调用另一个类中的函数修改的变量? [复制]
【发布时间】:2020-10-13 07:52:38
【问题描述】:

我定义了两个java类test1和test2,其中在test1中定义了一个变量a=3,然后在connect()方法中改成10,我用Scanner让程序不退出.但是当我在test2中调用test1.a时,得到的值仍然是初始值a=3而不是a=10a修改后的值应该用什么方法?

public class test1 {
        public static int a=3;
    public static void connect(){
        System.out.println(a);
         a=10;
        System.out.println(a);
        Scanner sc = new Scanner(System.in);
        sc.nextLine();
    }

    public static void main(String[] args) {
        connect();
    }
}
public class test2 {
    public static void main(String[] args) {
        System.out.println(test1.a);
    }
}

【问题讨论】:

  • 您已经启动了两个不同的 JVM 实例,状态在 JVM 之间共享。在test2.main() 中,从未调用过connect() 方法

标签: java


【解决方案1】:

这是因为你从来没有调用过test1.connect(),所以这个值从来没有被修改过。所以打电话给test1.connect()main()。您不能同时拥有两个 main() 方法。 :

public class test2 {
    public static void main(String[] args) {
        test1.connect();
        System.out.println(test1.a);
    }
}

并删除test1 中的main()。 此外,在 Java 中,您通常按照约定使用 PascalCase 作为类名。所以,首字母大写,使用Test1 而不是test1

另外,如果你想修改a 的值而不调用任何方法并且在加载类时(虽然我不确定为什么),你可以使用static 块:

public class Test1 {
        public static int a = 3;
       static {
        System.out.println(a);
        a = 10;
        System.out.println(a);
        Scanner sc = new Scanner(System.in);
        sc.nextLine();
    }
}

【讨论】:

    【解决方案2】:

    在test2中,你必须调用test1.connect()来更新a到10。然后你可以使用System.out.println(test1.a)来获取修改后的a的值。

    【讨论】:

      【解决方案3】:

      这两个类在执行时是分开的。静态变量也称为类变量或成员变量,因此它仅与一个类相关。 执行代码时,必须先运行 test1,然后再运行 test2。这将导致在执行 syso(test1.a) 时仅将 test1 的初始值提取到 test2 中,因为这两个类是分别执行的。

      因此,如果您想将 test1 类的修改值用于 test2 的另一个类,则必须从 test2 调用 test1。

      Public class test2 {
        Public static void main(String[] args) {
          Syso(“a in test2 “+test1.a);
          test1.connect();
          Syso(“modified a in test2 ”+test1.a);
        }
      }
      

      希望它能消除你的疑虑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 2020-01-10
        相关资源
        最近更新 更多