繁体   English   中英

在类之间共享Java中的变量

[英]sharing variables in java between classes

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

这些方法使用三个变量,当在主方法中定义为静态 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实例变量并通过 getter 公开它们:

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(); .

你快到了。 你错过了两个关键点:

  • 要在不实例化 addIntegers 类的情况下共享变量 number1、number2 和 answer,您需要将它们设为静态。
  • 要从胶水类的 main 方法中访问变量 number1、number2 和 answer,您需要在变量前加上 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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM