当前位置: 首页 > 知识库问答 >
问题:

java如何调用由另一个类中的函数修改的变量?[副本]

闻人栋
2023-03-14

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

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);
    }
}

共有3个答案

郦祯
2023-03-14

这两个类在执行时是分开的。静态变量也称为类变量或成员变量,因此它只与一个类相关。当您执行代码时,您必须先运行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);
  }
}

希望它消除了你的疑虑。

马新觉
2023-03-14

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

林烨烨
2023-03-14

这是因为您从未调用过test1.connect(),因此该值从未被修改过。所以在main()中调用test1.connect()。您不能同时拥有两个main()方法。:

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

然后卸下测试1中的main()。此外,在Java中,按照惯例,通常对类名使用PascalCase。因此,将第一个字母大写,使用Test1而不是Test1。

此外,如果希望在不调用任何方法的情况下修改a的值,并且在加载类时(虽然我不知道为什么),可以使用静态块:

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();
    }
}
 类似资料:
  • 我有一个类Main(它具有公共静态void Main(String[]args))和另一个类MyDocument。 Main类中存在一个变量,我想从MyDocument类中的函数alphabetOccurrence()访问该变量。我该怎么做呢?我不想用它作为静态变量。任何修改只能在函数中进行,其余的代码应该保持不变。

  • 我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。

  • 我正在做一个新的项目,我试图建立一个货币系统,在那里我可以提取它,以转移到另一个变量(在另一个类)。我在解决这个问题上遇到了一些问题,我对如何编写代码感到非常失望。下面是我想链接的类(我想让“coinsamount”在我做/存款时进入类2“amount” 第2类:

  • 我遇到了一个问题,我需要调用在另一个java类中的一个java类中创建的变量。 课程.java 第二课程.java 即使,我已经这样设置了它,但可变调用在第二课程.java类中不起作用。我错过了什么吗?你可以帮我吗? 我在试着打电话 在SecondCourse.java类。但给我错误sendKeys(java.lang.CharSequence....)在org.openqa.selenium.W

  • 我在class中定义了一个变量。它可以很好地执行Account类中定义的提款功能。但是,我希望访问Sav\u acct类中存在的函数interest中的变量值。它将收回的值取为0。如何使用兴趣函数中的函数中的函数的值,以便执行正确的数学运算? 导入java。util。扫描仪; 类别帐户{ 双重撤回; } 作废取款(){ 扫描仪sc=新扫描仪(系统英寸); 系统出来println(“您想提取多少?”

  • 问题内容: 如果我有这个: 我之前已定义,因此效果很好。 我的问题是在第6行中调用。我试图用相同的定义在第一个函数之外进行定义,但是即使调用,它也始终相同。 我希望每次调用第一个函数然后再调用第二个函数时,都具有一个不同的。 我能做到这一点,而不界定外? 问题答案: 是的,您应该考虑在一个类中定义您的函数,并使word成为成员。这比较干净 创建类后,您必须将其实例化为对象并访问成员函数。 另一种方