最贊回答 / 牙膏牙膏牙膏
in.read(buf,0,buf.length),這個方法返回的是它讀取到的字節(jié)個數(shù)!正如你假設(shè)的,文件100字節(jié),buf容量80字節(jié):第一次讀取的時候是返回80;第二次進入while的時候,文件讀取的字節(jié)是從第81個字節(jié)開始(讀取的時候文件有個指針一邊讀一邊移動的,前面老師講過),就是說文件還剩下20個字節(jié)可讀,所以這時候返回的字節(jié)是20;第三次進入while的時候,文件已經(jīng)沒有內(nèi)容可讀了,所以返回的是-1;這時候就跳出了while!純手打!望采納!
2018-07-21
已采納回答 / qq_星河k_0
問題和代碼無關(guān),你只要輸出System.out.println(0xffffffff)就會得到-1;原因是int 是有符號位,占4個字節(jié),而0xffffffff是以int類型存儲的,int是有符號的。即1111 1111 1111.......第一位被用來記錄符號,所以這里就被解釋為負(fù)號了,而Java在編碼時,存儲的是負(fù)數(shù)的補碼,所以你的1111.....就成了1000......+1就是10000.....1就是-1啦。所以16進制最大的數(shù)是0x7fffffff.
2018-07-17
已采納回答 / 神樂Triste
您說的是in是什么類型的呢,F(xiàn)ileInputStream?在FileInputStream的read()方法中有返回值為int類型的重載函數(shù).
2018-07-07
已采納回答 / 一把年紀(jì)小二郎
因為你的只導(dǎo)入了BufferReader的包,沒有導(dǎo)入其余流對應(yīng)的包 你可以改為1.導(dǎo)入你目前代碼中使用的流包2.直接導(dǎo)入java.io.*所有的IO包
2018-06-18
我能說4:56和6:00的代碼不一樣嗎,難道代碼注釋后,里面的內(nèi)容就不一樣了嗎
2018-06-11
已采納回答 / HungerCheung
問題原因:<...code...>解決方法:
//注釋掉或者直接刪除下面這行代碼可以得到和老師同樣的結(jié)果 //Bar2?bar2?=?new?Bar2(); //該程序是為了測試反序列化得到對象是否調(diào)用其構(gòu)造方法 //因此重新新建一個Bar2的實體對象是完全沒有必要的,反而會混淆測試結(jié)果
2018-06-05
最贊回答 / HungerCheung
以題主的代碼為例:我所理解題主的困惑在于,for循環(huán)中限制條件為什么是n而bytes.length。首先我簡要解釋一下這個n與bytes.length的區(qū)別:length是一個in類型的整數(shù),用于記錄bytes這個字節(jié)數(shù)組的長度。length表示這bytes的最大容量,是一個大小始終不變的固定值。n是也一個int類型的整數(shù),用于接受file的read方法的返回值。因為這個返回值表示一次讀取從bytes數(shù)組中到的字節(jié)數(shù),所以n就隨著每次從bytes中讀取的字節(jié)數(shù)的變化而變化??磥磉@里題主可能會想,file的...
2018-06-04