您現在的位置是:首頁 > 網頁遊戲首頁網頁遊戲
基礎:Java中的基本資料型別講解(數值型、字元型、布林型)
- 2021-09-16
什麼叫數值型資料
資料型別
整數型
注意事項:
佔用的位元組數越大,取值範圍也就越大,儲存的資料也就越大
現實開發中,我們應選擇合適的資料型別,切記不要超過資料型別的取值範圍補充:開發中一般使用int型別來代替short和byte型別程式碼展示:
public class Test{
// 編寫main方法,寫法固定,程式的入口,能被虛擬機器
public static void mian(String[] args){
int age = 12;
System。out。println(“年齡為” + age);
// 輸出 年齡為 12
}
}
整數固定值常量,可包含十進位制、十六進位制和八進位制,但是不包含二進位制
程式碼展示
public class ConstantTest{
public static void main(String[] args){
// 八進位制固定值常量
int num = 017;
System。out。println(num);// 輸出為15
// 十六進位制固定值常量
int num2 = 0xFF;
System。out。println(num2);// 輸出為255
}
}
整數固定值常量預設值為int型別,int型別的取值範圍是-231~231-1 ,大約在正負21億左右,在整數固定值常量末尾加小寫“l”或大寫“L”就變為了long型別常量
建議:使用大寫“L”,因為小寫的l易與1產生混淆
public class ConstantDemo{
// 編寫main方法,寫法固定,是程式的入口,,main方法中唯一能改變的就是“args”的名字,能被虛擬機器識別並執行
public static void main(String[] args){
int num = 10000000000;
System。out。println(num); // 編譯錯誤,過大的整數
}
}
執行截圖:
注意:使用整數固定值常量時切忌不要超出int型別的取值範圍
public class ConstantTest{
public static void main(String args[]){
long num = 10000000000L;
//正確 10000000000L屬於long型別的固定值常量
System。out。println(num);
}
}
public class ConstantTest{
public static void main(String[] args){
long num = 10000000000;
System。out。println(num);// 出現編譯錯誤
}
}
public class ConstantTest{
public static void main(String[] args){
int num = 100000 * 100000;
System。out。println(num);// 預計:10,000,000,000 實際:1410065408
}
}
預計結果和實際結果不符的原因:
編譯時,100000 * 100000兩輸相乘的數都沒超出int型別的取值範圍,所以編譯執行時,兩個int型別做運算,返回的結果還是int型別
整數如何在記憶體中存取的?
儲存:把整數轉換成二進位制,然後再儲存到記憶體空間中
讀取:把記憶體中的二進位制轉為十進位制,然後再取出
畫圖說明:
程式碼展示:
public class IntDemo{
public static void main(String[] args){
int age = 7;
System。out。println(“年齡為” + age);
}
}
浮點數
注意:
浮點型佔用的位元組數越大,表示的精確度就越高
佔用的位元組數越大,並不意味著取值範圍就越大
double表示小數更高,現實開發中,一般使用double較多
因為小數儲存方式不同,儘量不要對小數做特別精確的計算
public class DoubleTest{
public static void main(String[] args){
// 預計輸出 0。0003 實際輸出 3。0000000000000003E-4
System。out。println(0。0001 + 0。0002);
}
}
小數固定值常量預設為double型別,在小數固定值常量末尾加上一個小寫“f”|大寫“F”,那該常量就變為了float型別的常量
程式碼展示:
public class DoubleTest{
public static void main(String[] args){
float f = 3。14;// 編譯錯誤
System。out。println(f);
}
}
截圖:
原因:3。14預設為double型別
程式碼展示:
public class DoubleTest1{
public static void main(String[] args){
float f = 3。14f; // 編譯成功
System。out。println(“f = ” + f);// 輸出 f = 3。14
}
}
截圖:
原因:因為在該小數固定值末尾加了一個小寫的“f”,那該常量就變為了float型別
小數固定值常量有哪些?
十進位制小數固定值常量 ,例如:3。14、123。45等
科學計數法表示的常量,例如:3。14E3、3。14E-3等
程式碼展示:
public class Test{
public static void main(String args[]){
float f = 3。14e3f;
System。out。println(“F = ” + f);
double d = 3。14E-3;
System。out。println(“D = ” + d);
}
}
執行截圖:
3。14e3 等效於小數點向右移動三位,結果為3140。0
3。14E-3等效於小數點向左移動三位,結果為0。00314
注意:科學計數法中的“E”可以為小寫字母“e”,也可以為大寫字母“E”
布林型(boolean)
使用場合:常用於條件判斷,條件成立返回true,條件不成立返回false
public class BooleanTest{
public static void main(String[] args){
boolean flag = true;
System。out。println(flag);// 輸出true
flag = false;
System。out。println(flag);// 輸出false
flag = 3>5;
System。out。println(flag); // 輸出false
flag = 3<5;
System。out。println(flag); // 輸出true
}
}
執行截圖:
問題:boolean型別佔幾個位元組?
答:在java規範中,沒有明確規定boolean型別的位元組數,我覺得佔1位,因為1位可以表述兩種可能,要麼為true要麼為false,也覺得佔1位元組,因為檔案儲存的最小單位就是位元組
字元型(char)
佔2個位元組,表示的是無符號的數值,取值範圍在0~65535
字元固定值常量:使用一對‘’單引號包裹起來的一個字元,稱為字元常量
public class CharTest{
public static void main(String[] args){
char c = ‘a’; // 正確
char c1 = ‘你好’; // 錯誤
char c2 = ‘號’;// 正確
char c3 = ‘11’;// 錯誤
char c4 = ‘9’; //正確
char c5 = ‘ ’;// 正確
char c6 = ‘’;// 錯誤
}
}
1
2
3
4
5
6
7
8
9
10
11
注意:
char,佔2個位元組,可儲存65536個字元,一個英文|中文字元在記憶體中佔兩個位元組
字元和字串的關係:
字元和字串有著密切聯絡,字串由多個任意的字元組成,類似羊肉和羊肉串的關係。
字串(String)
在Java中,String型別(字串型別)屬於引用資料型別
字串固定值常量:使用一對雙引號“”包裹起來的內容(任意多個字元),我們稱為字串常量
程式碼展示:
public class StringDemo{
public static void main(String[] args){
String name = “Java”;
String hobby = “打籃球”;
String nullStr = “”;
String eng = “hello World”;
System。out。println(“我的名字為” + name); // 我的名字為Java
System。out。println(“我的愛好為” + hobby);// 我的愛好為打籃球
System。out。println(nullStr);// 空串
System。out。println(eng);// hello World
}
}
1
2
3
4
5
6
7
8
9
10
11
12
執行結果:
字串的特點:
字串和別的資料型別做“+”操作,實際上做的就是連線符操作(拼接操作),並且返回的結果是String型別(字串型別)
分析:String str = “Hello” + 10;
描述:先將10從int型別隱式型別轉換轉換為String型別,然後將轉換出來的“10”與“Hello”做拼接操作
public class StringDemo{
public static void main(String[] args){
String str = “Hello” + 10;
System。out。println(str);// 輸出Hello10
String str1 = 20 + “Hello” + 10;
System。out。println(str1);//輸出 “20Hello10”
// 經常 “+” 使用於以下類似場合
int age = 15;
System。out。println(“年齡為” + age);// 輸出年齡為 15
}
}
1
2
3
4
5
6
7
8
9
10
11
執行截圖:
字元是如何在記憶體中儲存的?
思路:根據編碼表,查詢字元(數字、字母)所對應正整數
儲存:把需要儲存的字元對照編碼表,然後找到字元所對應的正整數,最後將該正整數轉換為二進位制,存入記憶體對應的儲存空間中—>編碼
讀取:透過變數名找到對應儲存空間中的數值,然後將數值從二進位制轉換為十進位制,在將十進位制的數值對照編碼表取出對應的字元–>解碼
畫圖分析:
程式碼展示:
public class CharDemo{
public static void main(String[] args){
char c = ‘a’;
System。out。println(c);
}
}
注意:字元無法直接轉換為二進位制,只有數值可以
輸出語句能輸出什麼內容?
System。out。println(value)
System。out。print(value)
輸出的Value就是資料,指的是常量 | 變數資料
常見的編碼表
ASCII:用來現實現代英語和西歐語言的編碼表
GBK:用來表示中文用的編碼
Unicode:萬國碼、統一碼
核心:Unicode編碼表幾乎包含了全世界所有的語言
注意:
java採用的是Unicode編碼表,意味著java幾乎能使用全世界所有的語言,例如:識別符號可以使用中文表示,但是不建議使用中文
public class 哈哈{
public static void main(String[] args){
System。out。println(“Hello World”);
}
}
執行截圖:
ASCII和Unicode編碼表
ASCII編碼表前128位和Unicode編碼表前128位一模一樣
‘0’ ——對應的正整數為——> 48
‘a’——對應的正整數為——> 97
‘A’——對應的正整數為——>65
幫助記憶:
英文字母(AZ,az):大寫字母(az)和小寫字母(AZ)相差32,a表示97,A表示65,每次增1
正整數(0~9):0表示48,1表示49,每次增1
程式碼展示:
public class CharTest{
public static void main(String[] args){
System。out。println((int)‘a’);//97
System。out。println((int)‘b’);//98
System。out。println((int)‘B’);//66
System。out。println((int)‘A’);//65
System。out。println((int)‘1’);//49
System。out。println((int)‘0’);//48
}
}
執行截圖:
如何檢視char型別的字元所對應的正整數?
使用強制型別轉換
程式碼展示
public class CharTest{
public static void main(String[] args){
System。out。println((int)‘a’);//97
}
}
使用int型別的變數來接受
程式碼展示:
public class CharTest{
public static void main(String[] args){
int charInt = ‘a’;
System。out。println(charInt);//97
}
}
Int型別和Char型別的區別
共同點:int 型別和char 型別在記憶體中儲存的都是整數
正因為此共同點,意味著int型別和char型別可以互相裝換
int型別–轉為–>char型別
要求:int型別必須為正整數,並且未超過char型別的取值範圍(0~65535),char型別強調的是無符號
char–轉為–>int型別
要求:沒有任何要求,所有的char型別的字元都可轉換為int型別
程式碼展示:
// char —— 轉為 —— >int 型別
public class CharIntDemo{
public static void main(String[] args){
System。out。println((int)‘a’);
int charInt = ‘0’;
System。out。println(charInt);
}
}
程式碼展示:
// int ——轉為——>char型別
public class CharIntDemo{
public static void main(String[] args){
System。out。println((char)75);// K
System。out。println((char)48);// 0
char c = 78;
System。out。println(c);// N
char c1 = 49;
System。out。println(c1); // 1
}
}
執行截圖:
不同點:
int型別佔用4個位元組,char型別佔用2個位元組,int型別的取值範圍比char型別大
char型別強調的是無符號,int型別強調的是有符號,int型別在記憶體中可以儲存正|負整數,char型別在記憶體中只能存正整數,不能存負整數
原文連結:https://blog。csdn。net/qq_41473905/article/details/103175239