是静态修饰符什么叫静态修饰符呢大家都知道在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的而所谓静态就是指在编译后所分配的内存会一直存在直到程序退出内存才会释放这个空间也就是只要程序在运行那么这块内存就会一直存在。这样做有什么意义呢
在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()方法的问题,我也懒得想啦. . . . .
其实楼上的各位说得已经很清楚了,我只是更形象得告诉你,好理解一点.
捷锐数据官网商家介绍捷锐数据怎么样?捷锐数据好不好?捷锐数据是成立于2018年一家国人IDC商家,早期其主营虚拟主机CDN,现在主要有香港云服、国内物理机、腾讯轻量云代理、阿里轻量云代理,自营香港为CN2+BGP线路,采用KVM虚拟化而且单IP提供10G流量清洗并且免费配备天机盾可达到屏蔽UDP以及无视CC效果。这次捷锐数据给大家带来的活动是香港云促销,总共放量40台点击进入捷锐数据官网优惠活动内...
百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...
由于行业需求和自媒体的倾向问题,对于我们个人站长建站的方向还是有一些需要改变的。传统的个人网站建站内容方向可能会因为自媒体的分流导致个人网站很多行业不再成为流量的主导。于是我们很多个人网站都在想办法进行重新更换行业,包括前几天也有和网友在考虑是不是换个其他行业做做。这不有重新注册域名重新更换。鉴于快速上手的考虑还是采用香港服务器,这不腾讯云和阿里云早已不是新账户,考虑到新注册UCLOUD账户还算比...