2005-09-25

Java作業二

  1. Explain bytecode, JVM
    要將這兩種名詞解釋清楚,首先要先瞭解何謂「高階語言」(high-level languages)和「低階語言」(low-level languages)。
    所謂的高階語言,是指程式語言的語法比較貼近人類的自然用語,容易為人類所閱讀以及瞭解;而機械語言(machine language)則是比較貼近電腦可以理解的語法,相對於高階語言,機械語言(或者類似機械語言)的程式語法,我們都稱之為低階語言。
    以C語言為例。C語言是屬於high-level languages的一種,因此電腦在執行我們所寫出來的程式之前,需要經過一個「編譯」(compiling)的動作,將高階語言翻譯成機械語言,讓電腦能夠看得懂我們所寫出來的指令,進而正確地執行。
    然而程式語言Java經過compiler之後,並不是直接編譯成machine language,而是編譯成一種叫做「byte-code」的low-level language,而這種byte-code對於一般電腦而言不算是machine language,但是對於JVM(Java Virtual Machine)而言卻是。而JVM則是作業系統上執行的一種程式,此程式可以解讀 byte-code,並在作業系統的幫助下執行byte-code。
    由於byte-code可以使得其程式能夠適應各種computer,所以也才使Java成為一種跨平台的程式語言,適用於各種領域範圍。因此多了一道轉成byte-code手續並非多此一舉,而是讓Java能夠突顯它自己特色的重要關鍵所在!
    ((參考資料:Absolute Java page8-10))
  2. Explain class, object
    object是一種具體的「物件」。
    class則是由物件所集合而成概念性的「種類」。

    舉例來說,objects可以是我手上現在正拿著的紅筆、可以是你掉在地上的那隻藍筆......,而將這些objects集合起來,就變成class─「筆」這種種類。
    Java program就是由這些一個一個的classes所拼湊起來的,而class則是由各種objects所組起來的。
  3. Let i=2;
    Print i;
    Print 2 * (i++);
    Print i;
    Ans: 2, 4, 3
    package untitled1;
    public class Untitled1
    {
    public static void main(String[] args)
    {
    int i=2;
    System.out.println("i="+i);
    int j=2*(i++);
    System.out.println("2*(i++)="+j);
    System.out.println("i="+i);
    }
    }
    i=2
    2*(i++)=4
    i=1
  4. Let i=2;
    Print i;
    Print 2 * (++i);
    Print i;
    Ans: 2, 6, 3
    package untitled1;
    public class Untitled1
    {
    public static void main(String[] args)
    {
    int i=2;
    System.out.println("i="+i);
    int j=2*(++i);
    System.out.println("2*(++i)="+j);
    System.out.println("i="+i);
    }
    }
    i=2
    2*(++i)=6
    i=3
  5. Let m=7, n=2;
    Print (double) m/n;
    Print m/ (double)n;
    Ans: 3.5, 3.5
    package untitled1;
    public class Untitled1
    {
    public static void main(String[] args)
    {
    int m=7, n=2;
    double i=(double)m/n;
    double j=m/(double)n;
    System.out.println("(double)m/n="+i);
    System.out.println("m/(double)n="+j);
    }
    }
    (double)m/n=3.5
    m/(double)n=3.5

0 Comments:

張貼留言

<< Home