一 自動類型轉換
1 自動類型轉換圖
數範圍小的向數範圍大的進行自動類型轉換,如同把小瓶的水倒入大瓶,不會有任何問題。Java支持自動類型轉換。
2 代碼示例dom
Java代碼 下載 spa
- public class AutoConversion
- {
- public static void main(String[] args)
- {
- int a = 6;
- // int能夠自動轉換爲float類型
- float f = a;
- // 下面將輸出6.0
- System.out.println(f);
- // 定義一個byte類型的整數變量
- byte b = 9;
- // 下面代碼將出錯,byte型不能自動類型轉換爲char型
- // char c = b;
- // 下面是byte型變量能夠自動類型轉換爲double型
- double d = b;
- // 下面將輸出9.0
- System.out.println(d);
- }
- }
3 運行結果htm
6.0
9.0
4基本類型的值和字符串鏈接代碼示例blog
Java代碼 下載 字符串
- public class PrimitiveAndString
- {
- public static void main(String[] args)
- {
- // 下面代碼是錯的,由於5是一個整數,不能直接賦給一個字符串
- // String str1 = 5;
- // 一個基本類型值和字符串進行鏈接運算時,基本類型值自動轉換爲字符串
- String str2 = 3.5f + "";
- // 下面輸出3.5
- System.out.println(str2);
- // 下面語句輸出7Hello!
- System.out.println(3 + 4 + "Hello!");
- // 下面語句輸出Hello!34,由於Hello! + 3會把3當成字符串處理,
- // 然後再把4當成字符串處理
- System.out.println("Hello!" + 3 + 4);
- }
- }
5 運行結果get
3.5
7Hello!
Hello!34字符串處理
二強制類型轉換
1概念介紹
但願把上圖的右邊類型轉化爲左邊類型,則必須進行強制的類型轉換,強制類型轉換格式是(targettype)value,相似把大瓶的水倒入小瓶,若是大瓶的水不少,將會引發溢出,從而形成數據丟失。這種轉換也稱爲縮小轉換。
2 代碼示例it
Java代碼 下載 io
- public class NarrowConversion
- {
- public static void main(String[] args)
- {
- int iValue = 233;
- // 強制把一個int類型的值轉換爲byte類型的值
- byte bValue = (byte)iValue;
- // 將輸出-23
- System.out.println(bValue);
- double dValue = 3.98;
- // 強制把一個double類型的值轉換爲int
- int tol = (int)dValue;
- // 將輸出3
- System.out.println(tol);
- }
- }
3 運行結果class
-23
3
4 模擬隨機字符串示例
Java代碼 下載
- public class RandomStr
- {
- public static void main(String[] args)
- {
- // 定義一個空字符串
- String result = "";
- // 進行6次循環
- for(int i = 0 ; i < 6 ; i ++)
- {
- // 生成一個97~122的int型的整數
- int intVal = (int)(Math.random() * 26 + 97);
- // 將intValue強制轉換爲char後鏈接到result後面
- result = result + (char)intVal;
- }
- // 輸出隨機字符串
- System.out.println(result);
- }
- }
5運行結果
rxyelm
三 表達式自動提高
1 自動提高概念
當一個算術表達式包含多個基本類型的值時,整個算術表達式的數據類型將會自動提高,提高規則以下
全部byte類型,short類型和char類型將被提高到int類型
整個算術表達式類型自動提高到與表達式中最高等級操做數一樣類型
2 代碼示例
Java代碼 下載
- public class AutoPromote
- {
- public static void main(String[] args)
- {
- // 定義一個short類型變量
- short sValue = 5;
- // 下面代碼將出錯:表達式中的sValue將自動提高到int類型,
- // 則右邊的表達式類型爲int,將一個int類型賦給short類型的變量將發生錯誤。
- // sValue = sValue - 2;
- byte b = 40;
- char c = 'a';
- int i = 23;
- double d = .314;
- // 右邊表達式中在最高等級操做數爲d(double型)
- // 則右邊表達式的類型爲double型,故賦給一個double型變量
- double result = b + c + i * d;
- // 將輸出144.222
- System.out.println(result);
- int val = 3;
- // 右邊表達式中2個操做數都是int,故右邊表達式的類型爲int
- // 所以,雖然23/3不能除盡,依然獲得一個int整數
- int intResult = 23 / val;
- System.out.println(intResult); // 將輸出7
- // 輸出字符串Hello!a7
- System.out.println("Hello!" + 'a' + 7);
- // 輸出字符串104Hello!
- System.out.println('a' + 7 + "Hello!");
- }
- }
3 運行結果
144.222
7
Hello!a7
104Hello!