- 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)) - Explain class, object
object是一種具體的「物件」。
class則是由物件所集合而成概念性的「種類」。
舉例來說,objects可以是我手上現在正拿著的紅筆、可以是你掉在地上的那隻藍筆......,而將這些objects集合起來,就變成class─「筆」這種種類。
Java program就是由這些一個一個的classes所拼湊起來的,而class則是由各種objects所組起來的。 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
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
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