Java 與 C++ 不同的地方(持續更新中...)

  本文僅以記錄 Java 與 C++ 不一樣之處,以備隨時查詢。java

Java 程序運行機制

  Java 是一門編譯解釋型的語言,即它在運行的過程當中既須要編譯也須要解釋。以下圖表示的是 Java 程序運行機制: 函數

  

  上圖中,*.java 是用 Java 程序設計語言編寫的源程序,經過 javac 命令編譯成 *.class 文件,在操做系統之上是由 Java 虛擬機來運行以 .class 爲結尾的文件。這裏的 class 文件在 Java 中稱之爲可執行類文件;或者對於虛擬機而言其實就是字節碼文件,也就是0、1代碼,即計算機可以直接讀懂的二進制代碼。spa

main 函數

  對於 Java 程序而言,(跟 C++ 同樣)也是從 main 函數開始執行,不過有很大不一樣。以一個例子來講明:操作系統

1 public class HelloWorld{
2 
3     public static void main(String[] args) {
4         System.out.println("Hello World!");
5     }
6 
7 }

  該程序的執行要 Java 虛擬機來調用執行,即由 Java 虛擬機調用 HelloWorld 類中的 main 函數。做爲對外接口,類 HelloWorld 是要聲明爲 public (一個 Java 源文件最多隻能有一個聲明爲 public 的類,而該類就做爲該源文件對外的接口。而在該源文件中的其餘類則不能被其餘源文件的類調用,只能被同一源文件的類調用。);由於 Java 虛擬機要調用,因此 main 函數要聲明爲 public;另外,Java 虛擬機在執行 main 函數的時候沒必要建立對象(即經過 HelloWorld.main(args) 調用),因此該方法必須是 static 的。設計

  這跟 C++ 在程序在編譯連接成可執行文件後,由操做系統加載並最後將程序指針指向 main 函數是徹底不同的。指針

數據類型

  在 Java 中,code

  1. 除了 boolean,其餘基礎類型都是有符號的,不存在無符號的基礎數據類型;對象

  2. 數據存儲順序默認是小端,這跟 C++ 默認是大端的不一樣;blog

  2. char 是兩個字節大小的;繼承

  3. float 變量初始化時,數值最後要加 f。 

一些關鍵字

static

  在 Java 中,(static 一樣能夠修飾 成員變量和成員函數)跟 C++ 不同的是能夠修飾靜態代碼塊,以下例:

 1 class Person{
 2     public Person(){
 3         System.out.println("Constructor");
 4     }
 5     static {
 6         System.out.println("Static");
 7     }
 8     private String name;
 9     private int age;
10 }
11 
12 public class Main {
13 
14     public static void main(String[] args) {
15         new Person();
16     }
17 
18 }

  上例中 static 靜態代碼塊會優先與構造函數執行。這種代碼塊能夠用來初始化。

final

  在 Java 中,final 關鍵字有以下做用:

  1. final 標記的類不能被繼承(C++ 經過將構造函數或析構函數設爲私有來達到);

  2. final 標記的方法不能被覆寫;

  3. final 標記的變量(成員變量或局部變量)即爲常量,只能賦值一次。

權限

  類中的成員變量或成員函數默認是 public 的(C++ 是 private 的);

  類繼承默認也是 public 繼承(實際只有 public 繼承,不像 C++ 中還有 private、protected 繼承)。

繼承

 

接口

 

 

參考資料

  《Java 程序設計教程(入門篇)》 徐翠娟等編。

相關文章
相關標籤/搜索