2015-02-05 115 views
3

所以,如果你曾經看過我的網頁,你可能會發現我是一名10年級的學生,剛剛在高中開始他的計算機科學課程。 Yaay! :)Java語法等價於Python語法?

我們學習的語言是Java,在我看來,它與Python(至少目前爲止)有很大不同。但是,有一件事我在啓動Java程序時已經注意到了。對不起,如果語法是關閉或錯誤的。

public static void main(String [] args){ 
    String school = "A beautiful school"; 
    System.out.print(school); 
} 

這是等同於Python的:

if __name__ == "__main__": 
    school = "A beautiful school" 
    print(school) 

我問過我的老師對這個,但似乎並沒有得到一個答案,我完全理解。我也看了一下這個question,但它好像只回答了不同的關鍵字public,static,void,(我現在只是稍微瞭解一下)。

那麼public static void main的行爲與if __name__ == "__main__"一樣嗎?如果不是,兩者有什麼區別?提前致謝!

+0

沒有。 java中的main()是程序的主要功能。在python中,每個模塊/源文件可以具有這樣的主要語句。它在您直接運行給定的模塊/源文件時執行。如果你只是導入模塊,它不會被執行。如果模塊可以用作獨立程序或用於快速測試,那麼它很有用。 – Marcin 2015-02-05 23:53:54

+0

因此,當我明確地說要運行我的java類時,java中的main()運行,不像Python,它可以用於任何事情。我對嗎? – Zizouz212 2015-02-05 23:55:53

+0

這對於Java來說是正確的:'main'是在用「java」命令運行你的類時運行的方法。 – 2015-02-06 00:00:06

回答

2

當你做if __name__ == "__main__":你正在檢查,看看你是否在main已經。

這是不同的,因爲整個python腳本被認爲是「主」,在被認爲是在java中的「主」。

當您運行一個python文件時,它會從最上面開始尋找可執行語句(它繞過函數def initions和class es聲明)。

當您運行java類時,它會查找main方法並從此處開始。

使這個if __name__ == "__main__":的原因是,它只有只有在您直接運行python文件時執行。

正如你將要學習的那樣,python文件也可以被認爲是包含在其他python腳本中的「模塊」。在這種情況下,你不希望這個'主'邏輯被隱式執行。

就像你幾乎從來沒有調用類main作爲一個更大的應用程序在Java中的一部分時導入它。

+0

好的。我知道Python基本上是一堆具有各種函數和類的文件,它們基本上都是由主腳本組合在一起的(至少在過去的幾年裏我是用Python編程的),而在Java中它只是執行public static void main中發生了什麼? – Zizouz212 2015-02-06 00:30:50

+1

公共靜態void main是所謂的「入口點」,它是主程序執行開始的地方(雖然可以事先發生各種聲明和初始化活動) – robert 2015-02-06 00:41:47