當我打電話爲一個類的實例方法如下: object_name.function_name();編譯器如何知道在後臺必須爲該「object_name」調用「function_name」?Java的實例方法調用
-1
A
回答
1
這是由編譯器,因爲它讀你的代碼確定。 Java有一個定義語言規則和語法的語法。 Java的特定語法規定,對象引用可以跟一個點,然後是一個方法名。
所有語言(不只是編程語言)也有類似的規定。根據英語的語法,你的大腦正在編譯你正在閱讀的句子。語言的規則是使語言能夠被理解的原因。通過定義關於表達式的含義的規則,我們能夠進行交流。編程語言也不例外!
1
當編譯器讀取代碼時,它將每個「word」(空白或運算符之間的任何內容)推入內部堆棧。當它找到諸如「+」,「=」或「。」等操作符時,它會彈出堆棧中的最後一個「單詞」。編譯知道「。」操作符意味着你正在從一個對象中調用一個方法,這個對象的名字就是你剛剛彈出的那個單詞。然後它查找該方法的該對象的類文件。
例如:
Object object_name = new Object();
object_name.function_name();
當編譯到達上面的行時,它將object_name推入內部堆棧,然後在Object.class文件內查找名爲function_name()的方法。如果它沒有找到一個Object.class文件,它會尋找一個Object.java文件,將編譯,然後尋找函數名()新編譯Object.class文件中。
相關問題
- 1. 調用實例方法的實例方法調用實例方法
- 2. 調用由實例名實例方法爲字符串在Java
- 3. Java實例方法
- 4. java中的實例方法
- 5. 在javascript中調用實例創建回調的實例方法
- 6. 無法從Clojure調用實例方法。
- 7. 創建類的新實例,然後調用arg的方法Java
- 8. Java Nashorn實例化方法
- 9. 從創建的實例調用方法
- 10. 在調用它的實例類方法
- 11. Scala - 調用上層實例的方法
- 12. 在Clojure中調用沒有參數的Java實例方法
- 13. 如何在傳入XSLT的Java實例上調用方法?
- 14. 如何從JavaScript調用Java實例的方法?
- 15. 從實例本身調用實例變量的方法
- 16. 如何在實例類中的實例上調用方法?
- 17. 在實例化線程中調用的實例方法
- 18. 靜態方法是否可以調用Java中的實例方法
- 19. 在android中調用方法 - 實例
- 20. 分類實例方法不調用
- 21. 從塊內調用實例方法
- 22. 調用從一個實例方法
- 23. 調用ID爲零 - 實例方法
- 24. 調用類實例方法onclick javascript
- 25. @compatibility_alias可以調用實例方法嗎?
- 26. 作爲實例方法調用?
- 27. 問題調用實例方法
- 28. 從java-me內部類調用其他實例方法
- 29. 在對象實例和旁註上調用靜態方法Java
- 30. 調用實例方法從另一個類訪問IBOutlet實例
你的問題不是很清楚。你可以嘗試改寫它嗎?如果您編寫object_name.function_name(),那麼「object_name」位於「。」的左側,這就是它知道的方式......除非您要求其他的東西? – Steve 2010-03-21 06:22:16