Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-静态变量_Java_Static - Fatal编程技术网

Java-静态变量

Java-静态变量,java,static,Java,Static,如果我想在这个类中创建一个静态变量,它应该保存所有帐户的总数。我是这样做的吗? 只要在构造函数中放入一段代码,就可以了。 应该只在构造函数中,对吗 如何打印静态变量以便能够检查它 对于简单的问题,需要编写大量代码。在类中声明字段时,主要是关键字static。始终记住,这些字段在类的所有实例之间共享。换句话说,当某个实例更改静态字段的值时,它将反映在该类的所有其他实例中。这里简单的代码比下面的文字要好: class A { public static int x; } public c

如果我想在这个类中创建一个静态变量,它应该保存所有帐户的总数。我是这样做的吗?
只要在构造函数中放入一段代码,就可以了。
应该只在构造函数中,对吗

  • 如何打印静态变量以便能够检查它



  • 对于简单的问题,需要编写大量代码。在类中声明字段时,主要是关键字
    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);
    
        }
    }
    
    编辑: 关于能否将静态变量放入构造函数中的问题,请尝试以下方法:

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

    解决方案摘要:

    静态变量:

    私人静态双总平衡

    构造函数1:

    totalBalance+=此.balance

    其他:

    总余额+=金额

    总余额-=(金额+费用)

    totalBalance+=(this.balance*利息费)


    首先,您需要先移动
    this.balance=initialBalance
    ,然后再移动
    totalBalance+=this.balance
    。否则,您每次都只需加零微调:if
    this.balance=0.0this.totalBalance+=this.balance的意义是什么?无论如何,如果构造函数可以在不同的线程中执行,那么this.totalBalance+=this.balance;可能导致问题(研究“竞赛条件”问题)。解决方法是使用类。当然,我只处理了一个线程,但在多线程环境中,必须进行一些调整…所以静态变量可以进入构造函数和getter内部。你有没有一个技巧让我用最好的方法解决我的问题?我的意思是,通常只有一个计数器作为账户金额的静态变量。这很容易,但现在我想在一个静态变量中获得所有帐户的所有余额。还有一件事我想,我如何使用静态变量为不同的帐户分配AccountNumber。这应该是可能的,对吧?是的,一切都有可能,但我不会用你的方式编码。首先,可能会有一些并发症,例如。如果某个帐户被“销毁”怎么办?第二,您可能希望在某个集合、文本文件、数据库中保存所有帐户,对吗?在这种情况下,你可以很容易地计算帐户的数量,看看总余额是多少,等等…所以我想我知道了。新的一天,新的运气。^^静态变量:私人静态双总余额=0;构造函数1:this.balance=initialBalance;totalBalance+=此.balance;构造函数2:this.balance=0.0;totalBalance+=此.balance;现在我可以使用getter:public static double getTotalBalance(){return totalBalance;}和另一个类中的测试来检查它:double totalBalance=Account.getTotalBalance();系统输出打印项次(总余额);对的但是如何使用静态变量分配帐号-/不,还是坏了。
    
    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);
    
        }
    }