静态变量

静态变量是全局变量,让每个函数都可以使用,举个例子,static double PI=3.14; 
哪么在接下来的运算中无论那里都可以直接调用PI,不用在次定义,当然这只是个小作用,在接下来的学习中,你会了解到,静态代码块的重要作用,用初始化一些变量或者函数,static{},静态代码块是在类加载的时候就被加载进内存中。你如果是刚开始学的,哪么你先记住第一个就可以了,在往后的学习中你就会慢慢了解到,当然我也是说了一点而已,你不用着急你不会,因为学java就是这样的,一开始都不懂,老师怎么说都不懂,看书也不懂,但是一旦学完了,就恍然大悟,啊原来以前的那些都是这样的,因为java的连贯性非常的强,学习后面的知识的时候就会用到以前的知识,变量是个简单的知识点,重要的是继承封装多态,这3大件。学的时候要认真啊。哪么我告诉你一个小秘密,什么时候3大件才是学明白了呢,哪么就是你知道了自己从来没见过人,也没见过狗,我不是人,我是人中的一个对象,哪么你就大功告成了。希望你学习进步。谢谢!
学继承多态那个地方的时候老有意思了,你期待把,我学的时候经常都是乐了一节课。不是猫叫就是狗叫的,要不就是猫睡觉狗睡觉,人吃,等等啦。哈哈!


 ①java类的成员变量有俩种:
        一种是被static关键字修饰的变量,叫类变量或者静态变量
        另一种没有static修饰,为成员变量

    ②通俗点说:
        类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
        而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

注意点:
    1.JAVA中初始化的顺序:
        加载类;
        静态变量初始化;
        静态块;【其只能调度静态的,不能调度非静态的】
        成员变量;
        构造方法; 

    2.为显示静态块的优先级,我来显示一个没有Main方法的程序,javac后其是没有任何错误的。
public class Test {
    static {
        System.out.println("static ");
        System.exit(0);
    }
}


public class MemoryTest {
static class Data{    
         private int week;    
         private String name;    
         Data(int i, String s){    
             week = i;    
             name = s;    
         }    
     }    
         
     Data weeks[] = {    
             new Data(1,"monday"),    
             new Data(2,"Tuesday"),    
             new Data(3,"Wednesday"),    
             new Data(4,"Thursday"),    
             new Data(5,"Friday"),    
             new Data(6,"Saturday"),    
             new Data(7,"Sunday")    
     };    
         
     public static void main(String[] args) {    
         final int N = 20000;    
         MemoryTest test = null;    
         for (int i = 0; i <=N; i++) {    
            test = new MemoryTest();    
         }    
         System.out.println(test.weeks.length);    
     }    
}




public class TestStaticVariable {
 
      static class Data{    
          private int week;    
          private String name;    
          Data(int i, String s){    
              week = i;    
              name = s;    
          }    
      }    
         
     static Data weeks[] = {    
             new Data(1,"monday"),    
             new Data(2,"Tuesday"),    
             new Data(3,"Wednesday"),    
             new Data(4,"Thursday"),    
             new Data(5,"Friday"),    
             new Data(6,"Saturday"),    
             new Data(7,"Sunday")    
     };    
         
     public static void main(String[] args) {    
         final int N = 20000;    
         TestStaticVariable test = null;    
         for (int i = 0; i <=N; i++) {    
             test = new TestStaticVariable();    
         }    
         System.out.println(test.weeks.length);    
     }    
 


}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值