天天看點

重學java「二」

1.Java StringBuffer 和 StringBuilder 類

  • 當對字元串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。
  • StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,并且不産生新的未使用對象。
  • StringBuilder 的方法不是線程安全的(不能同步通路)。由于 StringBuilder 相較于 StringBuffer 有速度優勢,是以多數情況下建議使用 StringBuilder 類
  • 在應用程式要求線程安全的情況下,則必須使用 StringBuffer 類。
public class Test{
  public static void main(String args[]){
    StringBuffer sBuffer = new StringBuffer("菜鳥教程官網:");
    sBuffer.append("www");
    sBuffer.append(".runoob");
    sBuffer.append(".com");
    System.out.println(sBuffer);  
  }
}
           

結果:

2foreach循環與數組:

能在不使用下标的情況下周遊數組。

public class TestArray {
   public static void main(String[] args) {
      double[] myList = {, , , };

      // 列印所有數組元素
      for (double element: myList) {
         System.out.println(element);
      }
   }
}
           

*Arrays 類

java.util.Arrays 類能友善地操作數組,它提供的所有方法都是靜态的。具有以下功能:

  • 給數組指派:通過 fill 方法。
  • 給數組指派:通過 fill 方法。
  • 對數組排序:通過 sort 方法,按升序。
  • 比較數組:通過 equals 方法比較數組中元素值是否相等。
  • 查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。

2.finalize() 方法

Java 的記憶體回收可以由 JVM 來自動完成。如果你手動使用,則可以使用finalize() 方法。

3.Scanner 類

1)next方法:

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
    // 從鍵盤接收資料  

    //next方式接收字元串
        System.out.println("next方式接收:");
        // 判斷是否還有輸入
        if(scan.hasNext()){   
          String str1 = scan.next();
          System.out.println("輸入的資料為:"+str1);  
        }  

    }  
}
           

結果:

next方式接收:
runoob com
輸入的資料為:runoob
           

2)nextLine方法:

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
    // 從鍵盤接收資料  

    //nextLine方式接收字元串
        System.out.println("nextLine方式接收:");
        // 判斷是否還有輸入
        if(scan.hasNextLine()){   
          String str2 = scan.nextLine();
          System.out.println("輸入的資料為:"+str2);  
        }  

    }  
}
           

結果:

nextLine方式接收:
runoob com
輸入的資料為:runoob com
           

3)差別:

next():

  • 一定要讀取到有效字元後才可以結束輸入
  • 對輸入有效字元之前遇到的空白,next() 方法會自動将其去掉。
  • 隻有輸入有效字元後才将其後面輸入的空白作為分隔符或者結束符。

nextLine():

  • 以Enter為結束符,也就是說 nextLine()方法傳回的是輸入回車之前的所有字元。
  • 可以獲得空白。

4.異常處理

4.1異常分類:

  • 檢查性異常:最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式員無法預見的。例如要打開一個不存在檔案時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
  • 運作時異常: 運作時異常是可能被程式員避免的異常。與檢查性異常相反,運作時異常可以在編譯時被忽略。
  • 錯誤: 錯誤不是異常,而是脫離程式員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。

4.2異常捕獲

1)使用 try 和 catch 關鍵字可以捕獲異常。try/catch 代碼塊放在異常可能發生的地方。

try/catch代碼塊中的代碼稱為保護代碼,使用 try/catch 的文法如下:

try
{
   // 程式代碼
}catch(ExceptionName e1)
{
   //Catch 塊
}
           

例:

import java.io.*;
public class ExcepTest{

   public static void main(String args[]){
      try{
         int a[] = new int[];
         System.out.println("Access element three :" + a[]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}
           

2)throws/throw 關鍵字:

3)finally關鍵字:finally 關鍵字用來建立在 try 代碼塊後面執行的代碼塊。

無論是否發生異常,finally 代碼塊中的代碼總會被執行。

在 finally 代碼塊中,可以運作清理類型等收尾善後性質的語句。