Java基礎(chǔ)常量變量與類型轉(zhuǎn)換

一.目標

1.常量的使用
2.變量的使用
3.類型轉(zhuǎn)換

二.知識點

1.常量

概述:在代碼的運行過程中,值不會發(fā)生改變的數(shù)據(jù)
分類:
a.整數(shù)類型:所有的整數(shù)
b.小數(shù)常量:所有帶小數(shù)點的  2.0 
c.字符常量:帶單引號的,單引號中有且只有一個內(nèi)容
d.字符串常量:帶雙引號的
e.布爾常量: true false 當做條件判斷
f.空常量:null 代表不存在,不能直接使用

2.變量

概述:在代碼運行的過程中,值會隨著不同的情況而隨時發(fā)生改變的數(shù)據(jù)

| 數(shù)據(jù)類型     | 關(guān)鍵字         | 內(nèi)存占用 | 取值范圍                                                     |
| :----------- | :------------- | :------- | :----------------------------------------------------------- |
| 字節(jié)型       | byte           | 1個字節(jié)  | -128 至 127  定義byte變量時超出范圍,廢了                     |
| 短整型       | short          | 2個字節(jié)  | -32768 至 32767                                              |
| 整型         | int(默認)    | 4個字節(jié)  | -2^31^ 至 2^31^-1  正負21個億<br>-2147483648——2147483647     |
| 長整型       | long           | 8個字節(jié)  | -2^63^ 至 2^63^-1   19位數(shù)字<br>-9223372036854775808到9223372036854775807 |
| 單精度浮點數(shù) | float          | 4個字節(jié)  | 1.4013E-45 至 3.4028E+38                                     |
| 雙精度浮點數(shù) | double(默認) | 8個字節(jié)  | 4.9E-324 至 1.7977E+308                                      |
| 字符型       | char           | 2個字節(jié)  | 0 至 2^16^-1                                                 |
| 布爾類型     | boolean        | 1個字節(jié)  | true,false(可以做判斷條件使用)                              |
分類:
基本數(shù)據(jù)類型:4類8種
整型:byte short int long
浮點型:float double
字符型:char
布爾型:boolean
引用數(shù)據(jù)類型:類 枚舉 接口 數(shù)組 注解

注意點:
a.整數(shù)默認類型為int
b.小數(shù)默認類型為double
c.字符串不屬于基本數(shù)據(jù)類型,屬于引用數(shù)據(jù)類型,String是一個類,只不過用的時候定義可以按照基本數(shù)據(jù)類型的格式定義

3.數(shù)據(jù)類型轉(zhuǎn)換

1.什么時候發(fā)生:
a.當?shù)忍栕笥覂蛇叢灰恢碌臅r候
b.小的數(shù)據(jù)類型與大的數(shù)據(jù)類型做運算

2.分類
自動類型轉(zhuǎn)換:
a.將取值范圍小的數(shù)據(jù)類型賦值給取值范圍大的數(shù)據(jù)類型   --> 小自動轉(zhuǎn)大
b.取值范圍小的數(shù)據(jù)類型和取值范圍大的數(shù)據(jù)類型數(shù)據(jù)做運算  -->小自動轉(zhuǎn)大

強制類型轉(zhuǎn)換:
當取值范圍大的數(shù)據(jù)類型數(shù)據(jù)賦值給取值范圍小的數(shù)據(jù)類型 -->需要強轉(zhuǎn)  比如 把long賦值給int 

3.基本數(shù)據(jù)類型取值范圍大小排序
byte,short,char - > int - > long - > float - >double
強轉(zhuǎn)的注意事項:
1.不要隨意寫成強轉(zhuǎn)的格式,因為會有`精度損失`,`數(shù)據(jù)溢出`現(xiàn)象
2.byte,short定義的時候如果等號右邊是整數(shù)常量,如果不超出byte和short的范圍,不需要我們自己強轉(zhuǎn),jvm自動轉(zhuǎn)型  ; byte,short如果等號右邊有變量參與,byte和short自動提升為int,然后結(jié)果再次賦值給byte或者short的變量,需要我們自己手動強轉(zhuǎn)
3.char類型數(shù)據(jù)如果參與運算,會自動提升為int型,如果char類型的字符提升為int型會去ASCII碼表(美國標準交換代碼)范圍內(nèi)去查詢字符對應(yīng)的int值,如果在ASCII碼表范圍內(nèi)沒有對應(yīng)的int值,回去unicode碼表(萬國碼)中找 
舉例:
//精度損失
        int i = (int)2.9;
        System.out.println(i);
        
        /*
          數(shù)據(jù)溢出
          int型占內(nèi)存4個字節(jié),4個字節(jié)變成二進制是32位
          
          100個億: 10 0101 0100 0000 1011 1110 0100 0000 0000 -> 34位二進制
          
          100個億的二進制位比int型的二進制位多出來2位,此時干掉最前面的2位
          
          101 0100 0000 1011 1110 0100 0000 0000
          
          101 0100 0000 1011 1110 0100 0000 0000->1410065408
        */
有可能的面試題:
1.8>>>32位 -> 相當于沒有移動還是8  
2.8>>>34位 -> 相當于往右移動2位
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容