Java静态域与静态方法
Java静态域与静态方法
@(JAVA)[java]
在Java中,静态修饰符static只能用于类的成员变量与成员方法。
(一)静态域
1、静态变量
如果将某个变量定义为static,那么这个类及其所有对象共享同一个值,它在内存中只存在一份,严格来说是在每个JVM中只存在一份。
比如:
public class Employee{private int id;private static int nextId = 1;
}
每个Employee对象都有一个id的拷贝,而且它们的值并不相同。但所有的Employee共享同一个nextId的值,它在JVM中只存在一份。
2、静态常量
其实静态变量使用得相对较少,它一般会结合一些设计模式使用(如单例)。但静态常量却使用得非常的多,如Math类中的:
public static final double PI = 3.1415926538979323864;
另一个使用得非常多的是System.out,它在System类中被声明:
public static final PrintStream out = ...
(二)静态方法
静态方法不需要先实例化对象,再进行调用,面是可以直接使用类名进行调用。常用于一些工具类(utils等),如Math类中的很多方法:
Math.pow(5,2);
静态方法不能操作对象,也不能在静态方法中访问实例域(但可访问静态域)。
在以下2种情况使用静态方法:
* 【工具类】一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(如Math.pow())
* 一个方法只需要访问类的静态域(如Employee.geetNextId())
(三)静态成员类
请参考《effective java》第24条
(三)小结
- 静态域在内存中只存在一份,所有对象共享。静态常量更觉,静态变量更多与一些设计模式结合使用。
- 静态方法更多用于工具类,或者是只访问类的静态域的情形。
Java静态域与静态方法相关推荐
- Java 静态变量,静态方法,静态常量(java static 关键字)
Java 静态变量,静态方法,静态常量 就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...
- java实例方法,Java实例和静态方法
本篇文章帮大家学习java实例和静态方法,包含了java实例和静态方法使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 类可以有两种类型的方法:实例方法和类方法. 实例方法 ...
- Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用父类静态成员/方法
只能通过当前类名NioUtil调用静态成员 package com.zxl.scalaimport cn.hutool.core.io.{FileUtil, IoUtil, NioUtil} impo ...
- java反射 修改静态方法的值 setAccessible
转载自 java反射 修改静态方法的值 setAccessible 这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目 static void change(String str){str=& ...
- 为什么Java里面的静态方法不能是抽象的
为什么Java里面的静态方法不能是抽象的? 问题是为什么Java里面不能定义一个抽象的静态方法?例如: abstract class foo {abstract void bar( ); // < ...
- [转载] Java中的静态方法不能被子类重写
参考链接: 可以在Java中重载或重写静态方法吗 Java中的静态方法不能被子类重写 特点:静态方法属于类的方法,也属于对象的方法,但是静态方法随类的存在. 结论:Java中的静态方法不能被子类重写, ...
- zbb20180913 java synchronized同步静态方法和同步非静态方法的异同
java synchronized同步静态方法和同步非静态方法的异同 所有的非静态同步方法用的都是同一把锁--实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步 ...
- Java成员方法与静态方法的详解
Java成员方法与静态方法的详解 成员方法:成员方法是在类中定义的,成员方法是创建对象以后才分配内存,每个对象都各有一份.通过对象名进行访问. 静态方法:静态方法是在类中定义的,在创建对象前分配内存, ...
- Java 静态类、静态方法和静态变量
转载自Java 静态类.静态方法和静态变量 Java 静态类.静态方法和静态变量 static 是Java中的一个关键字,我们不能声明普通外层类或者包为静态的.static用于下面四种情况. 1.静态 ...
最新文章
- 【C#】【Log】Common.Logging.MultipleLogger及ETWLoggerd研究
- 常考数据结构与算法:实现二叉树先序,中序和后序遍历
- BZOJ3110: [Zjoi2013]K大数查询
- LeetCode 1912. 设计电影租借系统(map+set)
- 基于JAVA+SpringMVC+Mybatis+MYSQL的会员管理系统
- nginx历史版本下载链接
- oracle 11i 供应商api,Oracle EBS AP 供应商API
- Javassist框架研究
- 【历史上的今天】1 月 14 日:IBM 计算机先驱诞生;Windows 7 寿终正寝;诺基亚收购阿尔卡特
- TwinCAT 3 使用XML-server
- 做自媒体赚钱,分享一个完整的影视剪辑的基本流程
- 大学生搜题软件哪个好?2020搜题软件排行榜
- 1010: 求圆的周长和面积 ZZULIOJ
- LM2596,LM2576,LM2575的差别
- openlayers 展示gif的2种方案
- Python虽然很火,为啥找工作这么难?
- 同样诞生于顶尖大学,一个市值千亿,一个曾经仅次腾讯百度,如今却。。。...
- Thinkphp内核虚拟资源素材源码交易下载平台网站源码
- 细说嵌入式系统下的驱动程序设计
- 【饭谈】计算机专业刚毕业该何去何从?博主的亲身经历告诉你....
热门文章
- Failed to start SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularl
- 集群(三)——haproxy+nginx搭建web集群
- C与java通讯小结
- java并发编程--一道经典多线程题的2种解法
- 效率 每秒_每秒看懂超过5.3亿张图片!异构计算是如何发挥AI效率的?
- axure如何实现跳转_Axure教程:网易云音乐首页原型设计
- 如何用python做数据分析统计服_使用python实现数据分析
- php 怎么执行unoconv,web执行php调用exec(unoconv)命令失败解决方案
- mysql查询以文件形式导出_mysql以文件形式导入导出整个数据库
- Linux qt 更新,Qt 5.15 Beta 2 发布,Qt 6之前的最后一个重大更新