浅谈static关键字(一)

static可以修饰的是属性、方法、代码块、内部类,不可以修饰构造器。
其中比较重要的是static修饰的属性和方法。
1.修饰属性
举个例子:

class Employee{
String name ;
double age ; 
double salary;
static double sumSalary;//使用static修饰的属性称作静态变量。
}

属性sumSalary使用static修饰,那么属性sumSalary就将成为类Employee的共享变量,这么形容可能有些抽象。

为了更好的理解,我们来回想一下没有用static修饰的属性。属性salary没有被static修饰,那么当创建一个类的对象时,就会通过new来开辟出一个空间,每个对象实例都拥有一个自己特有的salary,此时的salary是属于该实例的,不管你对salary进行何等操作,都不会影响到其他实例对应的salary。
即:

Employee xiaowang = new Employee();
Employee xiaozhao= new Employee();

//xiaowang.salary和xiaozhao.salary是相互独立的两个变量

那么,当使用了static关键字修饰sumSalary时,属性sumSalary成为所有实例共享的属性,每一个对象对sumSalary进行的操作都会影响到后来的程序对sumSalary的取用读写。

就比如我写的雇员类,其中每个人的薪水( salary )都是属于他们自己的,各有差异,我后面再写别的方法来对薪水进行涨薪降薪,都只对某一个雇员产生影响;但是他们所有人的薪水总和( sumSalary)就是大家共用的,当某个雇员(对象实例)的薪水增加时,不仅要增加该雇员的薪水,也要调用sumSalary,将增加的薪水数目添加到属性sumSalary上。

不同的例子使用方法可能有差异,比如定义一个中国人类,该类对应的所有对象都有一个属性那就是国籍为China,即:

String nationality = “ China” ;

如果不把属性nationality 定义成static,那么每次在创建对象的时候都要再分配内存空间给属性nationality ,造成资源浪费。如果声明成了static,那就不用再给每个对象都声明一个属性nationality

综上,只要记住一点:static定义的属性属于大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值