天天看點

static關鍵字的使用

/**
 * static關鍵字的使用
 *
 * 1.static:靜态的
 * 2.static:可以用來修飾:屬性、方法、代碼塊、内部類
 * 3.static修飾屬性:靜态變量(類變量)
 *      3.1屬性:按是否使用static修飾,又分為:靜态屬性(類變量) vs 非靜态屬性(執行個體變量)
 *      執行個體變量:我們建立了類的多個變量,每個對象都獨立的擁有一套類中的非靜态屬性。當修改其中一個非靜态屬性
 *              時,不會導緻其他對象中同樣的屬性值的修改。
 *      靜态變量:我們建立了類的多個對象,多個對象共享同一個靜态變量,當通過某一個對象修改靜态變量時,會導緻
 *              其他對象調用此靜态變量時,是修改過了的。
 *      3.2 static修飾屬性的其他說明:
 *          ① 靜态變量随着類的加載而加載,可以通過 “類.靜态變量” 的方式進行調用。
 *          ② 靜态變量的加載要早于對象的建立
 *          ③ 由于類隻會加載一次,則靜态變量在記憶體中也隻會存在一份,存在方法區的靜态域中。
 *
 *          ④          類變量         執行個體變量
 *             類        yes            no
 *             對象      yes            yes
 *
 * 4.static修飾方法:靜态方法
 *      ① 随着類的加載而加載,可以通過 “類.靜态方法 ” 的方式進行調用
 *      ②          靜态方法         非靜态方法
 *         類        yes            no
 *         對象      yes            yes
 *      ③ 靜态方法中隻能調用靜态的屬性或方法。
 *        非靜态方法中,既可以調用非靜态的方法或屬性,也可以調用靜态的方法或屬性。
 * 5.static注意點:
 *     5.1在靜态的方法内,不能使用this和super關鍵字。
 *     5.2關于靜态屬性和方法的使用,都從生命周期的角度去了解
 * 6.開發中,如何确定一個屬性是否要聲明為static?
 *      >屬性是可以被多個對象所共享的,不會随着對象的不同而不同的
 *   開發中,如何确定一個方法是否要聲明為static?
 *      >操作靜态屬性的方法通常設定為static的
 *      >工具類中的方法,習慣上聲明為static的。比如 Math、Arrays
 */      
1 package com.fu.statictest;
 2 
 3 
 4 public class StaticTest {
 5     public static void main(String[] args) {
 6         Chinese c1 = new Chinese();
 7         c1.name = "姚明";
 8         c1.age = 40;
 9         c1.nation = "CHN";
10 
11         Chinese c2 = new Chinese();
12         c2.name = "馬龍";
13         c2.age = 30;
14         c2.nation = "CHNINA";
15 
16 
17         System.out.println(c1.nation);//CHNINA
18         System.out.println(c2.nation);//CHNINA
19         c1.eat();
20         Chinese.show();
21         c1.show();
22 
23     }
24 }
25 
26 class Chinese{
27     String name;
28     int age;
29     static String nation;
30     public void eat(){
31         System.out.println("中國人吃中餐");
32     }
33     public static void show(){
34         System.out.println("我是一個中國人");
35     }
36 
37 }      

此為本人學習筆記,若有錯誤,請不吝賜教