Java的小实验——各种测试以及说明
日期:2018.10.07
星期五
博客期:014
?
一、Java中的位運算
代碼如下:
1 package Morts107; 2 3 public class Test107 { 4 public static void main(String[] args) { 5 int z; 6 z = 13>>1;//00001101(13)----------------[右移1位]-------------->00000110(6) 7 System.out.println(" z = "+z); 8 z = 45>>2;//00101101(45)----------------[右移2位]-------------->00001011(11) 9 System.out.println(" z = "+z); 10 z = 6<<1;//00000110(6)------------------[左移1位]-------------->00001100(12) 11 System.out.println(" z = "+z); 12 z = 11<<2;//00001011(11)----------------[右移2位]-------------->00101100(44) 13 System.out.println(" z = "+z); 14 z = -1>>2;//10...0000001(-1)----------------[左移1位]-------------->10...010(-2) 15 System.out.println(" z = "+z); 16 } 17 }
本程序實現了int類型數值的位運算,如代碼中的注釋一樣,計算機只能儲存1和0,所以說這些數都是二進制的!而二進制的13就是(…001101),讓它向右位移1位,自然就成了6(…00110),即13>>1==6成立,所以位運算就是這樣!<<和>>分別表示左移和右移,而右邊的操作數就是位置移動的數的大小!如11(…01011)左移2位,就是44(…0101100),即11<<2==44成立;這就相當于<<是這個數除以(2的后操作數次方)的結果,而>>就相當于是乘以(2的后操作數次方)的結果!而對于負數來說,它的第一位是1,所以負數最大也就是-1,-1/2也相當于-1!
正整數的原碼、反碼和補碼都一樣;
負數部分:
原碼和反碼的相互轉換:符號位不變,數值位按位取反
原碼和補碼的相互轉換:符號位不變,數值位按位取反,末位再加1
二、數據類型所占的位數
Byte ???? 1 字節?? (8bit)
Char ??? 2 字節?? (16bit)
Short????? 2 字節?? (16bit)
Int????????? 4字節??? (32bit)
Float????? 4字節??? (32bit)
Long????? 8字節??? (64bit)
Double?? 8字節??? (64bit)
說明了一個問題:取值范圍小的可以往取值范圍大的類型轉(浮點類型所表示范圍較大),在非浮點類型轉換到浮點類型時一定會失去一部分精度!
三、測試題目
結果如下:
?
結論:枚舉類型與String類不同,可以直接用==、!=來判斷關系!
掌握了!
四、運行代碼
結果如下:
?
不意外,因為float和double都是浮點類型,是不精確的!
五、實驗
#:以下代碼的輸出結果是什么?
????????????? int X=100;
????????????? int Y=200;
????????????? System.out.println("X+Y="+X+Y);
????????????? System.out.println(X+Y+"=X+Y");
@:
?
#:為什么會有這樣的輸出結果?
String類的+是相當于StringBuffer類中的append()函數,就是因為這個原因,System.out.println(”I love”+” China!”);實際上和System.out.println(“I love China!”);是一個效果,而在X和Y(兩個整形int的數據)相加時,自然是調用它們自己的加法函數了!)
轉載于:https://www.cnblogs.com/onepersonwholive/p/9751092.html
總結
以上是生活随笔為你收集整理的Java的小实验——各种测试以及说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天焰菲尔好不好
- 下一篇: (办公)网页发送到桌面快捷方式怎么做