亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java程序不是在內存中運行的嗎?

Java程序不是在內存中運行的嗎?

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相關類文件實現的。

查看完整回答
2 反對 回復 2016-09-22
  • qq_陽光下的海風_0
    qq_陽光下的海風_0
    其實基本的IO流的讀寫,我倒還能理解,就是對磁盤中數據的讀取和寫如操作。 但是,一般的(不涉及到內存流)讀寫操作,應該是把數據從磁盤中讀到程序中,或者是把程序中的數據寫入到磁盤中,此時應該還沒有涉及到內存流,不然怎么會有內存流這一說呢? 概念上內存流是程序與內存之間進行數據交流的通道,也就是說把磁盤盤中的數據要真想讀到內存中,得要先讀到程序中,再從程序中讀到內存中。 以上,是我看了代碼后自己感覺的,但是為什么把數據讀到程序中時,數據還沒有到內存中,就不是很理解了!
  • 1 回答
  • 0 關注
  • 1530 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號