博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二十八)static关键字
阅读量:7041 次
发布时间:2019-06-28

本文共 1185 字,大约阅读时间需要 3 分钟。

/*
*    static 静态的
*    static修饰的成员变量的特点
*    1.static修饰的成员变量是该类的所有对象共享
*    2.static修饰的成员变量是随着类的加载就在静态区中开辟内存了,所以有限与非静态成员开辟内存
*    3.static修饰的成员变量可以通过类名直接访问
*    静态成员变量和非静态成员变量的区别?
*    1.存储的数据
*    静态成员变量存储的是所有对象共享的数据
*    非静态成员变量存储的是每个对象特有的数据
*    存储的位置
*    静态成员便令是随着类的加载在方法区中的静态区开辟内存
*    非静态成员变量是随着对象的创建,在堆中开辟内存
*    调用方式
*    静态成员变量可以通过类名访问,也可以通过对象访问
*    非静态成员变量可以通过对象访问
*    生命周期
*    静态成员变量随着类的加载就在方法区中的静态区出现,整个程序执行玩消失。
*    非静态成员变量随着对象的创建在堆中出现,随着对象被垃圾回收机制回收,而消失。
*/
总结:拥有static的静态成员会在程序的执行的时候优先开始执行,且会在程序执行结束后消失,拥有全局都可以访问到的特性。可以直接通过类名调用,也可以通过对象调用。静态资源中无法访问非静态资源,因为在程序的加载顺序中,静态资源优于非静态资源加载,在静态资源中引用非静态资源时,非静态资源不存在,或报错,静态资源无法从上下文中引入非静态 变量 name,但是可以引用静态成员的变量。
 
什么时候把成员变量修饰为static?
当成员变量需要被类的所有对象访问时
什么时候把成员函数修饰为static?
当成员函数中没有用到所属类中的任何的非静态成员时
class Student {    String name;//实例成员变量    static String country = "CN";//类变量    public void show() {//实例成员函数        System.out.println(name + " " + country);    }}    class Demo9 {    public static void main(String[] args) {        Student stu = new Student();        stu.name = "Jack";        stu.show();        Student stu2 = new Student();        stu2.name = "Tom";        stu2.show();        System.out.println(Student.country);    }}

转载于:https://www.cnblogs.com/bgwhite/p/9375504.html

你可能感兴趣的文章
数据库排序规则的问题
查看>>
虚拟局域网VLAN
查看>>
我的友情链接
查看>>
Win7系统开机神速
查看>>
jenkins中Check-out Strategy的各选项测试
查看>>
基于lifekeeper+windows 2000 + sqlserver2000 + 镜像磁盘陈列的双机热备
查看>>
Linux中vi和vim
查看>>
产生随机数,测试快排
查看>>
vSphere 5.0系列之四 Openfiler存储系统的配置
查看>>
Linux上的任务计划--9.5作业
查看>>
如何登陆Tomcat的控制台(Web管理界面)
查看>>
[原创]状态值在数据库中的检索
查看>>
JavaWeb01-HTML篇笔记(四)
查看>>
一个超级好用的nmon扩展工具,高大上的监控linux资源
查看>>
spring cloud 配置zuul实用
查看>>
玩转Android monkey之多参数实战
查看>>
WebApi与MVC Route 问题整理
查看>>
Exported activity does not require permission
查看>>
zencart批量设置热卖商品 best seller、点击最高最受欢迎产品 most popular
查看>>
怎么把某服务加入到防火墙服务中,直接让防火墙通过其请求
查看>>