java static静态变量

java static静态变量

ID:11310602

大小:32.50 KB

页数:3页

时间:2018-07-11

java static静态变量_第1页
java static静态变量_第2页
java static静态变量_第3页
资源描述:

《java static静态变量》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、JAVAStatic静态变量是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制),例如:未声明为staticclass

2、ClassA{intb;publicvoidex1(){…}}classClassB{voidex2{inti;ClassAa=newClassA();i=a.b;//这里通过对象引用访问成员变量ba.ex1;//这里通过对象引用访问成员函数ex1}}声明为staticclassClassA{staticintb;staticvoidex1(){…}}classClassB{voidex2{inti;i=ClassA.b;//这里通过类名访问成员变量bClassA.ex1;//这里通过类名访问成员函数ex1}}通过以上两种比较,就可以知道static用来修饰类成员的

3、主要作用了,在java类库当中有很多类成员都声明为static,可以让用户不需要实例化对象就可以引用成员,最基本的有Integer.parseInt(),Float.parseFloat()等等用来把对象转换为所需要的基本数据类型。这样的变量和方法我们又叫做类变量和类方法。接下来讲一下被static修饰后的变量的值的问题,刚才在前面讲过,被static修饰后的成员,在编译时由内存分配一块内存空间,直到程序停止运行才会释放,那么就是说该类的所有对象都会共享这块内存空间,看一下下面这个例子:classTStatic{staticinti;publicTStatic(){

4、i=4;}publicTStatic(intj){i=j;}publicstaticvoidmain(Stringargs[]){TStatict=newTStatic(5);//声明对象引用,并实例化TStatictt=newTStatic();//同上System.out.println(t.i);System.out.println(tt.i);System.out.println(t.i);}}这段代码里面Tstatic类有一个static的int变量I,有两个构造函数,第一个用于初始化I为4,第二个用于初始化i为传进函数的值,在main中所传的值是5,程序

5、首先声明对象的引用t,然后调用带参数的构造函数实例化对象,此时对象t的成员变量I的值为5,接着声明对象tt,调用无参数的构造函数,那么就把对象tt的成员变量i的值初始化为4了,注意了,在这里i是static,那就是说该类的所有对象都共享该内存,那也就是说在实例化对象tt的时候改变了i的值,那么实际上对象t的i值也变了,因为实际上他们引用的是同一个成员变量。最后打印的结果是三个4。呵呵,写到这里大家是否明白了呢?不明白就再看看书或者多写几个例子印证一下,呵呵。是这样的,static定义的变量是个所有该类对象共有的变量,那么我们可以举个例子来说明,比如,我编写一个Stu

6、dent类,该类中有个static变量count用来记录学生的个数,在构造方法中做count++。那么当我每创建一个对象时count都会做自加,也就是每创建一个Student的对象系统就会记录一个,那么很显然,我就可以调用这个count知道一共有多少Student对象了。这个是个很简单的例子,不过应该可以说明问题了。static类型的变量是属于类的.当这个类一个对象改变static类型变量的值,其他对象的这个值也会跟着一起改变.例如classA{publicstaticintcunt=0;}publicclassTest{publicstaticvoidmain(S

7、tring[]args){Aa1=newA();Aa2=newA();a1.cunt=100;//a1对象把cunt改变成100System.out.println(a2.cunt);//输出对象a2的cunt值也为100}}问题:雇员类有个雇员基本工资,对于员工A员工B都是一样的,但是管理员又有可能需要对这个工资做调整,也就是不能定义成常量.像这样的变量你要怎么处理呢?怎么保证这样的一致性?于是static成员变量和成员方法就产生咯:staticintsalary;publicstaticvoidsetSalary(intsalary){this.salary

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。