java static的作用
static是什么
static是java中的关键字,static表示”全局”、“静态”的意思,用来修饰成员变量和成员方法,定义的变量,我们通常将用static修饰的成员称为静态变量,静态方法或者静态成员。
static的作用
- 被static修饰的成员变量和成员方法独立于该类的任何对象
- static修饰的成员变量和成员方法可以直接通过类名来访问
对上面4条作用的解释并举例说明
1、被static修饰的成员变量和成员方法独立于该类的任何对象
在jvm虚拟机中,被static修饰的成员都存储在方法区中。
方法区:它也叫“静态区”,被所有的线程共享,它包含了所有的static变量。
而不被static修饰的成员我们称为普通变量,这些变量存储于jvm的堆中。
方法区中存放的静态变量不会随着对象的消失而消失,只会在程序结束之后才会被回收。
堆:所有创建的对象都存储在里面,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。
举个例子
package staticProblem;public class Common {private static String staticStr;private String commonStr;public void input(){System.out.println(staticStr + " " + commonStr);}public static void main(String[] args) {Common.staticStr = "张";Common common1 = new Common();common1.commonStr = "三";common1.input();Common common2 = new Common();common2.input(); }
}
运行结果如下:
张 三
张 null
从上面可以看到:
静态变量staticStr并不会随着对象的消失而消失,他还是会存在,而普通变量commonStr存放在堆中,会重新加载。
2、static修饰的成员变量和成员方法可以直接通过类名来访问
举个例子就明白了
代码如下
package staticProblem;public class Common {private static String staticStr;private String commonStr;public void input(){System.out.println(staticStr + " " + commonStr);}public static void staticInput(){System.out.println(staticStr);}public static void main(String[] args) {System.out.println("静态方法:");Common.staticStr = "张";Common.staticInput();System.out.println("------------------------");System.out.println("普通方法:");Common common = new Common();common.input();}
}
运行结果:
静态方法:
张
------------------------
普通方法:
张 null
由结果可知:
加上static关键字的方法成员变量不需要再经过实例化new,这样的操作方便了许多,且性能上也提高了。
总结:
静态变量就像是外面的情侣套房,情侣们给钱就能入住,所使用的床,浴池等等都是一样的,而成员变量就像是一对对进来入住的情侣,他们所带来的与所产生的东西都是不同的,这些物品会随着他们的消失而消失。但是套房里的物品并不会因为他们的离开而消失,而是随着这家酒店宾馆的倒闭而消失。
北京市需要租房或者转租房子,找舍友合租的都可以关注这个公众号哦,可帮忙发布房源信息,上面也有uu发布的转租信息呢。
java static的作用相关推荐
- java static 块作用_java static块有什么具体的作用和注意事项?说具体点
展开全部 在Java语言中,static表示"全局"或者"静态"的62616964757a686964616fe4b893e5b19e3133333035346 ...
- Java中static的作用
Java中static的作用 请先看下面这段程序: public class Hello{ public static void main(String[] args){ //(1) System.o ...
- java static关键字的作用是什么_java中的static关键字
一.static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概念,在Java中static表示"全局"或者 ...
- java中的静态变量的作用域_详解JAVA中static的作用
1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...
- java序列化的作用
java序列化的作用 1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法 ...
- const 和 static 的作用
static的作用: 1.先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源 ...
- 【Java学习笔记之一】java关键字及作用
Java关键字及其作用 一. 总览: 1 访问控制 2 private protected public 3 4 类,方法和变量修饰符 5 abstract class extends final i ...
- java extern的作用_学习笔记之20-static和extern关键字2-对变量的作用
上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有 ...
- 为什么java要你写static,java static关键字理解
文章大纲: 1.为什么static会有这样的效果? 2.static的使用 3.static误区 4.static面试题 static的魔法效果是: 被static关键字修饰的方法或者变量不需要依赖于 ...
最新文章
- 如何从用户体验的角度去做一个网站的页面设计
- js 获取日期并格式化
- 如何设计日志系统_架构 - 如何设计一个百亿级日志系统
- jQuery-DOM操作
- iOS学习笔记11 多线程入门
- python+办公自动化_Python办公自动化之操作excel
- 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
- python安装详细步骤mac_mac如何安装python3
- 保存会话数据——session学习
- 【vuejs面试题】务必熟知的vuejs面试题「务必收藏」
- 用python 打开qq自动输入账号密码登陆 (python3 案例1)
- 2019新版c智播客h马程序员H5全栈工程师培训项目实战
- oracle恢复删除的表
- Domoticz-Dummy(虚拟传感器)
- python爬取桌面壁纸(初学者),一看就会
- 关于ASP使用服务器采集文章及图片
- linux bios密码设置时间,linux忘记root密码及时间设定
- 【单片机】单片机课程设计(测温打铃)附完整代码和电路图
- Fliqlo屏/保mac使用方法
- 最新android 电脑系统,android l操作系统|android l操作系统最新版 - 系统天堂
热门文章
- 除了感动还是感动 - 最全统计地震捐款企业录,总额逾8.5亿
- 龙抬头——不想当张小龙的程序员不是好程序员
- frp工具实现外网代理访问
- java配置代理服务器访问外网
- QT 项目 实现基于TCP的文件服务器/客户端,支持上传和下载
- LaTeX学习经验分享
- AsyncDisplaykit(Texture)技术分享
- win10无法防问其他计算机没有权限,雨林木风win10系统局域网共享无法访问提示“您可能没有权限使用网络资源”的方案...
- 利用Intent启动Activity
- 6中结构型设计模式的对比理解(Composite组合模式,Proxy代理模式,Flyweight享元模式,Facade门面模式,Bridge桥接模式,Decorator装饰器模式)