static 静态的:
可以修饰:属性、方法、代码块(或初始化块)、内部类
一、static修饰属性
类变量(static修饰的属性) 所有由此创建的对象,都共用一个属性;(存放在静态域)
类变量随着对象的加载而加载,而且独一份。(不依赖与对象,且早于对象加载)
实例变量(非static修饰的属性)所有由此创建的对象,都各自使用自己的属性
二、static修饰方法
类变量(static修饰的方法) 所有由此创建的对象,都共用一个方法;(存放在静态域)
类变量随着对象的加载而加载,而且独一份。(不依赖与对象,且早于对象加载)
可以通过“类.类方法”来调用
实例变量(非static修饰的方法)所有由此创建的对象,都各自使用自己的属性
static(属性、方法、代码块(或初始化块)、内部类)生命周期早于非static的........而且回收的晚。因此占用空间较大。
练习
package test; public class TestAccount { public static void main(String[] args) { Account a1=new Account("abcd1", 1000); Account a2=new Account("adsdf",1000000); System.out.println(a1); System.out.println(a2); } } class Account{ private int id; private String passworld; private int balance; private static double rate=0.05; private static int minbalance=1; private static int inint=1000; public Account(String passworld,int balance) { this.id=inint++; this.passworld=passworld; this.balance=balance; } public String getPassworld() { return passworld; } public void setPassworld(String passworld) { this.passworld = passworld; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } public static int getMinbalance() { return minbalance; } public static void setMinbalance(int minbalance) { Account.minbalance = minbalance; } @Override public String toString() { return "Account [id=" + id + ", passworld=" + passworld + ", balance=" + balance + "]"; } }