[toc] 一.Java的基本數據類型介紹 | 類型 | 關鍵字 | 位數 | 預設值 | 取值範圍 | | : : | : : | : : | : : | : : | | 位元組型 | byte | 8 | 0 | 128~127 | | 短整型 | short | 16 | 0 | 32768~3 ...
目錄
- 一.Java的基本數據類型介紹
- 二.各類基本數據之間的轉換
- 三.基本數據類型和String之間轉換(附:對象包裝類及所對應的基本數據類型)
- 四.String與字元數組轉換
- 五.String與位元組數組轉換
一.Java的基本數據類型介紹
類型 | 關鍵字 | 位數 | 預設值 | 取值範圍 |
---|---|---|---|---|
位元組型 | byte | 8 | 0 | -128~127 |
短整型 | short | 16 | 0 | -32768~32767 |
整型 | int | 32 | 0 | -2147483648~2147483647 |
長整型 | long | 64 | 0 | -9223372036854775808~ 9223372036854775807 |
單精度浮點型 | float | 32 | 0.0F | -3.40282347E+38~3.40282347E+38 |
雙精度浮點型 | double | 64 | 0.0D | -1.79769313486231570E+308~ 1.79769313486231570E+308 |
字元型 | char | 16 | '\u0000' | '\u0000'~'\uFFFF' |
布爾型 | boolean | 8 | false | true,false |
二.各類基本數據之間的轉換
1.自動轉換(它只能按優先關係將位數少的數據類型向位數多的數據類型轉換)
Byte、short、char → int → long → float → double
數據類型自動轉換規則(總結:小轉大,轉後即為大)
操作數1的數據類型 | 操作數2的數據類型 | 轉換後的數據類型 |
---|---|---|
Byte、int | int | int |
Byte、short、int | long | long |
Byte、short、int、long | float | float |
Byte、short、int、long、float | double | double |
char | int | int |
代碼:(byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型)
public class practice {
public static void main(String[] args) {
char c = 'h';
byte b = 6;
int i = 100;
long l = 567L;
float f = 8.99f;// 單精度小數需用F或f為尾碼
double d = 4.7788;// 雙精度小數可用D、d或不加尾碼表示
int aa = c + i;// c自動轉換為int類型再運算
long ll = l - aa;// aa自動轉換為long類型再運算
float ff = b * f;// b自動轉換為float類型再運算
double dd = ff / aa + d;// aa自動轉換為float類型運算,ff/aa得float結果後再自動轉換為double類型再進行運算
System.out.println("aa=" + aa);
System.out.println("ll=" + ll);
System.out.println("ff=" + ff);
System.out.println("dd=" + dd);
}
}
結果:
2.強制轉換:將高級數據轉換成低級數據(其中的char類型與int類型轉換有些特殊)
格式:要求強制轉換的變數名前面用( )括上所要強制轉換的類型符
代碼:
public class practice {
public static void main(String[] args) {
char c = 'h';
byte b = 6;
int i = 100;
long l = 567L;
float f = 8.99f;// 單精度小數需用F或f為尾碼
double d = 4.7788;// 雙精度小數可用D、d或不加尾碼表示
int ii=(int)l;//將long型的l強制轉換為int型的ii
long ll=(long)f;//將float型的f強制轉換為long型的ll
int cc=(int)c;//將char型的c強制轉換為int型的cc
System.out.println("ii=" + ii);
System.out.println("ll=" + ll);
System.out.println("cc=" + cc);
}
}
結果:
- 【問題來了】:當char型數字想要轉換為int型或int型轉換為char型還用同樣方法可以嗎?答案是:NO!
若仍使用同樣方法則:當char型數字自動轉換為int型,其結果為char型數字的ASCII碼。
當int型數字轉換為char型則得不出結果
public class practice {
public static void main(String[] args) {
char c = '8';
int i = 9;
int b1 = c;//將char型數字自動轉換為int型
char cc1 = (char) i;//將int型數字強行轉換為char型
System.out.println("b1=" + b1);//56,即8的ASCII碼
System.out.println("cc1=" + cc1);//沒有結果
}
}
結果:
解決方案:
由char型數字轉int型,給字元減'0'即可
由int型轉char型,給數字加'0'並強制轉換即可
public class practice {
public static void main(String[] args) {
char c = '8';
int i = 9;
int b = c - '0';//由char型轉int型,給字元減'0'即可
char cc = (char) (i + '0');//由int型轉char型,給數字加'0'並強制轉換即可
System.out.println("b=" + b);
System.out.println("cc=" + cc);
}
}
結果:
三.基本數據類型和String之間轉換(附:對象包裝類及所對應的基本數據類型)
對象包裝類 | 基本數據類型 |
---|---|
Boolean | boolean |
Byte | byte |
Character | char |
Short | short |
Integer | int |
Long | long |
Float | float |
Double | double |
1.字元串→基本數據類型(以字元串→int型,float型為例)
- 調用包裝類的 對應的包裝類.parsexxx 方法
- 調用包裝類的 對應的包裝類.valueOf() 方法
類似地,由字元串→其它基本數據類型之間轉換也可使用此方法。
例子:
public class practice {
public static void main(String[] args) {
String str = "12345678";
int a = Integer.parseInt(str);//第一種方法
int a1 = Integer.valueOf(str);//第二種方法
float f = Float.parseFloat(str);//第一種方法
float f1=Float.valueOf(str);//第二種方法
System.out.println(a);//12345678
System.out.println(a1);//12345678
System.out.println(f);//1.2345678E7
System.out.println(f1);//1.2345678E7
}
}
結果:
2.基本數據類型→字元串(以int型→字元串為例)
- 用一個空字元串加上基本類型,得到的就是基本類型數據對應的字元串
- 使用String類的 String.valueOf() 方法
- 使用包裝類的 對應的包裝類.toString() 方法
類似地,由其它基本數據類型→字元串之間轉換也可使用此方法。
例子:
public class practice {
public static void main(String[] args) {
int a = 125;
String str = " ";//方法一
String str1 = a + str;//方法二
String str2 = String.valueOf(a);//方法三
String str3 = Integer.toString(a);
System.out.println(str1);//125
System.out.println(str2);//125
System.out.println(str3);//125
}
}
結果:
四.String與字元數組轉換
1.字元數組→字元串
- public static String valueOf(char[]) 用字元數組中的全部字元創建字元串對象。
- public static valueOf String(char[],int offset,int count) 用字元數組中的全部字元和部分字元創建字元串對象。(註:data - 字元數組。offset - String 的索引【字元串索引從0開始】。count - String 值的長度。)
- String(char[]) 用字元數組中的全部字元創建字元串對象。
- String(char[],int offset,intlength) 用字元數組中的部分字元創建字元串對象。
例子:
public class practice {
public static void main(String[] args) {
char[] arr = { 'h', 'e', 'l', 'l', 'o' };
String str = String.valueOf(arr);//第一種方法
String str1=String.valueOf(arr, 0, 3);//第二種方法
String str2 =new String(arr);//第三種方法
String str3=new String(arr, 0, 3);//第四種方法
System.out.println(str);//hello
System.out.println(str1);//hel(其中不包含下標為3的字元)
System.out.println(str2);//hello
System.out.println(str3);//hel(其中不包含下標為3的字元)
}
}
結果:
2.字元串→字元數組
- public char[] toCharArray():將字元串中的全部字元存放在一個字元數組中的方法。
- public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):提供了將指定索引範圍內的字元串存放到數組中的方法
例子:
package Sort;
import java.util.Arrays;
public class practice {
public static void main(String[] args) {
char[ ] arr = new char[4];
char[ ] arr1 = new char[3];
String str = "hello";
arr=str.toCharArray();
str.getChars(0, 3, arr1, 0);//要複製的第一個字元位於索引 srcBegin 處; 要複製的最後一個字元位於索引 srcEnd-1 處(因此要複製的字元總數是srcEnd-srcBegin)。 要複製到 dst 子數組的字元從索引 dstBegin 處開始,並結束於索引: dstbegin + (srcEnd-srcBegin) - 1
System.out.println(Arrays.toString(arr));//[h, e, l, l, o]
System.out.println(Arrays.toString(arr1));//[h, e, l]
}
}
結果:
五.String與位元組數組轉換
1.位元組數組→字元串
- String(byte[]):通過使用平臺的預設字元集解碼指定的 byte 數組,構造一個新的 String。
- String(byte[],int offset,int length) :用指定的位元組數組的一部分,即從數組起始位置offset開始取length個位元組構造一個字元串對象。
例子:
package Sort;
import java.util.Arrays;
public class practice {
public static void main(String[] args) {
byte[] arr = { 'h', 'e', 'l', 'l', 'o' };
String str1=new String(arr);//第一種方法
String str2=new String(arr, 0, 3);//第二種方法
System.out.println(str1);//hello
System.out.println(str2);//hel(其中不包含下標為3的字元)
}
}
2.字元串→位元組數組
- public byte[] getBytes() :使用平臺的預設字元集將此 String 編碼為byte 序列,並將結果存儲到一個新的 byte 數組中。
- public byte[] getBytes(String charsetName) :使用指定的字元集將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 數組。註:charsetName為編碼字元集
例子:
package Sort;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class practice {
public static void main(String[] args) throws UnsupportedEncodingException {
byte[] arr = new byte[4];
byte[] arr1 = new byte[4];
String str = "hello";
arr = str.getBytes();//第一種方法
arr1 = str.getBytes("UTF-8");//第二種方法
System.out.println(Arrays.toString(arr));// [104, 101, 108, 108, 111]
System.out.println(Arrays.toString(arr1));// [104, 101, 108, 108, 111]
}
}
結果:
到此我們各種類型的轉換就全部寫完啦~
如果你覺得這篇文章還不錯,麻煩幫我點個贊!可以讓更多人看到這篇文章。讓我有動力繼續更技術文~
關註小喬的公眾號【小喬的編程內容分享站】,更多的Java資源乾貨等你來學哦~