java.util.Arrays 此類主要是用來操做數組,裏面提供了不少的操做的api方法,如【排序】和【搜索】功能。其全部的方法均爲靜態方法,調用起來很是簡單java
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 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] }
java.util.Math 包含了用於執行基本數學運算的方法,如指數,冪次方,對數,平方根,三角函數等運算。裏面的方法均是靜態方法,而且也不須要建立對象,調用起來也是很是方便。code
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
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
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
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。
通常狀況下,父類更通用,子類更具體。咱們能夠經過繼承,使多種事物之間造成一種關係體系。
好處:
能夠提升代碼的複用性。
經過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
但願對你們有幫助,若是喜歡的話記得點贊加關注哦