叨叨兩句
- 要構建多維的支持系統(友情、愛情、親情、事業)
牛客網——java專項練習003
1
判斷對錯。在java的多態調用中,new的是哪個類就是調用的哪一個類的方法。(錯)
多態==晚綁定或動態綁定
不要把函數重載理解爲多態,由於多態是一種運行期行爲,不是編譯器行爲。
多態:父類的引用指向子類的實例。
好比 Parent p = new Child()
當使用多態方式調用方法時,首先檢查父類中是否有該方法,若是沒有,則編譯錯誤;
若是有,再去調用子類的同名方法。
靜態方法特殊,靜態方法只能繼承,不能覆蓋,若是子類有和父類相同的靜態方法,只是起到隱藏父類方法的做用。這時候,誰的引用就調用誰的方法。
2
通過強制類型轉換之後,變量a,b的值分別爲多少?(128,-128)
short a =128;
byte b =(byte) a;
-------------------------------------------------------------------------------
int佔4個字節,32位
byte佔1個字節,8位
因此強轉時會截斷。前24位
---------------------------------------------------------------------------
在內存中表示形式( 注意java中是以補碼錶示一個數,因此表示形式是補碼,不是原碼! ):
int a = 3 00000000 00000000 00000000 00000011 (強轉byte時前面24個0被截斷)
byte b = 3 00000011
int a = -3 11111111 11111111 11111111 11111101 (強轉byte時前面24個1被截斷)
byte b = -3 11111101
----------------------------------------------------------------------------
一、Java中用補碼形式表示
二、第一位正負位,1表示負,0表示正。
三、原碼:一個數的二進制表示。
3的原碼00000011 -3的 原碼 10000011
四、反碼:負數原碼按位取反(符號位不變)。正數原碼自己。
3的反碼00000011 -3的反碼11111100
五、補碼:正數是原碼自己。負數反碼加1。
3的補碼是00000011 -3的補碼是11111101
-------------------------------------------------------------------------------
已知負數的補碼,求負數:
補碼-1=反碼,反碼按位取反=該負數絕對值
已知負數,求負數的補碼:
一、負數原碼除了符號位,按位取反(不含符號位),加1。
二、負數絕對值的補碼(也就是原碼),按位取反(含符號位),加1
java int 128轉爲byte,值:
128爲正數,補碼爲10000000(前面24個0省略),變成byte,只剩下10000000(byte爲1個字節),由於開頭是1,因此爲負數。即1個負數的補碼是10000000。反碼是01111111,原碼是1000000。是128.由於是負數,因此是-128。
-------------------------------------------------------------------------------