Java Basic Notes——static修饰符

1.static

在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?

在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制)。

static 是类方法,只用加载一次,但一直会占用内存。多了些资源消耗;而实例方法(非static)需要加载多次,但不会一直占用内存。少些资源消耗。一般来说, 在程序里面,一些使用频率高的方法就用static 方法、使用频率低的则用实例方法。

如果所有的方法都变成了静态方法的话,那Java语言就退化成过程语言了,因此绝对是不可以的。

典型的静态方法:

1 public static void main(String... args) {  
2     // ...  
3 }  

除了上面的main之外,还有,比如对类本身的一些操作,如:使用类的计数,或者工具类方法(Math.sin(), Thread.sleep())等等。 

package test;

public class StaticTest {
    
    private static String s1; 
    private String s2; 
    
    public static void main(String[] args) {
         s1 = "Hello, static";    
         System.out.println(s1);
         StaticTest d = new StaticTest();  
         d.s2 = "Hello, non-static!";    
         System.out.println(s2);//这里会报错,提示把s2转换为static
       System.out.println(d.s2);//这个可以打印,实例方法必须通过对象引用

}

}

 

posted @ 2015-01-15 15:31  Captain_Lucky  阅读(157)  评论(0编辑  收藏  举报