1. 程式人生 > >Java ——變量類型

Java ——變量類型

cin pac pub 訪問類 system 相同 () 全局變量 var

變量聲明

int a, b, c;         // 聲明三個int型整數:a、 b、c
int d = 3, e = 4, f = 5; // 聲明三個整數並賦予初值
byte z = 22;         // 聲明並初始化 z
String s = "runoob";  // 聲明並初始化字符串 s
double pi = 3.14159; // 聲明了雙精度浮點型變量 pi
char x = ‘x‘;        // 聲明變量 x 的值是字符 ‘x‘。

Java語言支持的變量類型有:

  • 類變量:獨立於方法之外的變量,用 static 修飾。
  • 實例變量:獨立於方法之外的變量,不過沒有 static 修飾。
  • 局部變量:類的方法中的變量。

public class Variable{
    static int allClicks=0;    // 類變量
 
    String str="hello world";  // 實例變量
 
    public void method(){
 
        int i =0;  // 局部變量
 
    }
}

技術分享圖片

技術分享圖片

技術分享圖片

舉例:

package hello;

//首先要知道變量應該是賦值以後才能使用的,但是有些不必人為賦值就有默認初始值,但是有些要人為定義初始值
//所以有些直接使用的並不是沒有賦值,而是系統自定義了初始值,所以不會報錯 public class Variable { public String instance = "實例變量"; public static String variable = "靜態變量"; //靜態變量的定義方式 public static String CONST = "靜態常量"; //靜態常量的定義方式 public static void main(String[] args) { String local = "局部變量"; //類似這個就是局部變量,不可用訪問修飾符修飾,沒有默認初始值
System.out.println(local); //局部變量就是在方法或語句塊中的變量 Global global = new Global(); //類似這個就是實例變量,也稱全局變量 System.out.println(global.instance); //實例變量就必須先把類new一個出來才能使用,因為他是在類中,方法外的 System.out.println(variable); //來瞅瞅靜態變量,也叫類變量,靜態變量的訪問方式1(在自己類的時候) System.out.println(Global.variable); //靜態變量的訪問方法2(不在自己類的時候) } } class Global{ public String instance = "實例變量"; //實例變量在一個類的裏面,語句塊的外面 public static String variable = "靜態變量"; Global(){ //在類的內部使用自己的實例變量:要麽老老實實new一個出來,就像上面那個 //第二種方法就是在函數裏面使用實例變量,註意,如果方法是靜態方法參照方法1 System.out.println(instance); System.out.println(variable); } public void Instance() { System.out.println(instance); //靜態變量訪問方法1(在自己類的時候),靜態常量和靜態變量訪問相同 System.out.println(Variable.CONST); } }

類的靜態數據成員值被所有對象共享,任何對象都可以訪問類的靜態數據成員。但是他們使用的是同一個數據,操作的是同一塊內存,無論哪個對象修改了它,對其他對象來說,他已經變了

類變量可在類中直接使用,實例變量需實例化後才能使用。

public class StaticTest {
    private static int staticInt = 2;
    private int random = 2;

    public static void main(String[] args) {
        System.out.println(staticInt);
        StaticTest test = new StaticTest();
        System.out.println(test.random);
    }
}

技術分享圖片

public class StaticTest {
    private static int staticInt = 2;
    private int random = 2;

    public StaticTest() {
        staticInt++;
        random++;
        System.out.println("staticInt = "+staticInt+"  random = "+random);
    }

    public static void main(String[] args) {
        StaticTest test = new StaticTest();
        StaticTest test2 = new StaticTest();
    }
}

結果:

staticInt = 3 random = 3

staticInt = 4 random = 3

技術分享圖片

public class StaticTest {
    private static int staticInt = 2;
    private int random = 2;

    public StaticTest() {
        staticInt++;
        random++;
    }

    public static void main(String[] args) {
        System.out.println("類變量與對象變量的值變化");
        StaticTest test = new StaticTest();
        System.out.println("  實例1:staticInt:" + test.staticInt + "----random:" + test.random);
        StaticTest test2 = new StaticTest();
        System.out.println("  實例2:staticInt:" + test.staticInt + "----random:" + test.random);
        System.out.println("靜態變量賦值");
        System.out.println("  靜態語句塊起作用:" + A.staticA);
        A a = new A();
        System.out.println("  構造器起作用:" + a.staticA);
        a.toChange();
        System.out.println("  靜態方法1起作用:" + A.staticA);
        a.toChange2();
        System.out.println("  靜態方法2起作用:" + A.staticA);
        System.out.println("常量賦值");
        System.out.println("  靜態語句賦值:" + B.staticB);
    }
}

class A { 
    public static  String  staticA ="A" ;  
    //靜態語句塊修改值 
    static{  staticA ="A1"; } 
    //構造器修改值
    public A (){  staticA ="A2"; } 
    //靜態方法起作用 
    
    public static void toChange(){  staticA ="A3"; } 
    public static void toChange2(){  staticA ="A4"; }  
}

class B { 
    public static final String  staticB ;  // 聲明與賦值分離 
    static{  staticB ="B"; }
}

Java ——變量類型