Java 中的 Static关键字用法
Static 被称为静态,可以用来修饰属性和方法
Static 属性:如果类的某个属性,不管创建多少个对象,属性的存储空间只有一个,这个属性就应该用static修饰。被static修饰的属性被称为静态属性(静态属性并不表示为不可以修改的)
Static 属性可以使用对象调用,也可以直接用类名调用,一般都用类名调用
静态属性是类的所有对象共享的,即不管多少个对象,静态属性在内存中只有一个。
例如,对于一个班级的学员而言,每个学员都有一本书,那么书本是普通的成员 ,但是老师只有一个,因此老师就是静态的成员。
例如,存款操作中,所有账户的总存款,员工类中,所有员工的总人数等 都可以修饰为静态的 。
public class UserAccount {
private String uname ; //登录的用户名
private String upwd ; //密码
private double _balance;//余额
public static double sum_balance; //表示所有储户的总余额
//构造函数
public UserAccount(String uname, String upwd, double _balance) {
this.uname = uname;
this.upwd = upwd;
this._balance = _balance;
sum_balance= sum_balance+this._balance;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public double get_balance() {
return _balance;
}
public void set_balance(double _balance) {
this._balance = _balance;
}
//存款操作
public double cunkuan(double money){
if(money < 0){
System.out.println("你闹呢。。。。");
return -1;
}
this._balance = this._balance + money; //当前账户的余额情况
sum_balance = sum_balance +money; //银行的总余额
return this._balance;
}
//取款
public double qukuan(double money){
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
String pwd = input.next();
boolean aa = login(name,pwd);//验证用户名和密码是否正确
if(!aa){
System.out.println("用户名 或密码错误");
return -1;
}else{
//开始取款操作
if(money < 0){
System.out.println("别闹");
return -2;
}else if (money > this._balance){
System.out.println("余额不足");
return -3;
}else{
this._balance = this._balance - money;
sum_balance = sum_balance - money;
return this._balance;
}
}
}
//登录
public boolean login(String name,String pwd){
boolean flag = false;
if(name.equals(this.uname) && pwd.equals(this.upwd)){
flag = true;
}
return flag;
}
Static 方法:如果某个方法与实例无关,也就是不管哪个对象调用这个方法,都执行相同的操作,对象没有关系,则应该定义为静态方法。
例如:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,直接使用类调用即可。
Private static int ticket = 11;
Public static void sellticket(){
Ticket = ticket -1;
System.out.println(“卖票的静态方法”);
}
本类方法之间的调用:
任何方法都可以直接调用静态方法
静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法

浙公网安备 33010602011771号