Java與C++語法的區別
1. 註釋可以在Java程序中起到文檔標記的作用
類文檔標記:
1)@version
2)@author
3)@param
4)@return
5)@exception
2. Java的字符占兩個字節,是Unicode編碼
3. 作用域——
Java不存在全局和局部作用域。
不重名:Java程序塊不能將內部作用域聲明的變量與其外部作用域聲明的變量重名。
4. Java程序不可能在類外的全局區域有方法。
5. Java數組
定義:
int arr[ ] = new int[10];
與數組相關的方法:
1)復制數組
System.arrycopy(...);
2)數組排序
Array.sort(arrayname);
6. Java的類
1)new語句的類名後要有一對圓括號
Man p1 = new Man();
類名後的句柄 p1,相當於C++的指針,引用一個Man的對象
2)對象的比較
操作符==時
兩個變量所指內存地址相等的時候,才能返回true
3)this引用句柄
構造方法中可以通過this調用另一個構造方法
{... this(...,...,...);}
7.垃圾回收機制
數組和對象分配在堆上
數組和對象在沒有引用變量指向它時才會變成垃圾,不能再被使用,但仍然占據著內存,在隨後一個不確定的時間被垃圾回收器釋放掉,這也是Java占內存的原因。
8.static關鍵字
註意:不能把任何方法體內的變量聲明為靜態(只能把類的成員聲明為靜態成員)
1)靜態代碼塊
class Code{ { System.out.println("Code的構造塊"); } static{ System.out.println("Code的靜態代碼塊"); } public Code(){ System.out.println("Code的構造方法"); } }
不包含在任何方法體中的,當類被載入時,自動執行靜態代碼塊,且只被執行一次,經常用作初始化類中屬性;
在Java中,一個類裝入JVM中經過3個步驟:裝載、鏈接和初始化。因此,靜態代碼塊執行在構造函數之前。
2)main方法是靜態的
這個main()方法的聲明為:public static void main(String args[])。必須這麽定義,這是Java的規範。
因此在main()方法中,不能直接訪問該類中的非靜態成員。
9.類的繼承
class A {} class B extends A {} class C extends B
子類構造的時候,需要在構造函數中super(參數)構造父類。在子類有方法或變量與父類有沖突時,可以用super. 來加以區別。
class Student extends Person{ public Student (String name, int age, String school) { super(name,age); this.school=school; } }
10.抽象類與接口
1)必須用abstract 關鍵字來修飾抽象類;抽象方法也必須用abstract來修飾。
含有抽象方法的類必須被聲明為抽象類,抽象類的子類必須覆蓋所有的抽象方法後才能被實例化,否則這個子類還是抽象類。
2)接口interface——Java對C++多重繼承的改進
接口是抽象方法和常量值的定義集合;
接口可以看作一種特殊的抽象類,只包含常量和方法的定義,而沒有變量和方法的實現;
接口裏的變量默認使用public static final標識的,因此,接口中定義的變量就是全局靜態常量;
用implements關鍵字去實現一個接口中的所有或部分方法;
11. 對象的多態
Java中所有類都繼承自Object類,Object是Java類層中最高層類
Object類中的getClass()、notify()、notifyAll()、wait()等方法不能被重寫,因為這些方法被定義為final類型。
Java與C++語法的區別