public void 修飾是非靜態方法,該類方法屬於對象,在對象初始化(new Object())後才能被調用;
public static void 修飾是靜態方法,屬於類,使用類名.方法名直接調用。對象
正如答主 @小透明 所說,非靜態方法之間能夠互相調用,非靜態方法也能夠調用靜態方法;可是靜態方法不能夠直接調用(未初始化的)非靜態方法。因爲 public static void main 做靜態方法,因此遵循這個原則。語法
可是 Java 能夠經過對象名調用靜態方法(對象名.靜態方法)。Java 中不會致使語法錯誤(syntax error),可是不推薦這樣使用,靜態方法與非靜態方法調用時應當絕對區分;並且其餘 OOP 語言如 C#,Swift,Objective-C 都沒有這樣的語法。