1. 程式人生 > 實用技巧 >面試題.01

面試題.01

面試題.01

1. 浮點型精度丟失?怎麼解決?

 1 import java.math.BigDecimal;
 2  3 public class Test_MST01 {
 4  5     public static void main(String[] args) {
 6         float f1 =2.3f;
 7         float f2 =2.5f;
 8         System.out.println(f1-f2);//-0.20000005
 9 10         //如果在專案中,涉及到敏感的的數字,不建議使用float/double
11         //建議使用BigDecimal,替換到浮點型別
12 //建議使用引數為String型別的構造方法,用double型別的構造方法還是會有問題 13 BigDecimal f3=new BigDecimal("555.55"); 14 BigDecimal f4=new BigDecimal("555.56"); 15 16 System.out.println(f3.subtract(f4));//-0.01 subtract減法運算 17 } 18 19 }

1 為什麼浮點型精度會丟失?  
2 計算機識別的是二進位制的形式,對於小數使用二進位制不能夠精確表示,只能接近值.
3 4 解決方式: 5 可以使用BigDecimal ,替換掉浮點型別,定義完浮點型別變數後再通過BigDecimal 類提供的算術方法進行操作,建議使用引數為String型別的構造方法.

2. int的大小?

1 int佔4個位元組  32位(1位元組=8位)  範圍: -2的31次方到+2的31次方-1
2 int 型別變數數值最大是2147483647(10位)
3 //在做使用者登入介面時使用者號碼就不能用int型別

3. byte的大小?最大值+1的結果會是怎樣?

 1 範圍: -128 ~ 127
 2     
 3 public class Test_MST02 {
4 public static void main(String[] args) { 5 byte x=-128; 6 // 範圍-128~127 7 // --x,表示的是在原來的那個值的基礎上,-1; 8 System.out.println(--x);//127 9 10 byte y=127; 11 System.out.println(++y);//-128 12 } 13 14 }

4. int 和 char是否可以相互轉換?

 1 public class Test_MST03 {
 2  3     public static void main(String[] args) {
 4         //數字轉字元
 5         int num=65;
 6         char c=(char) num;
 7         System.out.println(c);//A
 8         
 9         //字元轉數字
10         char c2='A';
11         int num2=c2;
12         System.out.println(num2);//65
13         
14         //字元轉字串
15         char c3='A';
16         String string=c3+"";
17         System.out.println(string);//"A"
18         System.out.println(string.getClass());//class java.lang.String
19 20     }
21 22 }