对象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()方法的问题,我也懒得想啦. . . . .

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

提速啦香港独立物理服务器E3 16G 20M 5IP 299元

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

racknerd:美国大硬盘服务器,$599/月,Ryzen7-3700X/32G内存/120gSSD+192T hdd

racknerd当前对美国犹他州数据中心的大硬盘服务器(存储服务器)进行低价促销,价格跌破眼镜啊。提供AMD和Intel两个选择,默认32G内存,120G SSD系统盘,12个16T HDD做数据盘,接入1Gbps带宽,每个月默认给100T流量,5个IPv4... 官方网站:https://www.racknerd.com 加密数字货币、信用卡、PayPal、支付宝、银联(卡),可以付款! ...

Advinservers:美国达拉斯便宜VPS/1核/4GB/80GB SSD/1Gbps不限流量/月付$2.5/美国10Gbps高防服务器/高达3.5TBDDos保护$149.99元/月

Advinservers,国外商家,公司位于新泽西州,似乎刚刚新成立不久,主要提供美国和欧洲地区VPS和独立服务器业务等。现在有几款产品优惠,高达7.5TB的存储VPS和高达3.5TBDDoS保护的美国纽约高防服务器,性价比非常不错,有兴趣的可以关注一下,并且支持Paypal付款。官方网站点击直达官方网站促销产品第一款VPS为预购,预计8月1日交付。CPU为英特尔至强 CPU(X 或 E5)。官方...

static的作用为你推荐
行业关键词企业应如何做关键词排名网站联盟网盟跟b2b平台有什么区别网站联盟怎样进入网站联盟显卡温度多少正常显卡温度多少算正常?ps抠图技巧ps中怎么抠图?今日热点怎么删除youku今日热点怎么卸载qq空间装扮qq空间的装扮空间在哪?如何建立一个网站要建立一个网站怎么弄啊?硬盘人什么叫“软盘人”和“硬盘人”?神雕侠侣礼包大全神雕侠侣手游华山论剑礼包有什么 怎么领取
中文域名注册 天津服务器租赁 三级域名网站 云网数据 512m 密码泄露 贵州电信宽带测速 火车票抢票攻略 空间服务商 韩国网名大全 京东商城双十一活动 40g硬盘 91vps 129邮箱 shopex主机 免费私人服务器 环聊 阿里云官方网站 江苏徐州移动 godaddy空间 更多