1、static:静态的;
2、static可以用来修饰属性、方法、内部类和代码块
3、使用static关键字修饰属性:静态变量(类变量)
3.1属性,按照是否使用static来修饰属性又分为:静态变量(类变量)和没有加static的非静态变量(实例变量)
静态变量(类变量):在一个类中我们建造了多个对象,它们公用一个静态变量,当一个对象修改静态变量,那么其他对象调用静态变量调用的就是修改后的静态变量
非静态变量(实例变量):在一个类中我们创建了多个对象,他们相互独立互不影响,当一个对象的非静态变量改变时,其它对象的非静态变量不会受到影响改变
3.2static修饰属性的其他说明
3.2.1静态变量随着类的加载而加载
3.2.2因为类加载好才创建了类的对象,所以静态变量在对象创建之前就加载好了
3.2.3因为类只加载了一次,所以静态变量也只加载了一次只存有一份静态变量,保存在方法区的静态域中
3.2.4静态变量由于加载早可以通过类和对象调用
非静态变量是在对象创建时加载的可以通过对象来调用,但是由于它是在类之后加载的,所以不能通过类来调用非静态变量。
4、使用static来修饰方法:静态方法
4.1静态方法随着类的加载而加载,可以直接通过类去直接调用
4.2和静态变量相似静态方法也可以通过类和对象来进行调用,也可以直接用方法名来调用
非静态方法只能通过对象来调用不能通过类来调用
4.3静态方法只能调用静态方法和静态变量
非静态方法可以调用静态方法和非静态方法,也可以调用静态变量和非静态变量
5static关键字注意:
在静态方法中,不能使用this和super关键字
6.在开发中
6.1如何确定一个属性需不需要static关键字去声明
>当多个对象的这个属性都是相同时,那么这个属性可以用static关键字去声明
>常量也经常用static关键字去声明
6.2如何确定一个方法需不需要static关键字去声明
>操作静态属性的方法,一般都是静态方法需要用static关键字去声明
>工具类的方法一般都用static关键字去声明(作用是不用再去造对象通过对象去调用,可以直接调用或者通过类去调用)
*编写一个类实现银行账户的概念,包含的属性有帐号”、“密码”、“存款余额”、“利率”、"最小余额”
*定义封装这些属性的方法。账号要自动生成。
编写主类,使用银行账户类,输入、输出3个储户的上述信息。
考虑:哪些属性可以设计成static属性。
public class Account { private int id; private String pwd="0000"; private double balance; private static double interestRate; private static double minmoney=1.0; private static int init=1001;//生产账号 public Account(String pwd,double balance){ this.pwd=pwd; this.balance=balance; id=init++; } public int getId() { return id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public static double getMinmoney() { return minmoney; } public static void setMinmoney(double minmoney) { text3.Account.minmoney = minmoney; } public static double getInterestRate() { return interestRate; } public static void setInterestRate(double interestRate) { Account.interestRate = interestRate; } @Override public String toString() { return "Account{" + "id=" + id + ", pwd='" + pwd + '\'' + ", balance=" + balance + '}'; } }
public class Accounttext { public static void main(String[] args) { Account p1=new Account("1002",2000); // double q= p1.getBalance(); // int d= p1.getId(); // String c= p1.getPwd(); // double a= Account.getMinmoney(); // Account.setInterestRate(0.03); // double b= Account.getInterestRate(); // System.out.println("客户的id:"+d+",密码:"+c+",余额:"+q+",银行利息:"+b+"最低存款:"+a); System.out.println(p1); } }
在这里可以重写toString方法