如何在类中的不同位置使用相同的对象?

时间:2017-12-05 14:37:49

标签: java

我编写了一些小的java代码,并希望在其他方法中使用我在main方法中创建的同一个对象。有什么办法吗?我不希望每次在Checklength方法中创建新对象只是为了调用digitSum。我想使用在main方法中创建的相同对象。

注意:不更改方法属性

public class UserMainCode {

    public int digitSum(int input1) {
        int num = input1;
        int sum = 0;
        int output = 0;
        int length = 0;
        while (num > 0) {
            sum = sum + num % 10;
            num = num / 10;
        }
        output = sum;
        length = Integer.valueOf(Integer.toString(output).length());
        Checklength(length, output);
        return length;
    }

    public static void Checklength(int length, int sum) {
        if (length > 1) {
            UserMainCode b = new UserMainCode();
            b.digitSum(sum);
        }
        else {
            System.out.println(sum);
        }
    }

    public static void main(String[] args) {
        UserMainCode o = new UserMainCode();
        o.digitSum(976592);
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下要做的是从static方法中删除checklengthstatic表示该方法属于类级而不是实例级。如果删除它,checklength将返回实例级别,并且可以在同一个实例上调用digitSum(可以通过关键字this显式访问)。 / p>

public class UserMainCode {

    public int digitSum(int input1) {
        int num = input1;
        int sum = 0;
        int output = 0;
        int length = 0;
        while (num > 0) {
            sum = sum + num % 10;
            num = num / 10;
        }
        output = sum;
        length = Integer.valueOf(Integer.toString(output).length());
        Checklength(length, output);
        return length;
    }

    public void checklength(int length, int sum) {
        if (length > 1) {
            // deleted instance b - we don't need it
            digitSum(sum);  // implicitly means  this.digitSum(sum); 
        }
        else {
            System.out.println(sum);
        }
    }
}

所有这些操作现在都发生在main方法中创建的实例上。