对象static作用

static的作用  时间:2021-02-28  阅读:()

是静态修饰符什么叫静态修饰符呢大家都知道在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的而所谓静态就是指在编译后所分配的内存会一直存在直到程序退出内存才会释放这个空间也就是只要程序在运行那么这块内存就会一直存在。这样做有什么意义呢

在J av a程序里面所有的东西都是对象而对象的抽象就是类对于一个类而言如果要使用他的成员那么普通情况下必须先实例化对象后通过对象的引用才能够访问这些成员但是有种情况例外就是该成员是用stat i c声明的在这里所讲排除了类的访问控制 例如

未声明为stat i cclass ClassA{int b;public void ex1(){

}

}class ClassB{voidex2{int i;

ClassA a=new ClassA();i=a.b; //这里通过对象引用访问成员变量ba.ex1; //这里通过对象引用访问成员函数ex1

}

}

声明为s tat i cclass ClassA{static int b;static vo id ex1(){

}

}class ClassB{void ex2{int i;i=C las sA.b; //这里通过类名访问成员变量b

ClassA.ex1; //这里通过类名访问成员函数ex1

}

}

通过以上两种比较就可以知道s tat i c用来修饰类成员的主要作用了

在j ava类库当中有很多类成员都声明为stati c可以让用户不需要

实例化对象就可以引用成员最基本的有Inte ge r.par seInt() F loat.p arseFloat()等等用来把对象转换为所需要的基本数据类型。这样的变量和

方法我们又叫做类变量和类方法。

接下来讲一下被s tat i c修饰后的变量的值的问题刚才在前面讲过被stat i c修饰后的成员在编译时由内存分配一块内存空间直到程序停止运行才会释放那么就是说该类的所有对象都会共享这块内存空间看一下下面这个例子class TS tatic{static int i;public TStatic(){i=4;

}public TStatic(int j){i=j;

}public static void main(String args[]){

TStatic t=new TStatic(5); //声明对象引用并实例化

TStatic tt=new TStatic(); //同上

Sys te m.out.print ln(t.i);

Sys te m.o ut.println(tt.i);

Sys te m.o ut.pr intln(t.i);

}

}

第一个用于初始化I为4第二个用于初始化i为传进函数的值

在ma in中所传的值是5程序首先声明对象的引用t然后调用带参

数的构造函数实例化对象此时对象t的成员变量I的值为5接着

声明对象tt调用无参数的构造函数那么就把对象tt的成员变量i的值初始化为4了注意了在这里i是s tat i c那就是说该类

所有对象都共享该内存那也就是说在实例化对象tt的时候改变了i的值那么实际上对象t的i值也变了 因为实际上他们引用的

同一个成员变量。最后打印的结果是三个4。呵呵写到这里大家

是否明白了呢不明白就再看看书或者多写几个例子印证一下

呵。

是这样的 static定义的变量是个所有该类对象共有的变量那

么我们可以举个例子来说明 比如我编写一个Student类该类中有个s tat i c变量c o unt用来记录学生的个数在构造方法中做c o unt。那么当我每创建一个对象时count都会做自加也就是每创建一个S tude nt的对象系统就会记录一个那么很显然我就可以调用这个count知道一共有多少Stude nt对象了。这个是个很简单的例子不过应该可以说明问题了。

问题:雇员类有个雇员基本工资,对于员工A员工B都是一样的,但是管理员又有可能需要对这个工资做调整,也就是不能定义成常量.像这样的变量你要怎么处理呢?怎么保证这样的一致性?

于是stati c成员变量和成员方法就产生咯:static int salary;public static void setSalary(int salary){this.salary=salary;}public static int getSalary(){return salary;}

这样的话我就直接用员工类.方法得到统一的基本工资值啦:

Employee.setSalary(800);

Emp loye e.getSalary();

至于每个员工嘛,也可以调用这个方法查看自己的基本工资

Employee A=new Employee();

A.getSalary();

PS:这里还涉及到对员工实体屏蔽setSalary()方法的问题,我也懒得想啦. . . . .

其实楼上的各位说得已经很清楚了,我只是更形象得告诉你,好理解一点.

Virmach 3.23美元可用6个月的VPS主机

Virmach 商家算是比较久且一直在低价便宜VPS方案中玩的不亦乐乎的商家,有很多同时期的商家纷纷关闭转让,也有的转型到中高端用户。而前一段时间也有分享过一次Virmach商家推出所谓的一次性便宜VPS主机,比如很低的价格半年时间,时间到服务器也就关闭。这不今天又看到商家有提供这样的产品。这次的活动产品包括圣何塞和水牛城两个机房,为期六个月,一次性付费用完将会取消,就这么特别的产品,适合短期玩玩...

CYUN(29元/月)美国、香港、台湾、日本、韩国CN2,续费原价

关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...

轻云互联-618钜惠秒杀,香港CN2大宽带KVM架构云服务器月付22元,美国圣何塞精品云月付19元爆款!海量产品好货超值促销进行中!

官方网站:点击访问青云互联活动官网优惠码:终身88折扣优惠码:WN789-2021香港测试IP:154.196.254美国测试IP:243.164.1活动方案:用户购买任意全区域云服务器月付以上享受免费更换IP服务;限美国区域云服务器凡是购买均可以提交工单定制天机防火墙高防御保护端口以及保护模式;香港区域购买季度、半年付、年付周期均可免费申请额外1IP;使用优惠码购买后续费周期终身同活动价,价格不...

static的作用为你推荐
行业关键词怎么挖掘关键词呢,都有哪些方法google竞价排名谷歌是靠什么关键词排名的?谷歌竞价有什么特点?有什么优势?百度抢票浏览器百度手机浏览器怎么抢票 手机百度浏览器抢票方法flash导航条如何制作flash导航条flash导航条谁来帮我看看这样的flash导航条 下面的页面该怎么设计今日热点怎么删除怎么删除手机百度实时热点申请证书求高手教下怎么申请证书qq空间打扮如何打扮QQ空间?2012年正月十五山西省太原市2012年正月十五活动的相关情况ios系统ios系统和安卓系统对比起来有什么优点和缺点?
云服务器租用 企业域名备案 香港主机 免费网站监控 2017年万圣节 私有云存储 魔兽世界台湾服务器 html空间 卡巴斯基试用版 闪讯网 开心online 镇江高防服务器 .htaccess 海外加速 web是什么意思 cpu使用率过高怎么办 防盗链 weblogic部署 winserver2008下载 linuxvi 更多