您现在的位置是:首页 >

boolean的用法举例 Java中static用法简谈

火烧 2021-10-10 15:03:20 1046
Java中 tatic用法简谈   请先看下面这段程序     u lic cla Hello{     u lic tatic void mai Stri g[] arg { //       Sy

Java中static用法简谈  

boolean的用法举例 Java中static用法简谈
  请先看下面这段程序    public class Hello{     public static void main(String[] args){ //( )      System out println( Hello world! );  //( )     }    }  看过这段程序 对于大多数学过Java 的从来说 都不陌生 即使没有学过Java 而学过其它的高  级语言 例如C 那你也应该能看懂这段代码的意思 它只是简单的输出 Hello world 一点  别的用处都没有 然而 它却展示了static关键字的主要用法   在 处 我们定义了一个静态的方法名为main 这就意味着告诉Java编译器 我这个方法不需要创建一个此类的对象即可使用 你还得你是怎么运行这个程序吗?一般 我们都是在命令行下 打入如下的命令(加下划线为手动输入)   javac Hello java  java Hello  Hello world!  这就是你运行的过程 第一行用来编译Hello java这个文件 执行完后 如果你查看当前 会发现多了一个Hello class文件 那就是第一行产生的Java二进制字节码 第二行就是执行一个Java程序的最普遍做法 执行结果如你所料 在 中 你可能会想 为什么要这样才能输出 好 我们来分解一下这条语句 (如果没有安装Java文档 请到Sun的官方网站浏览J SE API)首先 System是位于java lang包中的一个核心类 如果你查看它的定义 你会发现有这样一行 public static final PrintStream out;接着在进一步 点击PrintStream这个超链接 在METHOD页面 你会看到大量定义的方法 查找println 会有这样一行   public void println(String x) 好了 现在你应该明白为什么我们要那样调用了 out是System的一个静态变量 所以可以直接使用 而out所属的类有一个println方法   静态方法  通常 在一个类中定义一个方法为static 那就是说 无需本类的对象即可调用此方法 如下所示   class Simple{    static void go(){     System out println( Go );    }  }  public class Cal{    public static void main(String[] args){     Simple go();    }  }  调用一个静态方法就是 类名 方法名 静态方法的使用很简单如上所示 一般来说 静态方法常常为应用程序中的其它类提供一些实用工具所用 在Java的类库中大量的静态方法正是出于此目的而定义的   静态变量  静态变量与静态方法类似 所有此类实例共享此静态变量 也就是说在类装载时 只分配一块存储空间 所有此类的对象都可以操控此块存储空间 当然对于final则另当别论了 看下面这段代码   class Value{   static int c= ;   static void inc(){     c++;   }}  class Count{    public static void prt(String s){     System out println(s);    }    public static void main(String[] args){     Value v v ;    v =new Value();     v =new Value();    prt( v c= +v c+    v c= +v c);    v inc();    prt( v c= +v c+  v c= +v c);    }}  结果如下   v c= v c=   v c= v c=   由此可以证明它们共享一块存储区 static变量有点类似于C中的全局变量的概念 值得探讨的是静态变量的初始化问题 我们修改上面的程序   class Value{    static int c= ;    Value(){    c= ;   }   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( );    static Value v v ;     static{      prt( v c= +v c+    v c= +v c);      v =new Value( );      prt( v c= +v c+  v c= +v c);      v =new Value( );      prt( v c= +v c+  v c= +v c);     }   public static void main(String[] args){    Count ct=new Count();     prt( ct c= +ct v c);     prt( v c= +v c+  v c= +v c);     v inc();    prt( v c= +v c+  v c= +v c);    prt( ct c= +ct v c);    }}  运行结果如下   v c= v c=   v c= v c=   v c= v c=   ct c=   v c= v c=   v c= v c=   ct c=   这个程序展示了静态初始化的各种特性 如果你初次接触Java 结果可能令你吃惊 可能会对static后加大括号感到困惑 首先要告诉你的是 static定义的变量会优先于任何其它非static变量 不论其出现的顺序如何 正如在程序中所表现的 虽然v出现在v 和v 的前面 但是结果却是v 和v 的初始化在v的前面 在static{后面跟着一段代码 这是用来进行显式的静态变量初始化 这段代码只会初始化一次 且在类被第一次装载时 如果你能读懂并理解这段代码 会帮助你对static关键字的认识 在涉及到继承的时候 会先初始化父类的static变量 然后是子类的 依次类推 非静态变量不是本文的主题 在此不做详细讨论 请参考Think in Java中的讲解   静态类  通常一个普通类不允许声明为静态的 只有一个内部类才可以 这时这个声明为静态的内部类可以直接作为一个普通类来使用 而不需实例一个外部类 如下代码所示   public class StaticCls{    public static void main(String[] args){     OuterCls InnerCls oi=new OuterCls InnerCls();   }}  class OuterCls{   public static class InnerCls{    InnerCls(){      System out println( InnerCls );    }    }}  输出结果会如你所料   InnerCls lishixinzhi/Article/program/Java/Javascript/201311/11134  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码