Arrays類,Math類,面向對象——繼承

  • Arrays類

概述

​ java.util.Arrays 此類主要是用來操做數組,裏面提供了不少的操做的api方法,如【排序】和【搜索】功能。其全部的方法均爲靜態方法,調用起來很是簡單java

操做數組的方法
  • ​ public static String toString(int[] arr):返回指定數組內容的字符串表示形式。
public static void main(String[] args) {
    // 初始化一個int類型的數組 動態初始化只指定長度,不指定內容,而靜態初始化只指定內容,不指定長度,二者不能混合使用。
    int[] arr = {12,345,112,78,489};
    // 打印數組,輸出內存地址值
    System.out.println(arr);// 地址值

    // 把數組內容轉換成字符串
    String str = Arrays.toString(arr);
    // 打印字符串,輸出數組內容
    System.out.println(str);// [12,345,112,78,489]  內容順序不變
}
  • public static void sort(int[] arr):對指定的int數組按照數字升序進行排序。從小到大
public static void main(String[] args) {
    // 定義一個int類型數組
    int[] arr = {12,345,112,78,489};
    //輸出排序前的內容
    System.out.println(Arrays.toString(arr));// 排序前 [12,345,112,78,489]

    // 升序排序
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr));// 排序後  [12,78,112,345,489]
}

練習:使用Arrays相關的api方法,將一個任意給定的字符串中的全部字符按照升序排序,倒序打印輸出。api

public class ArraysDemo01 {

    public static void main(String[] args) {
        // 定義一個任意字符串
        String str = "asdhfkjadhfs2342354234kjhkljhkj";
        // 把字符串轉換成字符數組
        char[] chs = str.toCharArray();

        // 使用Arrays類中的sort()方法
        Arrays.sort(chs);

        // 倒序打印輸出
        // 反向遍歷
        for (int i = chs.length-1; i >= 0 ; i--) {
            System.out.print(chs[i] + " ");
        }
    }  
}
  • public static int binarySearch(int[] arr,int key):使用二分搜索法來搜索指定的 int 型數組,以得到指定的值,此時key指的是要搜索的值,而方法返回值聲明的int指的是搜索值對應的索引值。數組

    使用binarySearch()方法。搜索數組當中的元素時,數組必須是有序的。【升序】ide

    獲得的索引值是排序以後的新的數組的索引值函數

    若是沒有找到對應的元素值,獲得的索引值是負值。測試

public static void main(String[] args) {
    // 定義一個int類型的數組
    int[] arr = {10,20,5,30,40,15,18};

    // 對arr數組進行排序
    Arrays.sort(arr);

    // 搜索5這個數值在arr數組當中的索引值
    int index = Arrays.binarySearch(arr,5);
    // 打印輸出index的值
    System.out.println("5在arr數組當中的索引值爲:" + index);
}
  • public static void fill(int[] arr,int val): 將指定的 int 值分配給指定 int 型數組的每一個元素。this

    public static void main(String[] args) {
        // 定義一個int數組
        int[] arr = {10,20,5,30,40,15,18};
    
        // 想要把100元素值分配給arr數組
        Arrays.fill(arr,100);
    
        // 打印輸出
        System.out.println(Arrays.toString(arr));//[100, 100, 100, 100, 100, 100, 100]
    }

Math類

概述

​ java.util.Math 包含了用於執行基本數學運算的方法,如指數,冪次方,對數,平方根,三角函數等運算。裏面的方法均是靜態方法,而且也不須要建立對象,調用起來也是很是方便。code

基本運算的方法
  • ​ public static double abs(double a):返回double值的絕對值。
double d1 = Math.abs(-5.3);// d1的值爲5.3
double d2 = Math.abs(5.3);//  d2的值爲5.3
double d3 = Math.abs(0.0);//  d3的值爲0.0
  • ​ public static double ceil(double a):返回大於等於參數的最小整數。往上取整。
double d1 = Math.ceil(5.3);// d1的值爲6.0
double d2 = Math.ceil(5.9);// d2的值爲6.0
double d3 = Math.ceil(-5.9);// d3的值爲-5.0
  • ​ public static double floor(double a):返回小於等於參數的最大整數。往下取整。
double d1 = Math.floor(5.9);// d1的值爲5.0
double d2 = Math.floor(5.1);// d2的值爲5.0
double d3 = Math.floor(-5.9);// d3的值爲-6.0
  • public static long round(double a):返回最接近參數的long類型值。(至關於四捨五入運算)。
long d1 = Math.round(5.5);// d1的值爲6
long d2 = Math.round(5.4);// d2的值爲5
long d3 = Math.round(-5.5);// d3的值爲-5
long d4 = Math.round(-5.6);// d4的值爲-6

練習:使用Math類相關的api方法,計算在-10.8到5.9之間,絕對值大於6或者小於2.1的整數有多少個,分別是哪些數字?對象

