iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
自我挑戰組

轉職仔自學Java筆記本系列 第 2

Java 資料型別的特性

  • 分享至 

  • xImage
  •  

不同的程式語言之間的寫作風格迥異,我自己一開始接觸的 Python 撰寫起來比較淺顯易讀,寫作風格也比較寬鬆,沒有太多制式的規定與語法,因此,不同人寫出來的 Python Code 風格差異很大;但接觸 Java 後,第一個感受就是規定特別嚴謹,無論在變數類別、函式定義上都需要適應一下。

強型別 (strongly typed)

Java 相對於 Python 是較為嚴謹的程式語言風格,雖同樣被劃分為強型別 (strongly typed) 的程式語言;但 Java 在資料型態上要求嚴格,偏向不容許有隱性的資料型別轉換,並且 Java 在宣告變數時,需要同時宣告辨識的資料型別,舉例來說:

當要宣告一個變數為整數 a 為 87 時:

	a = 87;     // Python 可以這麼做
	int a = 87; // Java 必須在變數前指定型別

當要宣告一個變數為字串 s 為 "I am String" 時:

	s = "I am String";         // Python 可以這麼
	Srting s = "I am String"; // Java 必須在變數前指定型別

Java 無法指派型別不同的值給變數,直接指派錯誤型別的值,通常不提供隱性的資料型別轉換

    int number = 1;
    number = "one"; 
    // java: incompatible types: java.lang.String cannot be converted to int

例外案例:String 強制轉型

然而,有些情況是隱性的資料型別轉換,像是在 Java 中當 String 與 int 相加 (+) 時,會自動將輸出轉型成 String。

 // 舉例像是打印時加上 String

    int a = 100;
    System.out.println("value of a: " + a);  // Out: value of a: 100
    

 // 在指派值的時候也適用

    String b = 10 +"10";
    System.out.println(b); // Out: 1010
    

但需要特別留意,Java 在做運算的時候是由左到右,當遇到 String 與 int 相加時,才會自動將 int 轉換為 String,在之前的 int 相加則不受影響,這裡直接舉例感覺比較好理解:

// 目前已經知道 String 與 int 相加會自動轉型成 String

    System.out.println(10 + "10");
    // Out: 1010

    System.out.println("10" + 10);
    // Out: 1010

// 但如果從左到右運算時,未遇到 String 之前,則不會發生自動轉型

    System.out.println(10 + 10 + "10");
    // Out: 2010
    // 並非 101010

上一篇
轉職仔自學Java筆記本-開賽囉!
下一篇
JAVA 資料型別 (Data Type) 類型
系列文
轉職仔自學Java筆記本22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言