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
。否则,您每次都只需加零微调:ifthis.balance=0.0那么this.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);
}
}