1. 程式人生 > >Example.java:1: 錯誤: 類 Rect 是公共的, 應在名為 Rect.java 的檔案中宣告

Example.java:1: 錯誤: 類 Rect 是公共的, 應在名為 Rect.java 的檔案中宣告

【原始碼】

public class Rect{//Rect類
    double width;
    double height;
    double getArea(){
        return width*height;
    }
}
class Example{//主類
    public static void main(String args[]){
        Rect rectangle;        
        rectangle=new Rect();
        rectangle.width=1.819;
        rectangle.height=1.5;
        double area=rectangle.getArea();
        System.out.println("矩形面積:"+area);
    }
}

【編譯錯誤】

Example.java:1: 錯誤: 類 Rect 是公共的, 應在名為 Rect.java 的檔案中宣告

【解決方法】

原始檔的命名:如果原始檔中有多個類,那麼至多隻能有一個類是public;如果有一個類是public,那麼原始檔的名字必須與這個類的名字完全相同,並且副檔名是java就可以了(不要求主類一定是public類)。上例中,原始檔中的Rect類是public類,所以必須把原始檔命名為Rect.java

從主類開始執行:當java應用程式中有多個類時,java命令執行的類名必須是主類的名字(沒有副檔名)。當使用直譯器java執行應用程式時,java的執行環境將Rect.class和Example.class載入到記憶體,然後執行主類的main方法來執行程式。

【java與C\C++的不同】

位元組碼的平臺無關性:平臺的核心是作業系統(OS)和處理器(CPU),每種平臺都會行成自己獨特的機器指令,比如,某個平臺可能用8位序列程式碼10001111表示一次加法操作,以10100000表示一次減法操作,而另外一種平臺可能用8位序列程式碼10101010表示一次加法操作,以10010011表示一次減法操作。程式需要經過作業系統和處理器來執行,因此,與平臺無關是指程式的執行不因作業系統、處理器的變化導致無法執行或出現執行錯誤。

C\C++語言提供的編譯器對C\C++源程式進行編譯時,將針對當前C\C++源程式所在的特定平臺進行編譯、連線,然後生成機器指令,即根據當前平臺的機器指令生成

機器碼檔案(可執行檔案)。這樣一來,就無法保證C\C++編譯器所產生的可執行檔案在所有的平臺上都能正確的被執行,這是因為不同的平臺可能具有不同的機器指令。

C\C++針對特定的作業系統 和CPU進行編譯,而java語言提供的編譯器針對java虛擬機器把java源程式編譯為稱作位元組碼(Byte-code)的一種“中間程式碼”。位元組碼是可以被java虛擬機器識別、執行的程式碼,即java虛擬機器負責解釋執行位元組碼,其執行原理是:java虛擬機器負責將位元組碼翻譯成虛擬機器所在平臺的機器碼,並讓當前平臺執行該機器碼。在一臺計算機上編譯得到的位元組碼檔案可以複製到任何一個安裝了java執行環境的計算機上直接使用。位元組碼由java虛擬機器負責解釋執行,即java虛擬機器負責將位元組碼翻譯成本地計算機的機器碼,並將機器碼交給本地的作業系統來執行。