在类之间共享 Java 中的变量



我有三个静态方法,每个方法都在自己的公共类中。简单的算术方法可以帮助我学习。

这些方法使用三个变量,当在 main 方法中定义为静态 int 变量时。该程序有效。

现在根据我对所读内容的理解,我应该能够将变量定义移动到另一个类并将它们定义为公共类。 然后,其自己的公共类中的 main 方法应该能够找到这些定义并运行。 但这不会发生。 相反,我的 eclipse 工作区报告无法将定义解析为变量。

这是非常简单的代码(它给了我编译错误(:

package christmas;
public class addintegers {
public int number1 = 5;
public int number2 = 10;
public int answer;
public static int add2numbers(int a, int b) {
return (a + b);
}
}

第 2 类

package christmas;
public class subtractintegers {
public static int sub2numbers(int a, int b) {
return (a - b);
}
}

然后我有我的主要方法。这是我收到编译错误的地方。

package christmas;
public class glue {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(addintegers.add2numbers(number1, number2));
System.out.println(subtractintegers.sub2numbers(number1, number2));
answer = (addintegers.add2numbers(number1, number2)) + (subtractintegers.sub2numbers(number1, number2));
System.out.println("answer =" + answer);
}
}

我得到的错误是:

>create local variable number1
>create local variable number2
>create local variable answer

首先:

  • 类名应为名词,并使用大写驼峰
  • 方法名称应为动词,并使用小驼峰大小写

例如,大致如下:

public class Addition {
public static int add(int a, int b) {
return a + b;
}
}
public class Subtraction {  
public static int subtract(int a, int b) {
return a - b;
}    
}

如果你想在我重命名Addition的类中有number1number2answer字段,通常你要做的是将它们private实例变量中,并通过getters公开它们:

public class Addition {
private int number1 = 5;
public int getNumber1() {
return number1;
}
}

然后,您可以通过创建类的实例来访问它们,例如:new Addition().getNumber1();.但是,由于AdditionSubtraction类似乎是实用程序类,因此private static声明这些字段可能更有意义,这样您就不必实例化这些类:

public class Addition {
private static int number1 = 5;
public static int getNumber1() {
return number1;
}
}

然后,您可以通过引用类而不是类的实例来访问它们,例如:Addition.getNumber1();.

你快到了。您缺少 2 个关键点:

  • 要在不实例化 addIntegers 类的情况下共享变量 number1、number2 和 answer,您需要将它们设为静态。
  • 要从胶水类的主方法中访问变量 number1、number2 和答案,您需要在变量前面加上 addIntegers 类。
package christmas;
public class addintegers {
public static int number1 = 5;
public static int number2 = 10;
public static int answer;
public static int add2numbers(int a, int b) {
return (a+b);
}
}
package christmas;
public class glue {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(addintegers.add2numbers(addintegers.number1,addintegers.number2));
System.out.println(subtractintegers.sub2numbers(addintegers.number1,addintegers.number2));
addintegers.answer =     (addintegers.add2numbers(addintegers.number1,addintegers.number2))+(subtractintegers.sub2numbers(addintegers.number1,addintegers.number2));
System.out.println("answer =" +addintegers.answer );
}
}
package com.rohov;
public class Application {
public static void main(String[] args) {
System.out.println(AddInteger.sum(AddInteger.num1, AddInteger.num2));
System.out.println(SubInteger.sub(AddInteger.num1, AddInteger.num2));
AddInteger.sum = AddInteger.sum(AddInteger.num1, AddInteger.num2) + SubInteger.sub(AddInteger.num1, AddInteger.num2);
System.out.println(AddInteger.sum);
}
}
class AddInteger {
public static int num1 = 5;
public static int num2 = 10;
public static int sum;
public static int sum(int a, int b) {
return a + b;
}
}
class SubInteger {
public static int sub(int a, int b) {
return a - b;
}
}

最新更新