qq_陽光下的海風_0
2016-09-22 11:05:36
?public?static?void?write(){
String?text="abcdefg";
? ByteArrayInputStream?bais=new?ByteArrayInputStream(text.getBytes());
?????????int?n=bais.read();
?????????while(n!=-1){
????????? System.out.print((char)n);
????????? n=bais.read();
?????????}
?????????try?{
???????? ?if(bais!=null){
bais.close();
???????? ?}
}?catch?(IOException?e)?{
e.printStackTrace();
}
???}我的疑惑如下:? ? ?整個Java代碼不都是在內存中運行的嗎?那個整個Java程序不就是內存的一部分?為什么還會有內存流(用來傳遞程序和內存之間的數據)這一說?? ? ? ?請大神解釋一下,在此謝過啦!? ? ?注:和什么堆內存、棧內存等沒有關系,真的是不理解內存與程序的關系。
1 回答

阿旭_
TA貢獻217條經驗 獲得超353個贊
內存(數據斷電消失:內存條、cpucatch……),外存(數據斷電不消失:外存器、U盤、硬盤、光盤)
顯示器要顯示內容,通常需要先把展示的數據從外存(比如硬盤)讀到內存中去,僅僅讀是不夠的,還要有一定的邏輯去計算顯示的數據,負責計算的是cpu。
簡言之,玩游戲也好、打開eclipse也好,只要是運行的,都只能在內存中運行(斷電就消失了)。所以在打開Eclipse編寫代碼的時候建議要經常Ctrl+S(保存正在編寫的代碼到磁盤/硬盤中去)。這樣電腦突然斷電了,再打開ecipse也能看到相應編輯的文件。
==============
一個應用程序通常稱做一個進程,進程也是在內存中的,內存要拿外存(磁盤的數據時)這個過程稱做 內存與外存的交互。在java里叫做IO文件流讀寫操作。
IO流讀寫(內存流讀:比如向D盤中打開一個名為abc.txt的文件,并將內容讀到內存中去)、IO流寫(內存流寫:比如向硬盤D盤保存一個名為abc.txt的文件,并在這個文件中寫數據"哈哈哈哈"并保存)。
整個過程D盤的abc.txt這個文件是不會因為突然斷電而消失的,當你再打開電腦去D盤找,依然能看到abc.txt文件。
但這個操作過程確是由java中的InputStream相關類文件實現的。
添加回答
舉報
0/150
提交
取消