我有點困惑... 我知道只有在需要它們的時候,類加載器纔會加載這些類,也就是當我們試圖使用靜態變量或者何時我們正在創建該類的實例。因此,如果我們有例如在我們的程序中有3個類,我們將只使用一個類,然後只加載那些特定的類並且不休息,但是當我們運行java編譯器時,它會創建3個.class文件,我知道這3個.class文件是字節碼文件,但是這個字節碼是什麼,加載一個類和生成一個類的字節碼有什麼區別?這個字節碼的使用在哪裏?如果我們不打算使用某個特定的類,那麼什麼是否需要爲該類生成一個字節碼?java中的字節代碼有什麼用途
-2
A
回答
4
Java是一種編譯語言。編譯成字節碼的目的是允許代碼在任何平臺上的JVM上運行。平臺獨立性是Java內置的一項功能。 此外,除非它們具有相互依賴關係,否則不必編譯所有三個類文件。您可以指定要在控制檯javac命令中編譯哪些特定文件。如果您使用的是IDE,請檢查您的設置或從項目中排除不需要的類。
3
正在加載一個類在運行時發生,當您準備調用該類所具有的任何屬性時。
生成類的字節碼發生在編譯時。這允許代碼在虛擬機上運行。
Java是一種編譯語言,它運行在Java虛擬機之上。編譯字節碼可將任何更高級別的代碼(無論是Java,Scala還是Clojure)轉換爲machine-independent instructions以供JVM讀取。這就是爲什麼你的(特定於後端的)計劃將沒有在Linux,Windows和Mac OS X的修改通常運行
Java語言將編譯路徑中對彼此的依賴任何類,因此,如果您有一個類,但它不被使用,很可能不會被編譯。可能有工具會覆蓋它,所以如果您發現自己沒有使用類,請移除該類,以避免生成不必要的字節碼。
1
C++和java等語言之間的差異是字節碼。 C++二進制文件(編譯,彙編,鏈接)將爲其編譯的操作系統提供機器(操作)代碼。在Java的情況下,字節碼是JVM的目標。字節碼將具有JVM的操作碼。 JVM反過來會啓動相應的os調用。所以字節碼和JVM使java程序獨立於操作系統。 註冊加載類加載,它發生在程序需要它時。這是在運行時。 JIT將在需要時進行第二次編譯。
相關問題
- 1. 此代碼更改有什麼用途?
- 2. Java DB Web Starter GIT代碼中的server.xml的用途是什麼?
- 3. Java中的ByteBuffer有什麼用途?
- 4. java中的hypen( - )有什麼用途
- 5. Java代碼中@param註釋的用途是什麼?
- 6. 什麼是執行Java字節碼檢測的最有前途的方法?
- 7. 什麼是Java字節碼中的#號?
- 8. Java代理有什麼有趣的用途?
- 9. Java中的數字數據類型有什麼用途?
- 10. Java中的Buffer的用途是什麼?
- 11. Java中`<< ='的用途是什麼?
- 12. Java中IO Streams的用途是什麼?
- 13. 調節器ServiceType的用途是什麼?
- 14. 什麼是Java字節碼注入?
- 15. 我的文件中該代碼的用途是什麼?
- 16. 將源代碼轉換爲Java字節碼的實用程序是什麼
- 17. 此代碼中行[/ \ w + /]的用途是什麼?
- 18. 此代碼中@ins << lambda`的用途是什麼?
- 19. RequireJS代碼中「define.amd = {jQuery:true}」的用途是什麼?
- 20. 以下示例代碼中$的用途是什麼?
- 21. jQuery源代碼中「self.each(callback,array)」的用途是什麼?
- 22. 這段代碼中嵌套接口的用途是什麼
- 23. 這段代碼中`or None`的用途是什麼?
- 24. Silverlight SDK源代碼中此方法的用途是什麼?
- 25. 此代碼中第四行的用途是什麼
- 26. 理解Java字節代碼
- 27. 什麼期望Java字節代碼爲泛型類生成?
- 28. 爲什麼每個Java源文件有多個字節的代碼類文件?
- 29. Java源代碼的字節碼
- 30. 我的java代碼有什麼問題?
因此,當你需要它時它會更快? – Drew
如果你不想使用特定的類,爲什麼要寫它? – RealSkeptic
爲什麼notepad.exe在我的系統上?我現在不使用它 – Drew