1 回答

TA貢獻883條經(jīng)驗 獲得超454個贊
可以說,你所思考的這些確實和語言沒有關(guān)系。
內(nèi)存分配啊、代碼如何運行啊...這些是硬件和操作系統(tǒng)層面的事。
關(guān)于“java是不是一樣照此理解”中的“理解”二字,我覺得要從兩個方面說:
在語言層面:
有些語言偏向底層,比如 C/C++,在這種語言中就會比較強調(diào)內(nèi)存方面的概念,比如內(nèi)存分配啊、內(nèi)存布局啊...? ?所以講解內(nèi)存方面的課程就比較適合用 C 語言。
而有些語言就不強調(diào)這些。比如 Java 是比較純粹的面向?qū)ο箫L(fēng)格的語言。在 Java 的世界里存在的都是“對象”,在語言概念層面上完全沒有內(nèi)存這東西。你看它和 C 相比根本就沒有“指針”類型。
這些區(qū)別其實是不同編程語言設(shè)計上的不同。每種語言都有自己的風(fēng)格、概念、和內(nèi)在哲學(xué)。
學(xué)習(xí)一種語言最重要的就是理解它的設(shè)計哲學(xué),學(xué)會以這種語言的方式去思考。比如:初學(xué) Java 時只要知道要 new 一個對象出來就可以用它了,忘記內(nèi)存的事吧。 而寫 C 代碼時則要時刻記著內(nèi)存,不然就容易出錯。
在實現(xiàn)層面:
當(dāng)然不管是 C 還是 Java 程序最終都運行在硬件和操作系統(tǒng)之上,所以它們執(zhí)行時操作硬件的方式都是大同小異的。? 我想你也能夠推測出,Java 中 new 出來的對象就是在堆中分配的內(nèi)存之中。沒錯,是這樣的。? 而從這個層面對 Java 進行理解,我認為算是對 Java 的進階學(xué)習(xí),也就是開始探究 JVM——Java 底層的虛擬機是如何運行的。? 但我認為這一步應(yīng)該在能夠熟練使用 Java 之后再進行。