1、JAVA資料型別
JAVA的資料型別
A:基本資料型別
整型:byte、short、int、long
浮點型:float、double
布林型:boolean
字元型:char
B:引用資料型別
類:class
介面:interface
陣列:Array
C:八種基本資料型別的包裝類(引用資料型別)
Byte: 類將基本型別 byte 的值包裝在一個物件中
Short: 類在物件中包裝基本型別 short 的值
Integer:Integer 類在物件中包裝了一個基本型別 int 的值
Long: 類在物件中包裝了基本型別 long 的值
Float: 類在物件中包裝一個基本型別 float 的值
Double: 類在物件中包裝一個基本型別 double 的值
Character: 類在物件中包裝一個基本型別 char 的值
Boolean: 類將基本型別為 boolean 的值包裝在一個物件中
問題
面試官的問題一:JAVA為什麼需要這麼多資料型別呢?
答:我們電腦上的記憶體大小是有極限的,我們在使用記憶體的時候要本著一些原則:
1:使用完畢之後立即釋放記憶體
2:儘量不要浪費記憶體
3:java的不同的資料型別就是要讓使用者按需分配記憶體大小。
合理開銷
面試官的問題二:JAVA基本資料型別的包裝類到底能幹嘛?
1:儲存著這個基本資料型別的最大、最小值
2:表示基本型別 short 的 Class 例項。
3:java的不同的資料型別就是要讓使用者按需分配記憶體大小。
合理開銷
面試官的問題三:小周,你工作三年了,有什麼難忘的事情?
小周答:
我們公司有一個小鄭,下班時間不走,很糾結,因為程式出
錯,找不到地方,於是,我挺身而出,幫他解決了。java中的基本資料
型別都有極限值,如果超越這個極限值,將發生無法預知的後果 。
**面試官的問題四:程式中遇到帶小數點的資料運算如何處理?
Java中遇到帶小數點的數都認為是double型,所以開發中儘量不要使用float,如果使用混合資料型別運算會強制轉換。遇到浮點資料型別的運算推薦使用BigDecimal,可以保留精度。
**面試官的問題五:包裝的常量池陣列:-128到127
超過了這個範圍返回的是一個物件,沒有超出,返回的則是一個基本資料型別的值
1:基本概念
比如:請您談談對JAVA的資料型別的理解
java只所以對資料進行型別的區分,是為了合理的分配和使用
記憶體的開銷,主要分為兩大型別:基本資料型別和引用資料型別
基本資料型別的分類:
整形、浮點型、布林型、字元型
引用資料型別的分類:
類、介面、陣列
那我來詳細闡述下基本資料型別:
byte、short、int、long、float、double、boolean、char
這八種類型分別對應八種包裝類:
包裝類儲存著此種基本資料型別的最大值、最小值
2:深度拓展
每一種基本資料型別因為有儲存的極限值,如果超過這個值將導致 不可預知的結果
比如:因為超過極限導致的死迴圈
byte b1=127;
b1++;
System.out.println(b1);//結果不是128
for(byte b=1;i<=Byte.MAX_VALUE;b++){}
混合資料型別進行算時有一些規則:
混合資料型別進行算將先進行型別的統一
將小型別向大型別進行轉換,再進行運算。
float f1=3.14f;
System.out.println(3.14==f1);
結果是false
實際專案開發中,不使用float double來進行浮點數的運算
使用BigDecimal來準確的控制精度
Integer包裝類在進行宣告賦值時有兩種方式:
如果是用簡便的方法進行則要注意值如果大於127或小於等於127,結果不同
一個表示new物件,一個表示類似於基本資料型別
Integer i1=128;
Integer i2=128;
System.out.println(i1==i2);
System.out.println(i1.equals(i));
JAVA表達中如果資料型別不統一,則要注意運算的規則:
如果遇到不帶小數點值預設為int,帶小數點的預設為double
型別如果不統一,就進行統一之後再運算
3:專案運用
防止資料型別不統一的情況下產生的強制轉換
使用推薦做法:s++
如果是浮點資料型別進行運算推薦使用BigDecimal,它可以保證精度
小心資料型別儲存的極限範圍,防止溢位
4:常見異常
java.util.InputMismatchException: Value out of range. Value:"129"