zoukankan      html  css  js  c++  java
  • java中static的用法

    static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。拿以下程序为例

    class Value{
    static int c=0;
    Value(){
    c=15;
    }
    Value(int i){
    c=i;
    }
    static void inc(){
    c++;
    }
    }
    class Count{
    public static void prt(String s){
    System.out.println(s);
    }
    Value v=new Value(10);
    static Value v1,v2;
    static{
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v1=new Value(27);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v2=new Value(15);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    }

    public static void main(String[] args){
    Count ct=new Count();
    prt("ct.c="+ct.v.c);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    prt("ct.c="+ct.v.c);
    }
    }

    运行结果如下:

    v1.c=0 v2.c=0
    v1.c=27 v2.c=27
    v1.c=15 v2.c=15
    ct.c=10
    v1.c=10 v2.c=10
    v1.c=11 v2.c=11
    ct.c=11

    这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。非静态变量不是本文的主题,在此不做详细讨论,请参考Think in Java中的讲解。
  • 相关阅读:
    JAVA中变量的初始化
    取得301转向后的地址
    history for html5
    php traits 介绍
    android 笔记
    C posix 笔记
    笔记
    C 常用库
    cocos2dx:利用CCSpriteBatchNode优化渲染效率
    C实现将指定秒数转化为时:分:秒格式
  • 原文地址:https://www.cnblogs.com/yigerendehaibian/p/2777413.html
Copyright © 2011-2022 走看看