加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Java的Static使用说明

发布时间:2021-11-21 21:35:52 所属栏目:教程 来源:互联网
导读:一、开篇 首先用一个例子开始我们今天的介绍。 定义一个TestStaticClass类如下: public class TestStaticClass { private static int a; private int b = 0; public TestStaticClass() { a++; b++; } public static void testRun() { System.out.println(run
一、开篇
 
首先用一个例子开始我们今天的介绍。
 
定义一个TestStaticClass类如下:
 
public class TestStaticClass {
 
 private static int a;
 private int b = 0;
 
 public TestStaticClass() {
  a++;
  b++;
 }
 
 public static void testRun() {
  System.out.println("run TestStaticClass.testRun");
 }
 
 public String toString() {
  return "a = " + a + ", b = " + b;
 }
}
 
定义MainClass类如下:
 
public class MainClass {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println(new TestStaticClass());
  System.out.println(new TestStaticClass());
 }
}
 
运行的结果如下:
 
a = 1, b = 1
 
a = 2, b = 1
 
为什么会这样呢?这就是Static的作用之一,如果使用static来修饰一个变量,那么该变量就属于该类所有,而不再属于该类的某一实例,被类的所有实例共享。因为Java在加载该类的时候为static变量在内存中分配了一个固定的内存空间来存储,只要TestStaticClass类存在,那么该变量a所代表的地址空间就不会消失。
 
在上面的实例中,每一次新建一个TestStaticClass类,都会修改a所在的地址空间的内容,所以就会导致了a和b的值不一致的情况。
 
除了在实例中用Static来修饰变量外,还可以用来修饰修饰函数和代码块。这些在本文中都会详细的介绍,但是在这之前,必须记得Static的特性:固定。这个不仅仅指固定的地址,还包括固定的大小。使用static修饰的变量等,在编译时就为这些变量分配了空间。
 
linux

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读