Java基礎02-基本類型相關知識
1.基本數據類型:
byte:佔一個字節,-128-127
short:佔兩個字節,-32768-32767
int:佔四個字節,
long:長整型,佔八個字節,使用時加上"L"(不要使用小寫的"l",容易混淆): long x = 3L;
float:單精度,佔四個字節, float x = 2.3f;
double:雙精度,佔八個字節,
boolean:布爾型,佔一個字節,只能是true或false
char:佔兩個字節,0-65535
a.對於字符'\u0061':使用的是Unicode碼錶定義的字符,其中"0061"是十六進制的數據
b.特殊含義的字符:
\r: 回車
\n: 換行
鍵盤上按下回車鍵: \r\n
\t: 製表符,代表tab
\b: 退格鍵,類似backspace
System.out.println('\'');
System.out.println("\"");
System.out.println("\\");
c.
System.out.print(' ');//正確
System.out.print('');//錯誤
System.out.print(' ');//錯誤
2.浮點數的八進制與十六進制表示的特殊之處:
a.對於浮點數沒有八進制表示,所以在下面代碼中,等價於十進制表示:
float e1 = 03.3f;
System.out.println(e1);
float e2 = 3.3f;
System.out.println(e2);
b.對於浮點數的十六進制表示形式,只有指數表示形式,而且使用符號是"p"或"P"(十進制的指數表示符號是e或E)
//double f1= 0x1.0; //編譯報錯
double f2=0x1.0p3;
System.out.println(f2);
3.不同進制之間的轉換方法:
a.十進制->二進制/八進制/十六進制
方法:將十進制數,除以目標進制的進制數,並取得餘數
//改進版:編程實現十進制轉成十六進制
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
switch(temp){
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
sb.append("temp-10+'A'");
break;
default:
sb.append(temp);
}
x = x / 16;
}
System.out.println(sb.reverse());
//最簡版:使用if實現
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
if(temp < 10)
{
sb.append(temp);
}else {
sb.append((char)(temp-10+'A'));
}
x = x / 16;
}
System.out.println(sb.reverse());
b.二進制/八進制/十六進制->十進制
方法:對源進制數按位進行編號(從0開始),將每位上的數字乘以源進制數的編號次方,進行相加
例:
八進制306->十進制?
=3*8^2+6*8^0
=198
結果:十進制198
c.二進制->八進制/十六進制的快速轉換
方法:1.二進制轉換八進制:每三位一看(因爲三位二進制正好表示0-7,即八進制)
2.二進制轉換十六進制:每四位一看
例:
二進制11000110
011-000-110(從低位開始,高位處不夠補0)
3 0 6
結果:八進制306
4.碼錶
a.ASCII表: 英文碼錶,每個字符佔一個字節
b.GB2312,GBK,GB18030碼錶: 包含中文,一個英文字符佔一個字節,一箇中文字符佔兩個字節(第一個字節一定是負數)
c.Unicode碼錶:國際碼錶,一個字符佔兩個字節(無論是英文還是中文);java中就是使用的是這個碼錶
d.UTF-8碼錶:國際碼錶,一個英文字符佔一個字節,一箇中文字符佔三個字節
5.類型轉換
a.自動提升:
表達式的數據類型自動提升
所有的byte型、short型和char的值將被提升到int型。
如果一個操作數是long型,計算結果就是long型;
如果一個操作數是float型,計算結果就是float型;
如果一個操作數是double型,計算結果就是double型
注意:
運算中,使用常量整形數值如10時,默認是int型;使用小數格式的數據如3.5,默認是double!
b.強制類型轉換
可以直接將小類型賦值給大類型,而當將大類型數據賦值給小類型時,就需要強制類型轉換,轉換時就將大類型數據的低位字節值給目的類型
注意:
char,byte,short之間的轉換:
char <---> byte
char <---> short
(由於char類型的範圍爲0-65535,轉換時必須使用類型轉換運算符)
參考代碼:
byte a=10;
char b=(char)a;
System.out.println(b);
System.out.println(-b);
byte c=-10;
char d=(char)c;
System.out.println(d);
System.out.println(-d);
c.變量的作用域與生命週期:
作用域:在定義的大括號中
生命週期:從定義開始,直到作用域結束
例:
public static void main(String [] args)
{
{
int a = 2;
System.out.print(a);
}
int a = 4; //這樣書寫是可以的,因爲第一個a的生命週期已經結束!
System.out.print(a);
}
注意:
變量定義過可以先不初始化,但是在你使用前必須進行初始化!
6.其他:
包裝類的緩存值:(對於重複使用,系統會在緩存中創建重複使用的包裝類對象,再次使用時直接使用緩存中的對象)
boolean: true或false
byte: -128-127
short: -128-127
int: -128-127
long: -128-127
char: 0-127
(對於float和double沒有)
例:
//程序輸出:i==j
Integer i = 3;
Integer j = Integer.valueOf(3);
if(i==j)
System.out.println("i==j");
else
System.out.println("i!=j");
byte:佔一個字節,-128-127
short:佔兩個字節,-32768-32767
int:佔四個字節,
long:長整型,佔八個字節,使用時加上"L"(不要使用小寫的"l",容易混淆): long x = 3L;
float:單精度,佔四個字節, float x = 2.3f;
double:雙精度,佔八個字節,
boolean:布爾型,佔一個字節,只能是true或false
char:佔兩個字節,0-65535
a.對於字符'\u0061':使用的是Unicode碼錶定義的字符,其中"0061"是十六進制的數據
b.特殊含義的字符:
\r: 回車
\n: 換行
鍵盤上按下回車鍵: \r\n
\t: 製表符,代表tab
\b: 退格鍵,類似backspace
System.out.println('\'');
System.out.println("\"");
System.out.println("\\");
c.
System.out.print(' ');//正確
System.out.print('');//錯誤
System.out.print(' ');//錯誤
2.浮點數的八進制與十六進制表示的特殊之處:
a.對於浮點數沒有八進制表示,所以在下面代碼中,等價於十進制表示:
float e1 = 03.3f;
System.out.println(e1);
float e2 = 3.3f;
System.out.println(e2);
b.對於浮點數的十六進制表示形式,只有指數表示形式,而且使用符號是"p"或"P"(十進制的指數表示符號是e或E)
//double f1= 0x1.0; //編譯報錯
double f2=0x1.0p3;
System.out.println(f2);
3.不同進制之間的轉換方法:
a.十進制->二進制/八進制/十六進制
方法:將十進制數,除以目標進制的進制數,並取得餘數
//改進版:編程實現十進制轉成十六進制
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
switch(temp){
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
sb.append("temp-10+'A'");
break;
default:
sb.append(temp);
}
x = x / 16;
}
System.out.println(sb.reverse());
//最簡版:使用if實現
int x = 198;
StringBuilder sb = new StringBuilder();
int temp = 0;
while(x > 0){
temp = x % 16;
if(temp < 10)
{
sb.append(temp);
}else {
sb.append((char)(temp-10+'A'));
}
x = x / 16;
}
System.out.println(sb.reverse());
b.二進制/八進制/十六進制->十進制
方法:對源進制數按位進行編號(從0開始),將每位上的數字乘以源進制數的編號次方,進行相加
例:
八進制306->十進制?
=3*8^2+6*8^0
=198
結果:十進制198
c.二進制->八進制/十六進制的快速轉換
方法:1.二進制轉換八進制:每三位一看(因爲三位二進制正好表示0-7,即八進制)
2.二進制轉換十六進制:每四位一看
例:
二進制11000110
011-000-110(從低位開始,高位處不夠補0)
3 0 6
結果:八進制306
4.碼錶
a.ASCII表: 英文碼錶,每個字符佔一個字節
b.GB2312,GBK,GB18030碼錶: 包含中文,一個英文字符佔一個字節,一箇中文字符佔兩個字節(第一個字節一定是負數)
c.Unicode碼錶:國際碼錶,一個字符佔兩個字節(無論是英文還是中文);java中就是使用的是這個碼錶
d.UTF-8碼錶:國際碼錶,一個英文字符佔一個字節,一箇中文字符佔三個字節
5.類型轉換
a.自動提升:
表達式的數據類型自動提升
所有的byte型、short型和char的值將被提升到int型。
如果一個操作數是long型,計算結果就是long型;
如果一個操作數是float型,計算結果就是float型;
如果一個操作數是double型,計算結果就是double型
注意:
運算中,使用常量整形數值如10時,默認是int型;使用小數格式的數據如3.5,默認是double!
b.強制類型轉換
可以直接將小類型賦值給大類型,而當將大類型數據賦值給小類型時,就需要強制類型轉換,轉換時就將大類型數據的低位字節值給目的類型
注意:
char,byte,short之間的轉換:
char <---> byte
char <---> short
(由於char類型的範圍爲0-65535,轉換時必須使用類型轉換運算符)
參考代碼:
byte a=10;
char b=(char)a;
System.out.println(b);
System.out.println(-b);
byte c=-10;
char d=(char)c;
System.out.println(d);
System.out.println(-d);
c.變量的作用域與生命週期:
作用域:在定義的大括號中
生命週期:從定義開始,直到作用域結束
例:
public static void main(String [] args)
{
{
int a = 2;
System.out.print(a);
}
int a = 4; //這樣書寫是可以的,因爲第一個a的生命週期已經結束!
System.out.print(a);
}
注意:
變量定義過可以先不初始化,但是在你使用前必須進行初始化!
6.其他:
包裝類的緩存值:(對於重複使用,系統會在緩存中創建重複使用的包裝類對象,再次使用時直接使用緩存中的對象)
boolean: true或false
byte: -128-127
short: -128-127
int: -128-127
long: -128-127
char: 0-127
(對於float和double沒有)
例:
//程序輸出:i==j
Integer i = 3;
Integer j = Integer.valueOf(3);
if(i==j)
System.out.println("i==j");
else
System.out.println("i!=j");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.