如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
格式: 类名.变量名;
推荐使用是类名直接访问静态的成员。
注意:
1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的才使用static修饰 。
static修饰成员变量的应用场景
如果一个数据需要被所有对象共享使用的时候,这时候即可使用static修饰。
例:描述一下学生类。 都是中国人....
目前存在的问题: 所有的学生都是中国 的,有n个学生就会有n份中国的 数据存内存中,这样子会浪费内存。
解决方案: 把“中国”这个数据移动 到数据共享区中,共享这个数据给所有的Student对象使用即可。
如何才能把这个数据移动 到数据共享区中共享呢?只需要使用static修饰该数据即可。
静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。
class Student{
String name;
//使用了static修饰country,那么这时候country就是一个共享的数据。
static String country = "中国"; //国籍
//构造函数
public Student(String name){
this.name = name;
}
}
class Demo9 {
public static void main(String[] args)
{
Student s1 = new Student("张三");
Student s2 = new Student("李四");
s1.country = "日本省";
System.out.println("姓名:"+s1.name+" 国籍:"+ s1.country); // 中国
System.out.println("姓名:"+s2.name+" 国籍:"+ s2.country); // 日本省
}
}
1. 静态函数是可以调用类名或者对象进行调用的,而非静态函数只能使用对象进行调用。
2. 静态的函数可以直接访问静态的成员,但是不能直接访问非静态的成员。静态的成员变量数据是优先于对象存在的。
静态函数不能访问非静态的成员?
静态函数只要存在有对象,那么也可以访问非静态的数据。只是不能直接访问而已。class Student{
String name; //名字
static String country = "中国"; //国籍
//静态代码块 :静态代码块是在Student.class文件加载到内存的时候就马上执行的。
static{
System.out.println("静态代码块执行了...");
}
//构造函数
public Student(String name){
this.name = name;
}
//非静态的成员函数
public void study(){
System.out.println("好好学习"+this);
}
//静态函数
public static void sleep(){ //静态方法与非静态方法的字节码文件是同时存在内存中 的。 只是静态的成员变量数据是优先于对象存在而已。
Student s= new Student("张三");
System.out.println(s.name+"呼呼大睡...");
}
}
class Demo2 {
public static void main(String[] args) {
Student.sleep();
// Student s = new Student("张三");
}
}
1 随着类的加载而加载,静态会随着类的加载而加载,随着类的消失而消失。说明它的生命周期很长。
2 优先于对象存在。-->静态是先存在,对象是后存在。
3 被所有实例(对象)所共享。
4 可以直接被类名调用
文章浏览阅读6.9k次。这三个都是文件的系统格式1>Linux kernel自2.6.28开始正式支持新的文件系统Ext4;2>Ext3对Ext2只是增加了一个日志功能而已,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,提供更加的性能和可靠性,更丰富的功能,更大的文件系统和更大的文件。(Ext3支持最大16TB文件系统和最大2TB文件,Ext4分别支持1EB的文件系统,和16TB的文..._ext2 ext3 ext4区别
文章浏览阅读4.2k次。FFmpeg WAV文件转换_ffmpeg mp4转wav
文章浏览阅读211次。A. Defect-stream and Value-stream B. Information-flow and information-owner C. Value-added and non value-added D. Sigma-ranked and Theta-prioritized 哈利的敏捷团队刚完成了其中一个产品的价值流程图。_根据敏捷宣言以下哪一项属于敏捷原则
文章浏览阅读2.5k次。“我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了。” “APP版本迭代更新,都是企业的一道难关,没有一个一劳永逸的解决方式吗?” “一个Web开发者如何能快速适应移动互联网时代,用HTML5开发出一个APP呢?” “安卓、IOS双平台同时开发,程序员都累死在加班的路上了……”针对行业痛点,国内外涌现出众多APP开发工具,开发者只要有相..._开发app 开发工具
文章浏览阅读1.2k次。试过了很多帖子的办法,各种安装都不行这个亲测可以: yum install -y curl 或者 sudo yum -y install curl_centos cur command not found
文章浏览阅读8.1k次。安装minikube minikube安装包下载 下载minikube-linux-amd64 执行命令安装chmod +x minikube && sudo mv minikube /usr/local/bin/查看版本以及是否安装成功minikube version用指定镜像地址启动minikube start --registry-mirr...
文章浏览阅读2.2k次,点赞8次,收藏3次。Unity中的UGUI源码解析之事件系统(6)-RayCaster(下)接上一篇文章, 继续介绍投射器.GraphicRaycasterGraphicRaycaster继承于BaseRaycaster, 是BaseRaycaster具体实现类, 是针对UGUI元素的投射器, 需要对象上同时存在Canvas组件.值得一提的是, GraphicRaycaster和PhysicsRaycaster还有Physics2DRaycaster存放的目录不同, 后面两个放在EventSystem目录下, 而Gr_physics raycaster
文章浏览阅读900次。触摸屏子系统是通过input子系统来实现,对应设备节点 /dev/input/eventn,熟悉套路后重点放在硬件程序的编写一、内核自带触摸屏驱动S3c2410_ts的简单分析S3c2410_ts.c (drivers\input\touchscreen) 内核自带三星的触摸屏驱动(1)入口函数:/*注册一个平台driver*/static int __init s3c2410ts_init(void){// init_MUTEX(&gADClock); _12c接口 触摸屏
文章浏览阅读832次。http://topic.csdn.net/u/20080219/21/0B5F0688-0651-45C4-AA99-7C19A0C2C900.html转载于:https://www.cnblogs.com/aoyihuashao/archive/2009/12/14/1623694.html_vc 子文档最大化时闪
文章浏览阅读393次。前言 众所周知,人类社会科技发展和新机器的发明,常常伴随着商业模式的变革。新的模式常常伴随着旧的模式的淘汰,或者并存,这可以让全社会的生产力和生活质量日渐增高。 随着新机器的层出不穷,每隔一段时间就出现很多人担心会出现所谓的“机器取代人类工作”的谬论,不过..._纺织机刚发明时的担忧
文章浏览阅读138次。1. 认识HashMapHashMap是用来存储key-value键值对的数据结构。当我们创建HashMap的时候,如果不指定任何参数,它会为我们创建一个初始容量为16,负载因子为0.75的HashMap (load factor,记录数/数组长度)。当loadFactor达到0.75或指定值的时候,HashMap的总容量自动扩展一倍。它的底层采用Entry数组来保存所有的key-val..._hashtable不使用的原因?
文章浏览阅读2.1k次,点赞5次,收藏6次。因开发要求需要将layui table中的中文组件部分改为英文,其它地方修改layui.js文件即可,但是跳页部分缺没找到对应中文部分一开始想到js二次修改html的方式:var html = document.querySelectorAll('.layui-laypage-skip'); html[0].innerHTML = 'Page<input type="text" min="1" value="1" class="layui-input"><bu_laypage中英文切换