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条

(三)小结

  1. 静态域在内存中只存在一份,所有对象共享。静态常量更觉,静态变量更多与一些设计模式结合使用。
  2. 静态方法更多用于工具类,或者是只访问类的静态域的情形。

Java静态域与静态方法相关推荐

  1. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  2. java实例方法,Java实例和静态方法

    本篇文章帮大家学习java实例和静态方法,包含了java实例和静态方法使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 类可以有两种类型的方法:实例方法和类方法. 实例方法 ...

  3. Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用父类静态成员/方法

    只能通过当前类名NioUtil调用静态成员 package com.zxl.scalaimport cn.hutool.core.io.{FileUtil, IoUtil, NioUtil} impo ...

  4. java反射 修改静态方法的值 setAccessible

    转载自 java反射 修改静态方法的值 setAccessible 这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目 static void change(String str){str=& ...

  5. 为什么Java里面的静态方法不能是抽象的

    为什么Java里面的静态方法不能是抽象的? 问题是为什么Java里面不能定义一个抽象的静态方法?例如: abstract class foo {abstract void bar( ); // < ...

  6. [转载] Java中的静态方法不能被子类重写

    参考链接: 可以在Java中重载或重写静态方法吗 Java中的静态方法不能被子类重写 特点:静态方法属于类的方法,也属于对象的方法,但是静态方法随类的存在. 结论:Java中的静态方法不能被子类重写, ...

  7. zbb20180913 java synchronized同步静态方法和同步非静态方法的异同

    java synchronized同步静态方法和同步非静态方法的异同 所有的非静态同步方法用的都是同一把锁--实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步 ...

  8. Java成员方法与静态方法的详解

    Java成员方法与静态方法的详解 成员方法:成员方法是在类中定义的,成员方法是创建对象以后才分配内存,每个对象都各有一份.通过对象名进行访问. 静态方法:静态方法是在类中定义的,在创建对象前分配内存, ...

  9. Java 静态类、静态方法和静态变量

    转载自Java 静态类.静态方法和静态变量 Java 静态类.静态方法和静态变量 static 是Java中的一个关键字,我们不能声明普通外层类或者包为静态的.static用于下面四种情况. 1.静态 ...

最新文章

  1. 【C#】【Log】Common.Logging.MultipleLogger及ETWLoggerd研究
  2. 常考数据结构与算法:实现二叉树先序,中序和后序遍历
  3. BZOJ3110: [Zjoi2013]K大数查询
  4. LeetCode 1912. 设计电影租借系统(map+set)
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的会员管理系统
  6. nginx历史版本下载链接
  7. oracle 11i 供应商api,Oracle EBS AP 供应商API
  8. Javassist框架研究
  9. 【历史上的今天】1 月 14 日:IBM 计算机先驱诞生;Windows 7 寿终正寝;诺基亚收购阿尔卡特
  10. TwinCAT 3 使用XML-server
  11. 做自媒体赚钱,分享一个完整的影视剪辑的基本流程
  12. 大学生搜题软件哪个好?2020搜题软件排行榜
  13. 1010: 求圆的周长和面积 ZZULIOJ
  14. LM2596,LM2576,LM2575的差别
  15. openlayers 展示gif的2种方案
  16. Python虽然很火,为啥找工作这么难?
  17. 同样诞生于顶尖大学,一个市值千亿,一个曾经仅次腾讯百度,如今却。。。...
  18. Thinkphp内核虚拟资源素材源码交易下载平台网站源码
  19. 细说嵌入式系统下的驱动程序设计
  20. 【饭谈】计算机专业刚毕业该何去何从?博主的亲身经历告诉你....

热门文章

  1. Failed to start SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularl
  2. 集群(三)——haproxy+nginx搭建web集群
  3. C与java通讯小结
  4. java并发编程--一道经典多线程题的2种解法
  5. 效率 每秒_每秒看懂超过5.3亿张图片!异构计算是如何发挥AI效率的?
  6. axure如何实现跳转_Axure教程:网易云音乐首页原型设计
  7. 如何用python做数据分析统计服_使用python实现数据分析
  8. php 怎么执行unoconv,web执行php调用exec(unoconv)命令失败解决方案
  9. mysql查询以文件形式导出_mysql以文件形式导入导出整个数据库
  10. Linux qt 更新,Qt 5.15 Beta 2 发布,Qt 6之前的最后一个重大更新