類與對象(二)

來源:互聯網
上載者:User
靜態代碼塊只會被執行一次,它在Java虛擬機器載入類時執行,如果類中包含多個靜態塊,則按從上往下順序執行
一:靜態變數
什麼是靜態變數     態變數是指被static修飾的變數     靜態變數屬於某個類,被所有執行個體共用     可以通過類名訪問或者通過執行個體名訪問 使用靜態變數

static類型變數名

class Monkey {//聲明靜態變數static int count=0;}class Test {public static void main(String[] args) {for(int i=0;i<3;i++){Monkey m=new Monkey();m.count=m.count+1;}//通過類名訪問靜態變數System.out.println(Monkey.count);}
靜態變數與非靜態變數的區別
class SaticVar {//執行個體變數int a=1;//靜態變數static int b=1;}


 

class Test {public static void main(String[] args) {StaticVar s1=new StaticVar();s1.a++;s1.b++;System.out.println("執行個體變數a="+ s1.a);System.out.println("靜態變數b="+StaticVar.b);StaticVar s2=new StaticVar();s2.a++;s2.b++;System.out.println("執行個體變數a="+ s2.a);System.out.println("靜態變數b="+ s2.b);}}


  靜態變數在記憶體中只有一個記憶體空間,在載入類的過程中完成靜態變數的記憶體配置,可以直接通過類名來訪問 執行個體變數每建立一個執行個體,就會為執行個體變數分配一次記憶體,各個對象訪問自己的變數。 靜態變數可以被類名或執行個體對象訪問,而執行個體變數只能被執行個體對象訪問 二:靜態方法 靜態方法:被static修飾的方法稱為靜態方法或類方法

static[修飾符] 傳回值類型 方法名(類型 參數1,類型 參數2…){

  方法體

}

class Monkey {//靜態方法static void play(){System.out.println("會玩金箍棒。");}}
 
class Test {public static void main(String[] args) {//樣本化10個對象for(int i=1;i<=10;i++){Monkey houge=new Monkey();//通過類名調用靜態方法Monkey.play();}}}
<p><span style="color:black;">靜態方法只能訪問靜態變數,不能訪問執行個體變數,因為載入靜態方法時,執行個體變數</span></p><p><span style="color:black;">還沒有分配記憶體空間。</span></p>
三:靜態代碼塊 靜態代碼塊不存在於任何方法體中。
class StaticBlock {static{   System.out.println(“我是靜態代碼塊");}}

靜態代碼塊只會被執行一次,它在Java虛擬機器載入類時執行,

如果類中包含多個靜態塊,則按從上往下順序執行 類中不同部分執行順序

class Order {int a=1;static int b=1;{System.out.println("執行個體變數a="+a);System.out.println("代碼塊執行。");}static {System.out.println("靜態變數b="+b);System.out.println("靜態代碼塊執行。");}Order(){ System.out.println("構造方法執行"); }}
<pre class="java" name="code">class Test {public static void main(String[] args) {Order order=new Order();}}

編譯後得出結論:
靜態變數初始化→靜態代碼塊→初始化靜態方法→初始化執行個體變數→代碼塊→構造方法 四:常量 變數的生命週期 Java中有3種變數,分別為類變數、執行個體變數和某個方法中臨時定義的局部變數。不同的變數的生命週期不同
class Cycle { int var1 = 1; static int var2 = 2; public int add(){ int var3 = var1 + var2; return var3; }}class Test {public static void main(String[] args) {Cycle c=new Cycle();       c.add();}}
var 1,2,3分別代表
執行個體變數、靜態變數、局部變數

final變數final變數
class FinalVar {final int MAX_VALUE=20;final int MIN_VALUE;MAX_VALUE=30;static final  double PI=3.1415926;PI=3.1415;}

final int MAX_VALUE=20;對的

final int MIN_VALUE;錯誤 定義時候必須初始化

MAX_VALUE=30;錯誤,不能重複賦值

staticfinal  double PI=3.1415926 正確

PI=3.1415;錯誤 靜態執行個體變數不能重複賦值 使用final修飾的變數表示取值不會改變的常量 final修飾的執行個體變數的值不能改變,這就意味著在執行個體化具有final變數的多個對象時,每個對象都會有相同的final變數值。這種執行個體變數反而使用靜態變數會更符合設計規則,因此經常將final變數同時定義成為靜態(static final)。 Final變數的特徵 final修飾符可以修飾靜態變數、執行個體變數和局部變數,分別表示靜態常量、執行個體常量和局部常量 final類型的變數必須顯式地初始化,否則將導致編譯錯誤 final變數只能被賦值一次 在定義final常量時,一般以大寫字母命名,且多個單詞之間以“_”符號隔開 五:包 一個檔案夾裡面不能放入同樣名字的資源檔,java也是如此,去了更好的更合理的去分配資源,於是包出現了。 Java的常用包 JDK提供的Java常用包

java.lang包:系統類別(System)、整數類(Integer)和字串類(String)等

java.io包:檔案輸入資料流類(FileInputStream類)、檔案輸出資料流類(FileOutputStream)等 n java.util 包:提供日期類(Date)、集合類(Collection)等實用類 如果一個類訪問了來自另一個包(除java.lang)中的類,則首先必須通過import語句引入該類

import com.xxx.edu.server.Teacher;

在一個Java源檔案中,只允許有一個package語句,而且必須位於源檔案的第一句

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.