public static void main(String[] args) {
    double max = 5.9;
    double min = -10.8;
    int count = 0;// 統計個數
    // 遍歷循環 獲取整數
    for (double i = Math.ceil(min) ; i <= Math.floor(max); i++) {
        // 判斷條件
        if (Math.abs(i) > 6 || Math.abs(i) < 2.1) {
            System.out.print(i + " ");
            count++;
        } 
    }
    System.out.println();
    // 打印輸出個數
    System.out.println("知足條件整數個數爲:" + count + "個");
}

繼承

概述

​ 若是多個類中存在相同的屬性和行爲時,將這些內容抽取到單獨的一個類中,那麼多個類就無需再定義這些屬性和行爲,只要去繼承這個單獨的類便可。blog

​ 其中,多個類稱爲子類,派生類,單獨的那一個類稱爲父類、超類(superclass)、基類

繼承描述的是事物之間的所屬關係,這種關係是:is-a的關係,在繼承關係中,「子類就是一個父類」。也就是說,子類能夠被看成父類看待。

例如:父類是員工,子類是講師,那麼「講師就是一個員工」。關係:is-a。

通常狀況下,父類更通用,子類更具體。咱們能夠經過繼承,使多種事物之間造成一種關係體系。

定義
  • ​ 繼承:就是子類繼承父類的屬性和行爲,使得子類對象具備與父類相同的屬性、相同的行爲。子類能夠直接訪問父類中的【非私有】的屬性和行爲。

好處:

  1. ​ 能夠提升代碼的複用性。

  2. ​ 類與類之間能夠產生一種關係,是【多態的前提】。

繼承的格式

​ 經過extends關鍵字,能夠聲明一個子類繼承另外一個父類:

public class FuClass {
    //....
}
public class ZiClass extends FuClass {
    // ....
}

代碼演示:

/*
  定義一個員工類Employee,父類
*/
public class Employee {
     String name;// name屬性
     int id;//  工號屬性
    // 定義一個員工的工做方法
    public void work() {
        System.out.println( name + "努力的工做!");
    }
}
/*
    定義講師類Teacher  繼承  員工類Employee
*/
public class Teacher extends Employee {

    // 定義講師類中的專有的方法
    public void teach() {
        System.out.println(name + "在教課");
    }
}
/*
   定義一個測試類
*/
public class TestExtendsDemo01 {
    public static void main(String[] args) {
        // 建立一個講師類
        Teacher t = new Teacher();

        // 爲該員工類的name屬性賦值
        t.name = "小張";
        // 調用該員工中的教課的方法
        t.teach();

        // 調用Teacher類繼承過來的work()方法
        t.work();
    } 
}
繼承後的特色----成員變量

​ 當類之間產生了關係後,其中各種中的成員變量有哪些影響?

成員變量不重名
若是子類父類中定義的成員變量名字不重名,這時的的訪問沒有任何影響。代碼演示
public class Fu {

    // 定義一個變量
    int num = 10;
}
public class Zi extends Fu {
    // 定義一個變量
    int num2 = 20;

    // 定義一個子類的成員方法
    public void show() {
        // 訪問父類中的成員變量 num
        System.out.println("父類中的成員變量num = " + num);// 10  繼承而來的,能夠直接訪問
        // 訪問子類中的成員變量 num2
        System.out.println("子類中的成員變量num2 = " + num2);// 20
    }
}
public class TestExtendsField {

    public static void main(String[] args) {
        // 建立子類的對象
        Zi zi = new Zi();
        // 調用子類的方法
        zi.show();
    }

}
// 演示結果:
//  10
//  20
成員變量重名

​ 若是子類父類中出現重名的成員變量,這時的訪問是有影響的。代碼演示:

public class Fu {
    // 定義父類中的成員變量
    int num = 10;
}
public class Zi extends Fu {
    // 定義子類中的成員變量
    int num = 20;
    // 定義子類中的成員方法
    public void show() {
        // 訪問父類中的成員變量 num
        System.out.println("父類中的成員變量num = " + num);// 20
        // 訪問子類中的成員變量 num
        System.out.println("子類中的成員變量num = " + num);// 
    }  
}
// 結果展現
// 20
// 20

在父子類的繼承關係當中,若是成員變量重名,則建立子類對象時,訪問有兩種方式:

直接經過子類對象訪問成員變量:等號左邊是誰,就優先用誰,沒有會向上找

間接經過成員方法訪問成員變量:該方法屬於誰,就優先用誰,沒有則繼續向上找。

子父類中出現了重名的成員變量時,在子類中想要訪問父類中的非私有的成員變量時,須要使用super關鍵字,修飾父類的成員變量,相似於this操做。

使用格式:

super.父類的成員變量名

子類方法中的代碼須要修改

public class Zi extends Fu {
    // 定義子類中的成員變量
    int num = 20;
    // 定義子類中的成員方法
    public void show() {
        // 訪問父類中的成員變量 num
        System.out.println("父類中的成員變量num = " + super.num);// 10
        // 訪問子類中的成員變量 num
        System.out.println("子類中的成員變量num = " + num);// 
    }  
}
// 結果展現
// 10
// 20

結尾

但願對你們有幫助,若是喜歡的話記得點贊加關注哦Arrays類,Math類,面向對象——繼承

相關文章
相關標籤/搜索