Java - статические переменные - PullRequest
0 голосов
/ 07 января 2019
  1. Если я хочу создать статическую переменную внутри этого класса, которая должна сохранить общую сумму всех учетных записей. Это правильно, как я это сделал?
    Просто поместите код в конструктор, и хорошо.
    В любом случае, должно быть только внутри конструктора, верно?

  2. Как я могу напечатать статические переменные, чтобы я мог проверить это?


public class Account {

    private static double totalBalance = 0;

    private final double INTEREST_RATE = 0.015;
    private int acctNumber;
    private double balance;
    private String name;

    public Account(String name, int acctNumber, double initialBalance) {
        this.name = name;
        this.acctNumber = acctNumber;
        this.balance = initialBalance;
        this.totalBalance += this.balance;
    }

    public Account(String name, int acctNumber) {
        this.name = name;
        this.acctNumber = acctNumber;
        this.balance = 0.0;
        this.totalBalance += this.balance;
    }

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Решение подытожено:

статическая переменная:

частный статический двойной totalBalance;

конструктор 1:

totalBalance + = this.balance;

другие:

totalBalance + = сумма;

totalBalance - = (сумма + комиссия);

totalBalance + = (this.balance * INTEREST_FEE);

0 голосов
/ 07 января 2019

К большому коду для простого вопроса. Главное - ключевое слово static при объявлении поля в классе. Всегда помните, что эти поля являются общими для всех экземпляров класса. Другими словами, когда некоторый экземпляр изменяет значение статического поля, оно отражается во всех других экземплярах этого класса. Здесь простой код лучше слов:

class A {
    public static int x;
}

public class Helper {

    public static void main(String[] args) {
        A someA = new A();
        A.x = 0;

        A someOtherA = new A();
        A.x = 5;

        //uncomment next line and see what happens
        //someA.x = -55;

        System.out.println("x in someA = " + someA.x);
        System.out.println("x in someOtherA = " + someOtherA.x);
        System.out.println("x in all instances of A = " + A.x);

    }
}

EDIT: По поводу вопроса можно ли поместить статическую переменную в конструктор, попробуйте это:

class B{
    private static int x;
    public B(int x){
        B.x = x;
    }

    public int getX() {
        return x;
    }
}

public class Helper {

    public static void main(String[] args) {
        B bOne = new B(44);
        System.out.println(bOne.getX());

        B bTwo = new B(88);
        System.out.println(bTwo.getX());
        System.out.println(bOne.getX());

    }
}

РЕДАКТИРОВАТЬ два

Вот пример кода относительно ваших вопросов в комментариях:

class Acc {
    public static int noOfAccounts;
    public static double totalBalance;

    public Acc(double balance) {
        //increase the number of accounts
        Acc.noOfAccounts++;
        //add the balance to totalBalance
        Acc.totalBalance += balance;
    }
}


public class Helper {

    //test
    public static void main(String[] args) {

        Acc aOne = new Acc(15.4);
        System.out.println("Acc.noOfAccounts = " + Acc.noOfAccounts);
        System.out.println("Acc.totalBalance) = " + Acc.totalBalance);

        Acc aTwo = new Acc(100.0);
        System.out.println("Acc.noOfAccounts = " + Acc.noOfAccounts);
        System.out.println("Acc.totalBalance) = " + Acc.totalBalance);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...