1. 程式人生 > 其它 >Java 型別轉換、變數、常量、作用域

Java 型別轉換、變數、常量、作用域

Java 型別轉換、變數常量作用域

java型別轉換

強型別語言在運算時需要用到型別轉換。運算中,不同型別資料先轉化成同一型別然後進行運算,

public class day4 {
    public static void main(String[] args) {
        int i =128;
        byte b = (byte)i;//強制轉換
        double c =i;
        System.out.println(b);//byte此時記憶體溢位,輸出-128
    	double c = i;//容量級低->高不需要轉換型別,int->double不需要轉換型別
    }
}

強制型別轉換:(型別)變數名 實現轉換

容量級 高->低需要強制型別轉換,而低->高不需要轉換。

容量級

布林型不能轉換

不能把物件型別轉換為不相關的型別

在把高容量轉到低容量型別時,強制轉換,但可能存在記憶體溢位或精度問題。

		System.out.println((int)23.7);//輸出23
        System.out.println((int)-45.89f);//輸出-45
		char d = 'a';
        int e = d+1;//此時是char->int,低轉高,自動轉,不需要強制轉換
        System.out.println(
e);//輸出為Unicodea的97+1,98 System.out.println((char)e);//此時將int型別強制轉換為char型,(char)int變數即可,輸出為b

操作比較大的數時,注意溢位問題。

public class day4 {
    public static void main(String[] args) {
        //操作比較大的數的時候注意溢位問題
        //jdk7的新特性;大數字之間可以用下劃線分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*
years; System.out.println(total);//輸出-1474836480,計算時溢位 long total2 = money*years;//int型計算,得到int型結果,再將 //int型結果賦值給long,仍然溢位 System.out.println(total2);//輸出仍為-1474836480 /*因為在long total2 = money*years;語句中 money跟years本身為int型,運算後還是int型,將計算後的int型賦 給long型的total2時,低到高自動轉換型別,但本身的原始值仍未 int型的溢位後的值,因此計算結果不準確*/ } }
		long total3 = (long)money * years;//賦值前,將運算表示式中												的一項先進行轉換再運											算,這樣預設右側為整體先											轉換再賦值。
        System.out.println(total3);//輸出為20000000000,正確

java變數、常量、作用域

變數代表一塊空間,其位置(指定的記憶體空間)是確定的,而空間內的內容是可以變化(不同賦值)的。

變數型別、變數名、作用域。

public class day4_part2 {
    public static void main(String[] args) {
        int a,b,c;
        int q=1,w=2,e=3;//風格不可取,程式可讀性不好
        String name = "china";
        char x ='x';
        double pi = 3.14;
    }
}
//資料型別  變數名  = 值;可以用逗號隔開來生命多個同類型變數

變數作用域:

三種作用域:類變數、例項變數、區域性變數

public class Var

區域性變數

區域性變數是在方法中的

public class day4_part2_2 {
    //在類中可以定義屬性
    //例項變數作用域在類中,定義在方法外面,從屬於物件,使用在整個類中都可以
    //例項變數可以通過類來使用
    String name;
    int age;

    //在類中寫main方法
    public static void main(String[] args) {
        //區域性變數在方法中定義,有效在此方法內
        //區域性變數使用時必須宣告且初始化值
        //區域性變數定義完可以直接用
        int i =10;//這個i僅在main方法內有用,即main的{}中有效
        
        //變數型別(自定義的型別) 變數名字為demo  = new day4_part2_2
        day4_part2_2           demo      =    new day4_part2_2();//
        System.out.println(demo.age);//呼叫了類day4_part2_2中的例項變數,且age未賦值時預設輸出0
    }
    
    //在類中定義其他方法
    public void add(){
        
    }
}

例項變數

//例項變數:數值型別、字元型別的例項變數未賦值,預設為0;布林值預設為false;除了基本型別其他型別預設值都是null(空)


public class day4_part2_2 {
    //在類中可以定義屬性
    //例項變數作用域在類中,定義在方法外面,從屬於物件,使用在整個類中都可以
    //例項變數可以通過實際的類來呼叫
    String name;
    int age;
    
    
    public static void main(String[] args) {
        int i =10;//這個i僅在main方法內有用,即main的{}中有效,是區域性變數
        System.out.println(i);//輸出10
        
//變數型別(自定義的型別) 變數名字為demo  = new day4_part2_2
        day4_part2_2      demo      =    new day4_part2_2();
        System.out.println(demo.age);//呼叫了類day4_part2_2中的例項變數,且age未賦值時預設輸出0
        //通過實際的物件呼叫例項變數。
    }
}

通過實際的物件才可以呼叫例項變數

類變數:

類變數是前面含static的,定義在類中(定義位置與例項變數一致),較例項變數前多了個static定義

public class day4_part2_2 {
    
    //類變數
    static double salary = 2500;//static+資料型別+變數名 = 賦值
                                //此時可以直接在類的方法中呼叫並輸出salary

    //在類中寫main方法
    //在方法中呼叫類變數
    public static void main(String[] args) {
        System.out.println(salary);//如果定義時沒static,為例項變數,不能直接呼叫例項變數
       
    }
}

類變數可以直接進行呼叫,不需要結合實際物件

常量

使用關鍵詞 final,用final對類變數進行修飾,成為常量。

final 常量名 = 常量值;常量名通常使用大寫字元 如:PI等

final作為修飾符,不存在出現的夏侯順序。

public class day4_part2_3 {
    static final double PI = 3.14;
    final static double OI = 3.14;//final位置可放static前後,無影響
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(OI);
    }
}

變數命名規範

  1. 所有變數、方法:見名知意
  2. 類變數:首字母小寫+駝峰原則:monthSalary、lastName(除了第一個單詞以外,後面單詞首字母大寫)
  3. 區域性變數:首字母小寫+駝峰原則
  4. 常量:大寫字母跟下劃線組成:MAX_NAME
  5. 類名:首字母大寫+駝峰原則:Man、GoodMan
  6. 方法名:首字母小寫+駝峰原則:runRun()