基本類型的封裝類java
封裝類的做用:
a.將字符串的值轉換爲基本類型。int a=new Integer(「100」);
b.基本類型的值轉換成字符串。int a=10; String c=a+「 」;或者 String b =Integer.toString(100);
---
裝箱和拆箱
1.裝箱和拆箱 →本質是基本類型和其封裝類之間能自動進行轉換
定義:裝箱指的是把基本數據類型值轉換成封裝對象,即把棧中的數據封裝成對象存放到堆中的過程。拆箱是裝箱的反過程。裝箱操做是數據由棧道堆,拆箱是數據由堆到棧
---
Object
1.object對象類定義在java.lang包中,是因此類的頂級父類,在java體系中,全部類都直接或者間接的繼承了object類,因此,任何java對象均可以調用object類中的方法,並且任何類型的對象均可以賦給object類型的變量。
2.equals()方法:判斷指定的對象和傳入的對象是否相等。
toString()方法:返回當前對象的字符串表示。
」==「和equals()二者比較,前者比較的地址是否相對,便是否同一個對象,後者比較的是值是否相等
toString()方法要輸出對象的詳細信息時,須要對toString()方法進行重寫,不然會輸出表明對象信息的表示字符串。 toString()方法沒有參數,可直接返回值須要的信息內容。如,return this.name;
兩個引用類型的對象的比較是否相等有兩種方式:
a.「==」運算符表示的是兩個對象的地址是否相同,即引用的是同一個對象。
b.equals()方法一般用於比較兩個對象的內容是否相同
---
字符串類
1.String類(字符串常量)→subString是截取字符串的方法。length是字符串長度的方法。int compare(String s)是比較兩個字符串的大小,相等返回0,不相等返回不相等字符編碼值的差。
2.StringBuffer類(字符串能夠改變,線程安全)→append(String str)在字符串末尾追加一個字符串。char charAt(int index)返回指定下標的字符。intcapacity()表示返回字符串緩衝區容量。
3.StringBuilder類(字符串能夠改變,線程不安全,所以性能比 StringBuffer 好)
要點:StringBuffer是線程同步的,StringBuilder是異步;對不常常變化的字符串使用String便可。常常變化、正在拼裝的字符串不用String。如果全局變量,可能多線程引用,使用StringBuffer;如果局部變量,單線程使用,推薦StringBuilder
---
Scanner類和Math和Date類
Scanner類是用於接收用戶的鍵盤輸入,和對字符串的格式化處理。
寫法:Scanner s=new Scanner(System.in); String s1=s.next();
1.用做數學運算的類是Math。 Math.random();獲取一個隨機數 。
2.用做日期處理的類是Date。示 例:Date dateNow=new Dtae();獲得當前的日期。數組
數組的基本概念
數組是儲存多個相同類型的元素,雖然數組中的元素均爲基本元素,可是Java中使用了相似對象的處理方式處理數組。在數組的初始化中使用new進行初始化。
建立一個一維數組
定義數組的方式爲:安全
數組元素類型 [ ]數組名;以下實例:多線程
int arr1[]; //定義一個int類型的數組 int []arr2; String []arr3; //定義一個String類型的數組 char []arr4; //定義一個字符類型數組 boolean []arr5; //定義一個boolean類型數組
數組定義中中括號[ ]能夠在數組名的前面或者後面,表達式效果相同,Java中推薦放在數組名前。數組定義後還不能對數組進行訪問,由於定義中只是聲明瞭數組的類型和數組名,想要真正讓數組發揮做用還須要對數組進行初始化,爲當前數組分配內存空間。app
數組的初始化
數組的初始化分爲靜態初始化和動態初始化兩種。
1.動態初始化
動態初始化中須要給數組指定一個長度,語法格式爲:dom
//先定義再初始化. int []arr1; arr1=new int[6]; //定義和初始化一塊兒執行. int []arr2=new int [5];
動態初始化中只需給定一個數組長度,系統會默認給當前數組中的元素提供一個默認值。默認值隨數組類型給出,好比:異步
int []arr1=new int[5]; System.out.println(arr1[2]); //此時會輸出 0 String []arr2=new String[3]; System.out.println(arr2[2]); //此時會輸出 null boolean []arr3=new boolean[4]; System.out.println(arr3[2]); //此時會輸出 false
2.靜態初始化
靜態初始化中須要給定數組中的元素的值,由系統計算數組的長度。語法格式爲:ide
int []arr=new int[]{1,2,3,4,5}; int []arr2={3,4,5,6};
數組的遍歷
1.for循環遍歷工具
public class TextDemo { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; out(arr); } public static void out(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr[i] + "]"); } else { System.out.print(arr[i] + ", "); } } } } //輸出結果爲[1, 2, 3, 4, 5, 6, 7, 8, 9]
2.使用Arrays類中的toString方法遍歷數組,此方法能夠將數組轉化成字符串遍歷輸出,該方法爲靜態方法使用類名調用。性能
import java.util.Arrays;//須要導包 public class arr { public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; System.out.println(Arrays.toString(arr)); int[][] arr2 = { { 1, 2, 3 }, { 4, 5, 6 } }; System.out.println(Arrays.toString(arr2[0])); System.out.println(Arrays.toString(arr2[1])); } } /**輸出爲: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3] [4, 5, 6] */
3.使用StringBuffer中的append方法
public class buffer { public static void main(String[] args) { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; StringBuffer a = new StringBuffer("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { a.append(arr[i]+"]"); } else { a.append(arr[i]+", "); } } System.out.println(a);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } }
public class TextDemo { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; out(arr); reversed(arr); out(arr); } public static void reversed(int[] arr) { //數組逆序排列 for(int i=0;i<=arr.length/2;i++) { int temp=arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; } } public static void out(int[] arr) { //打印數組 System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr[i] + "]"); } else { System.out.print(arr[i] + ", "); } } } } /**輸出爲: [1, 2, 3, 4, 5, 6, 7, 8, 9] [9, 8, 7, 6, 5, 4, 3, 2, 1] */
數組的查找
import java.util.Scanner; public class TextDemo { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5, 4, 3, 2, 1 }; find(arr); } public static void find(int[] arr) { Scanner sc = new Scanner(System.in); System.out.println("請輸入要查詢的數:"); int a = sc.nextInt(); int j = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] == a) { System.out.println("該元素在當前數組的第" + (i+1) + "位。"); j++; } } if (j == 0) { System.out.println("該元素不在當前數組中。"); } }
數組的排序
冒泡排序法
import java.util.Arrays; public class Arr { public static void main(String[] args) { int[] arr = { 2, 5, 6, 9, 1, 3, 8, 4, 10, 7 }; System.out.println(Arrays.toString(arr)); // Arrays.toString方法遍歷數組 for (int i = 0; i < arr.length; i++) { // 控制循環排序次數,一共進行數組長度-1次 for (int j = 0; j < arr.length - 1 - i; j++) { // 依次對比將大的交換到最後,每遍歷過一次後比較的次數-1 //注意由於有arr[j + 1],因此j的取值只能取到數組長度-1次,否則會超出範圍 if (arr[j] > arr[j + 1]) { int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); } } // [2, 5, 6, 9, 1, 3, 8, 4, 10, 7] // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Arrays工具類
import java.util.Arrays; //使用Arrays工具類須要導包。 public class test { public static void main(String[] args) { int arr[] = { 5, 4, 8, 9, 6, 7, 1, 2, 3 }; // 遍歷數組 System.out.println(Arrays.toString(arr));// [5, 4, 8, 9, 6, 7, 1, 2, 3] // 數組升序排列 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 查找4在當前數組中的位置,使用二分法查找 System.out.println(Arrays.binarySearch(arr, 4)); } }
捕獲異常
使用 try 和 catch 關鍵字能夠捕獲異常。try/catch 代碼塊放在異常可能發生的地方。try/catch代碼塊中的代碼稱爲保護代碼,使用 try/catch 的語法以下:
try { // 程序代碼 }catch(ExceptionName e1) { //Catch 塊 }
Catch 語句包含要捕獲異常類型的聲明。當保護代碼塊中發生一個異常時,try 後面的 catch 塊就會被檢查。若是發生的異常包含在 catch 塊中,異常會被傳遞到該 catch 塊,這和傳遞一個參數到方法是同樣。
多重捕獲塊
一個 try 代碼塊後面跟隨多個 catch 代碼塊的狀況就叫多重捕獲。多重捕獲塊的語法以下所示:
try{ // 程序代碼 }catch(異常類型1 異常的變量名1){ // 程序代碼 }catch(異常類型2 異常的變量名2){ // 程序代碼 }catch(異常類型2 異常的變量名2){ // 程序代碼 }
上面的代碼段包含了 3 個 catch塊。能夠在 try 語句後面添加任意數量的 catch 塊。若是保護代碼中發生異常,異常被拋給第一個 catch 塊。若是拋出異常的數據類型與 ExceptionType1 匹配,它在這裏就會被捕獲。若是不匹配,它會被傳遞給第二個 catch 塊。如此,直到異常被捕獲或者經過全部的 。
catch 塊
Exception 類的層次
1.全部的異常類是從 java.lang.Exception 類繼承的子類。
2.Exception 類是 Throwable 類的子類。除了Exception類外,Throwable還有一個子類Error 。
3.Java 程序一般不捕獲錯誤。錯誤通常發生在嚴重故障時,它們在Java程序處理的範疇以外。
4.Error 用來指示運行時環境發生的錯誤。
5.例如,JVM 內存溢出。通常地,程序不會從錯誤中恢復。異常類有兩個主要的子類:IOException 類和 RuntimeException 類。
Math類
Math就是一個專門進行數學計算的操做類,裏面提供了一系列的數學計算方法。
在Math類裏面提供的一切方法都是static型的方法,由於Math類裏面沒有普通屬性。
Math有一個方法要引發注意:
四捨五入:public static long round(double a)。
Random類
這個類的主要功能是取得隨機數的操做類。
public class TestDemo { public static void main(String args[]) { Random rand = new Random(); for(int i = 0; i < 10; i++) { System.out.print(rand.nextInt(100) + "、"); } } }
大浮點數操做類:BigDecimal
BigInteger 不可以保存小數,而BigDecimal能夠保存小數數據。在BigDecimal裏提供有以下幾種構造:
與BigInteger同樣,BigDecimal自己也支持基礎的數學計算,但是使用BigDecimal還有一個很是重要的目的,就是可使用它來實現準確的四捨五入操做。
以前使用的Math.round()實現四捨五入操做,可是這種操做有一個問題,全部的小數位都四捨五入了。
遺憾的是BigDecimal類裏面沒有直接提供有四捨五入的操做支持,但是能夠利用除法實現:
public class MyMath { /** * 實現準確位數的四捨五入操做 * @param num 要進行四捨五入操做的數字 * @param scale 要保留的小數位 * @return 處理後的四捨五入數據 */ public static double round(double num, int scale) { BigDecimal bigA = new BigDecimal(num); BigDecimal bigB = new BigDecimal(1); return bigA.divide(bigB, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } } public class TestDemo { public static void main(String args[]) { System.out.println(MyMath.round(19.783231231, 2)); System.out.println(MyMath.round(-15.5, 0)); System.out.println(MyMath.round(15.5, 0)); } } 結果: 19.78 -16 16