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(“卖票的静态方法”);

}

 

本类方法之间的调用:

任何方法都可以直接调用静态方法

静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法

posted @ 2017-04-10 15:39  爱学习的丹姐  阅读(133)  评论(0)    收藏  举报