日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中static的作用

發(fā)布時間:2025/4/16 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中static的作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java中static的作用

請先看下面這段程序:
   public class Hello{ 
   public static void main(String[] args){ //(1)  
   System.out.println("Hello,world!");  //(2) 
   }
   }
  看過這段程序,對于大多數學過Java 的從來說,都不生疏。即使沒有學過Java,而學過其它的高
  級語言,例如C,那你也應該能看懂這段代碼的意思。它只是簡單的輸出“Hello,world”,一點
  別的用處都沒有,然而,它卻展示了static要害字的主要用法。
  在1處,我們定義了一個靜態(tài)的方法名為main,這就意味著告訴Java編譯器,我這個方法不需要創(chuàng)建一個此類的對象即可使用。你還得你是怎么運行這個程序嗎?一般,我們都是在命令行下,打入如下的命令(加下劃線為手動輸入):
  javac Hello.java
  java Hello
  Hello,world!
  這就是你運行的過程,第一行用來編譯Hello.java這個文件,執(zhí)行完后,假如你查看當前,會發(fā)現多了一個Hello.class文件,那就是第一行產生的Java二進制字節(jié)碼。第二行就是執(zhí)行一個Java程序的最普遍做法。執(zhí)行結果如你所料。在2中,你可能會想,為什么要這樣才能輸出。好,我們來分解一下這條語句。(假如沒有安裝Java文檔,請到Sun的官方網站瀏覽J2SE API)首先,System是位于java.lang包中的一個核心類,假如你查看它的定義,你會發(fā)現有這樣一行:public static final PrintStream out;接著在進一步,點擊PrintStream這個超鏈接,在METHOD頁面,你會看到大量定義的方法,查找println,會有這樣一行:
  public void println(String x)。好了,現在你應該明白為什么我們要那樣調用了,out是System的一個靜態(tài)變量,所以可以直接使用,而out所屬的類有一個println方法。
  靜態(tài)方法
  通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法。如下所示:
  class Simple{ 
  static void go(){  
  System.out.println("Go..."); 
  }
  }
  public class Cal{
   public static void main(String[] args){ 
   Simple.go();
   }
  }
  調用一個靜態(tài)方法就是“類名.方法名”,靜態(tài)方法的使用很簡單如上所示。一般來說,靜態(tài)方法經常為應用程序中的其它類提供一些實用工具所用,在Java的類庫中大量的靜態(tài)方法正是出于此目的而定義的。
  靜態(tài)變量
  靜態(tài)變量與靜態(tài)方法類似。所有此類實例共享此靜態(tài)變量,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間,當然對于final則另當別論了。看下面這段代碼:
  class Value{ 
  static int c=0; 
  static void inc(){ 
   c++; 
  }}
  class Count{
   public static void prt(String s){ 
   System.out.println(s);
   }
   public static void main(String[] args){ 
   Value v1,v2; 
   v1=new Value();
    v2=new Value(); 
   prt("v1.c="+v1.c+"
   v2.c="+v2.c);  
  v1.inc(); 
   prt("v1.c="+v1.c+" v2.c="+v2.c);  
  }}
  結果如下:
  v1.c=0 v2.c=0
  v1.c=1 v2.c=1
  由此可以證實它們共享一塊存儲區(qū)。static變量有點類似于C中的全局變量的概念。值得探討的是靜態(tài)變量的初始化問題。我們修改上面的程序:
  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
  這個程序展示了靜態(tài)初始化的各種特性。假如你初次接觸Java,結果可能令你吃驚。可能會對static后加大括號感到困惑。首先要告訴你的是,static定義的變量會優(yōu)先于任何其它非static變量,不論其出現的順序如何。正如在程序中所表現的,雖然v出現在v1和v2的前面,但是結果卻是v1和v2的初始化在v的前面。在static{后面跟著一段代碼,這是用來進行顯式的靜態(tài)變量初始化,這段代碼只會初始化一次,且在類被第一次裝載時。假如你能讀懂并理解這段代碼,會幫助你對static要害字的熟悉。在涉及到繼續(xù)的時候,會先初始化父類的static變量,然后是子類的,依次類推。非靜態(tài)變量不是本文的主題,在此不做具體討論,請參考Think in Java中的講解。
  靜態(tài)類
  通常一個普通類不答應聲明為靜態(tài)的,只有一個內部類才可以。這時這個聲明為靜態(tài)的內部類可以直接作為一個普通類來使用,而不需實例一個外部類。如下代碼所示:
  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

????????????????????

閱讀提示:如果一個成員被聲明為static,它就能夠在它的類的任何對象創(chuàng)建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明為static。static 成員的最常見的例子是main( ) 。因為在程序開始執(zhí)行時必須調用main() ,所以它被聲明為static。

有時你希望定義一個類成員,使它的使用完全獨立于該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創(chuàng)建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態(tài)的)就能創(chuàng)建這樣的成員。如果一個成員被聲明為static,它就能夠在它的類的任何對象創(chuàng)建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明為static。static 成員的最常見的例子是main( ) 。因為在程序開始執(zhí)行時必須調用main() ,所以它被聲明為static。

聲明為static的變量實質上就是全局變量。當聲明一個對象時,并不產生static變量的拷貝,而是該類所有的實例變量共用同一個static變量。聲明為static的方法有以下幾條限制:

◆它們僅能調用其他的static 方法。
◆它們只能訪問static數據。
◆它們不能以任何方式引用this 或super

package com.birdme;
public class UseStatic {
/**
* @param args
*/
private static int s;??????
public UseStatic(){
System.out.println("Create new Class");
}
static {
System.out.println("static block initialized");
}??????
public int getStatic(){
return s;
}
public void? setStatic(int i){
s=i;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
UseStatic classA= new UseStatic();
UseStatic classB= new UseStatic();
System.out.println("classA.s="+classA.getStatic()+";classB.s=

"+classB.getStatic());
classA.setStatic(10);
System.out.println("classA.s="+classA.getStatic()+";classB.s=

"+classB.getStatic());
classB.setStatic(classB.getStatic()+10);
System.out.println("classA.s="+classA.getStatic()+";classB.s=

"+classB.getStatic());
}
}

下面是該程序的輸出:

static block initialized
Create new Class
Create new Class
classA.s=0;classB.s=0
classA.s=10;classB.s=10
classA.s=20;classB.s=20

從結果可以看出類中static塊程序是在類被裝載的時候開始執(zhí)行。而不是在創(chuàng)建對象的時候執(zhí)行。

總結

以上是生活随笔為你收集整理的Java中static的作用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费日韩在线视频 | 国产传媒av在线 | 中国毛片基地 | 日韩精品1区 | 成人激情电影在线观看 | 老司机免费精品视频 | 免费成人蒂法网站 | 黄视频国产 | 91精品国产自产91精品 | 欧美裸体xxxx| 女人叫床很黄很污句子 | 日本黄色小视频 | 精品人妻久久久久久888不卡 | 天天操天天曰 | 久久鲁视频 | 欧美一区二区三区四区五区六区 | 国产盗摄一区二区三区 | 免费在线观看小视频 | 国产在线视频一区二区三区 | 天天有av | 女女h百合无遮羞羞漫画软件 | 日本丰满肉感bbwbbwbbw | 超碰在线成人 | 午夜影院免费在线观看 | 日韩欧美电影一区二区三区 | 黄色a免费| 国产精品5 | 妖精视频在线观看免费 | 第一区免费在线观看 | 热热热热色 | 午夜视频黄色 | 一区二区三区四区在线 | 日韩爱爱网站 | av尤物在线 | 亚洲日本中文字幕在线 | 久久久精品人妻一区二区三区色秀 | 怡红院一区 | 丁香九月婷婷 | 国产日韩成人内射视频 | 欧美情侣性视频 | 黄色3级视频 | 最新极品jizzhd欧美 | 午夜色婷婷 | 日本一区二区不卡在线 | 久久久久久久伊人 | 午夜一区二区三区免费观看 | 四虎影视在线 | 成人午夜黄色 | 亚洲福利在线视频 | 黄色a视频| 国产精品日日摸天天碰 | 天堂在线资源8 | 岛国片在线免费观看 | 影视av| 成人免费毛片观看 | 国产高清不卡视频 | 国产黄色91 | 久久这里只有精品6 | 99国产精| 一区二区三区四区在线播放 | 少妇饥渴放荡91麻豆 | 成人国产精品久久久网站 | 青春草在线视频观看 | 五月婷婷综合在线观看 | 日本十八禁视频无遮挡 | 国产又粗又黄视频 | 日本少妇bbb | 国产乱码精品一区二区三区不卡 | 久久久久综合 | 成人日韩视频 | 欧美日韩图片 | 国产18精品乱码免费看 | 人妻一区二区三区四区 | 久久小视频 | 亚洲视频在线观看视频 | 中文字幕日韩国产 | 偷偷在线观看免费高清av | 国产大奶在线 | 国产另类专区 | 精品国产露脸精彩对白 | 尤物一区| 欧美激情视频一区二区 | 亚洲区av | 日日噜噜夜夜狠狠久久波多野 | 天天在线免费视频 | 黄瓜视频在线观看 | 国产又黄又猛又粗又爽 | 亚洲1234区 | 色呦网站 | 亚洲第6页 | 亚洲一区不卡在线 | 亚洲视频一区二区在线观看 | 国产精品久久久久久久久久直播 | 97超碰精品 | 在线天堂在线 | 91久久久久国产一区二区 | 伊人色综合久久天天 | 夜夜艹天天干 | 高潮毛片又色又爽免费 |