在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。

Java把内存分为栈内存和堆内存,

栈内存用来存放一些基本类型的变量、数组和对象的引用,

堆内存主要存放一些对象。

public class User {
private static int userNumber = 0 ; public User(){
userNumber ++;
} public static void main(String[] args) {
User user1 = new User();
User user2 = new User(); System.out.println("user1 userNumber:" + User.userNumber);
System.out.println("user2 userNumber:" + User.userNumber);
}
}
------------
Output:
user1 userNumber:2
user2 userNumber:2

  

2.1、static变量

static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:

1.静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

2.实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。

===所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

2.2、static方法

static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于他在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。

Static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

2.3、static代码块

被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。

最新文章

  1. VS工具如何新建筛选器
  2. 如何在CentOS 7上安装EPEL源
  3. Nginx配置(日志服务器中关于日志的产生)
  4. ABAP QUERY报表添加双击事件
  5. ServiceStack.Redis 之 IRedisTypedClient 04_转
  6. Codeforces Round #337 (Div. 2) B. Vika and Squares 贪心
  7. Jqgrid demo-史上最强大,没有之一
  8. iOS设计模式之生成器
  9. Android GUI Building Blocks
  10. 在Linux中创建静态库和动态库 (转)
  11. c# winform 引用sqlite.dll 运行报错解决方法
  12. 使用Idea作为go的IDE
  13. The Linux Storage Stack Diagram 内核 4.0 版的 I/O 栈
  14. (转)什么是P问题、NP问题和NPC问题
  15. Caused by: java.net.SocketException: Broken pipe
  16. 2_成员函数(Member Functions)
  17. Editorial Board 、co-editor、ediitor、editor-in-chief的区别
  18. Linux命令rz
  19. android 获取对权限的选择
  20. Visual Studio下运行PowerShell脚本自增小版本号并发布到Nuget服务器上

热门文章

  1. 饿了么ui添加事件
  2. 基于mybatis-generator代码生成工具改(链式方法实体版)
  3. 【ajax+php】动态展示4级单位(省、市、县、镇)
  4. (五)Lucene——中文分词器
  5. 学习-短信的上行(MO)和下行(MT)详解
  6. Java成员变量与局部变量同名
  7. MDK5.00中*** error 65: access violation at 0xFFFFFFFC : no 'write' permission的一种解决方法
  8. js 获取距离顶部的相对高度
  9. django学习笔记【002】创建第一个django app
  10. c++ 头文件循环引用解法