20189200餘超 2018-2019-2 移動平臺應用開發實踐第三週做業

2018-2019-2 移動平臺應用開發實踐第三週做業

核心類

基本類型的封裝類java

  • 封裝類: java語言認爲一切皆對象。8個基本數據類型野應該具有對應的對象。經過封裝類能夠把8個基本類型的值封裝對象進行使用。 從JDK1.5開始,java容許把基本類型的值直接賦值給對應的封裝類對象。
  • 封裝類的實例: int a=10; Integer o=new Integer(10); 8個數據類型的封裝類只有int 和char的封裝類會改變,Integer 和Character
  • 封裝類的做用:
    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工具類

  • toString():將數組轉化爲字符串,有多個重載方法,能夠支持boolean、float、int、long、short對象數組。
  • sort():將數組升序排列,是一個改進的快速排序,比起傳統的冒泡,選擇排序速度更快。
    ** binarySearch(int[] a,int key)**
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裏提供有以下幾種構造:

  • 構造一:public BigDecimal(String val)。
  • 構造二:public BigDecimal(double val)。

與BigInteger同樣,BigDecimal自己也支持基礎的數學計算,但是使用BigDecimal還有一個很是重要的目的,就是可使用它來實現準確的四捨五入操做。

以前使用的Math.round()實現四捨五入操做,可是這種操做有一個問題,全部的小數位都四捨五入了。
遺憾的是BigDecimal類裏面沒有直接提供有四捨五入的操做支持,但是能夠利用除法實現:

  • 除法操做:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)。
  • BigDecimal divisor:被除數。
  • int scale:保留的小數位。
  • int roundingMode:進位模式(public static final int ROUND_HALF_UP)。
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
相關文章
相關標籤/搜索