1. 程式人生 > >JAVA特殊概念總結

JAVA特殊概念總結

這篇博文用來記錄java相較於c/c++的新的概念和特性,個人對此的一點心得。
1.裝箱
官方定義:由編譯器特別支援的包稱為裝箱,當內建資料型別被當做物件使用的時候,編譯器會把內建型別裝箱為包裝類。相似的,編譯器也會把一個物件拆箱為內建型別

public class Test{
    Integer x=5;
    x=x+10;
    System.out.println(x);
}

心得小記
java中參與運算的基本都是例項化後的物件,類才能例項化物件,所以Integer應該作為一個類。編譯器起到了將內建型別int轉化為包裝類Integer的功能。之後為了使x能夠進行運算,編譯器就可以把一個內建物件拆箱為內建型別。
2.java建立格式化字串


輸出格式化數字(%d等等類似的)可以使用printf()和format()方法,對於String類來說,使用靜態方法format()返回一個String物件而不是PrintStream物件,因此String類的靜態方法format()能夠用來建立可複用的格式化字串,而不僅僅是用於一次列印輸出

//列印輸出的兩種方式
//方式一
System.out.print("浮點型變數的值為%f",floatVar);
//方式二
String fs;
fs=String.format("浮點型變數的值為%f",floatVar1);

3. JAVA StringBuffer類和 JAVA StringBuilder類


操作字串時需要用到這兩個類,JAVA StringBuilder類有速度優勢,但是需要保證執行緒安全時要用JAVA StringBuffer類

public class Test{
    StringBuffer sBuffer=new StringBuffer("Hello");
    sBuffer.append("world");
    System.out.println(sBuffer);
}

4.Java foreach迴圈
JDK1.5引進了一種新的迴圈,被稱為foreach迴圈或加強型迴圈,能在不使用下標的情況下遍歷陣列

public class TestArray{
        public
static void main(String[] args){ double[] myList ={1,2,3,4,5}; for (double element:myList){ System.out.println(element); } } }

5.JAVA為二維陣列 分配 空間
注意這裡的分配方式是從高維開始,分別為每一維分配空間

String s[][]=new String[2][];
//為最高維分配引用空間,為最高維限制其能儲存資料最長的長度
s[0]=new String[2];
s[1]=new String[3];
//為每個陣列元素單獨分配空間
s[0][0]=new String("good");
s[0][1]=new String("luck");

7.java異常處理
三種類型的異常:

  1. 檢查性異常:最具代表性的異常是使用者錯誤引起的異常。例如開啟一個不存在的檔案就會發生一個異常,這些異常在編譯時不能被簡單的忽略
  2. 執行時異常:執行時異常是可能被程式設計師避免的異常,是程式設計師無法忽視的,執行時異常可以在編譯時被忽略
  3. 錯誤:錯誤不是異常,而是脫離程式設計師控制的問題,錯誤在程式碼中通常被忽略。如當棧溢位時就會發生錯誤在編譯時檢查不到

捕獲異常

try{
//程式程式碼
}catch(ExceptionName e1)//catch語句要包含捕獲異常型別的宣告{
//Catch 塊:當保護程式碼塊中發生一個異常時,try後面的catch塊就會被檢查。如果發生的異常包含在該catch塊中,異常會被傳遞到該catch塊,類似於方法傳參
}

多重捕獲塊
一個try程式碼塊後面跟隨多個catch程式碼塊的情況即多重捕獲

try{
//程式程式碼
}catch(異常型別1,異常變數1){
//程式程式碼
}catch(異常型別2,異常變數2){
//程式程式碼
}catch(異常型別3,異常變數3){
//程式程式碼
}

throws/throw關鍵字
如果一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用throw關鍵字來宣告,throw關鍵字放在方法簽名的尾部。一個方法可以宣告丟擲多個異常。
finally關鍵字
finally關鍵字用來建立在try程式碼塊後面執行的帶媽媽快,無論是否發生異常,finally程式碼塊後的程式碼總會被執行。finally程式碼塊中可以執行清理型別等收尾善後性質的語句

try {//程式程式碼
}catch(異常型別 異常變數){
//程式程式碼}finally{
//程式程式碼}

宣告自定義異常
在java中可以自定義異常。注意

  • 所有異常必須是Throw的子類
  • 檢查性異常類需要繼承自Exception類
  • 執行時異常類需要繼承自RuntimeException類
  • 一個異常類和其他類一樣,包含變數和方法
//例如
class MyException extends Exception{
}

java中定義了兩種型別的異常和錯誤:

  • JVM(java虛擬機器異常):由JVM丟擲的異常或錯誤
  • 程式及異常:由程式或API程式丟擲的異常
    8.java正則表示式
    不是很新但是有點特別:
    正則表示式可以通過匹配的方法搜尋、編輯、處理文字。

    在其他語言,\僅表示插入一個特殊的反斜槓,
    在 java中,\表示後面要插入一個正則表示式的反斜線,因此其後的字元具有特殊的意義,比如\d代表一位數字

```java
//用正則表示式從一個給定的字串中找到數字串
public class RegexMatches{
public static void main(String [] args){
//按照指定模式在字串查詢
    String line ="This order was placed for  QT3000!OK?"
    String pattern ="(\\D*)(\\d+)(.*)";
//建立pattern物件
Pattern r=Parttern.compile(pattern);
//建立matcher物件
Matcher m=r.matcher(line);
if(m.find()){
    System.out.println("Found value: "+m.group(0) );//group(0)代表整個字串
    System.out.println("Found value: "+m.group(1) );//group(1)分組處理後的第一組
    System.out.println("Found value: "+m.group(2) );
    System.out.println("Found value: "+m.group(3) );    
}else{
    System.out,println("NO MATCH");
}
}
}