Java12-day03【(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】
- 視頻+資料(工程源碼、筆記)【鏈接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg? ?提取碼:zjxs】
- Java基礎--學習筆記(零起點打開java世界的大門)--博客匯總表
目? ?錄
01_類名作為形參和返回值
1.1、類名作為形參和返回值
02_抽象類名作為形參和返回值
1.2、抽象類名作為形參和返回值
03_接口名作為形參和返回值
1.3、接口名作為形參和返回值
04_內部類
1.1、內部類概述
05_成員內部類
1.2、成員內部類
06_局部內部類
1.3、局部內部類
07_匿名內部類
1.4、匿名內部類
08_匿名內部類在開發中的使用
1.5、匿名內部類在開發中的使用
09_Math
1.1、Math類概述
1.2、Math類的常用方法
10_System
2.1、System概述
2.2、System類的常用方法
11_Object類的toString()方法
3.1、Object類的概述
12_Object類的equals()方法
3.2、Object類的常用方法
13_冒泡排序原理
4.1、冒泡排序
14_冒泡排序代碼實現
15_Arrays
4.2、Arrays類的概述和常用方法
01_類名作為形參和返回值
1.1、類名作為形參和返回值
1、類名作為方法的形參
- 方法的形參是類名,其實需要的是該類的對象。
- 實際傳遞的是該對象的【地址值】
2、類名作為方法的返回值
- 方法的返回值是類名,其實返回的是該類的對象。
- 實際傳遞的,也是該對象的【地址值】
02_抽象類名作為形參和返回值
1.2、抽象類名作為形參和返回值
- 方法的形參是抽象類名,其實需要的是該抽象類的子類對象。
- 方法的返回值是抽象類名,其實返回的是該抽象類的子類對象。
03_接口名作為形參和返回值
1.3、接口名作為形參和返回值
- 方法的形參是接口名,其實需要的是該接口的實現類對象。
- 方法的返回值是接口名,其實返回的是該接口的實現類對象。
04_內部類
1.1、內部類概述
05_成員內部類
1.2、成員內部類
按照內部類 在類中定義的位置不同,可以分為如下兩種形式:
- 在類的成員位置:成員內部類
- 在類的局部位置:局部內部類
成員內部類的定義位置
- 在類中方法,跟成員變量是一個位置。
成員內部類,外界如何創建對象使用呢?(外界創建成員內部類格式)
- 格式:外部類名.內部類名 對象名 = 外部類對象.內部類對象;
- 舉例:Outer.Inner oi = new Outer().new Inner();
成員內部類的推薦使用方案
- 將一個類,設計為內部類的目的,大多數都是不想讓外界去訪問,所以內部類的定義應該私有化,私有化之后,再提供一個可以讓外界調用的方法,方法內部創建內部類對象并調用。
使用 成員內部類,就是為了 成員內部類中的內容隱藏起來,并不想讓外界直接看到(不能直接訪問)。
∴ 內部類的修飾符,一般用private,而不是public。【“ Outer.Inner oi = new Outer().new Inner(); ” 失效!!!】
06_局部內部類
1.3、局部內部類
局部內部類 定義位置
- 局部內部類是在方法中定義的類。
局部內部類 調用方式
- 局部內部類是在方法中定義的類,外界無法直接使用,需要在方法內部創建對象并使用。
- 該類可以直接訪問外部類的成員,也可以訪問方法內的局部變量。
07_匿名內部類
1.4、匿名內部類
重寫方法:繼承類或實現接口。
new xxx:說明是一個對象,但是對象沒有名字。
匿名內部類,本質是一個對象,繼承類或實現接口。
多次調用匿名內部類的方法:
匿名內部類是一個對象,對象有返回值類型。此匿名內部類實現了Inter接口,并重寫了接口的show()方法,因此 匿名內部類{}整體可以看成Inter的一個實現類對象,既然是實現類對象,所以應該可以按照多態的形式 賦值給Inter接口。
08_匿名內部類在開發中的使用
1.5、匿名內部類在開發中的使用
多種動物,每次都要創建一個類,太麻煩了,∴ 采用 匿名內部類。
匿名內部類在開發中的使用:當發現某個方法需要 接口或抽象類的子類對象,可以傳遞一個匿名內部類過去,來簡化傳統的代碼。
09_Math
1.1、Math類概述
Math在java.lang包下,不用導包就可以直接使用。
Math沒有構造方法,但方法用static修飾,可以直接通過類名調用方法。
1.2、Math類的常用方法
10_System
2.1、System概述
System包含幾個有用的類字段和方法,它不能被實例化(不能創建對象)。
2.2、System類的常用方法
11_Object類的toString()方法
3.1、Object類的概述
Object類概述
- Object是類層次結構的根,每個類都可以將Object 作為超類。沒有繼承任何類,Object是任何類的祖宗類。
-
所有對象(包括數組)都實現了這個類的方法。
- 所有類都直接或者間接的繼承自該類,換句話說,該類所具備的方法,所有類都會有一份。
Object構造方法
- public Object()
查看方法源碼的方式
重寫toString方法的方式
toString方法的作用:
- 以良好的格式,更方便的展示對象中的屬性值。
回想面向對象中,為什么說子類的構造方法默認訪問的是父類的無參構造方法(? super();? )?
- 因為它們的頂級父類(Object)只有無參構造方法。
查看方法源碼的方式
建議所有子類覆蓋(重寫)此方法:toString()
怎么重寫呢?自動生成即可。
重寫toString方法的方式
12_Object類的equals()方法
3.2、Object類的常用方法
equals方法的作用
- 用于對象之間的比較,返回true和false的結果。
- 舉例:s1.equals(s2); // s1和s2是兩個對象
重寫equals方法的場景
- 不希望比較對象的地址值,想要結合對象屬性進行比較的時候。
重寫equals方法的方式
重寫equals()方法
按“Alt+Insert”:
13_冒泡排序原理
4.1、冒泡排序
排序:將一組數據按照固定的規則進行排序。
冒泡排序概述
一種排序的方式,對要進行排序的數據中相鄰的數據進行兩兩比較,將較大的數據放在后面,
依次對所有的數據進行操作,直至所有數據按要求完成排序。
如果有n個數據進行排序,總共需要比較n-1次。
每一次比較完畢,下一次的比較就會少一個數據參與。
14_冒泡排序代碼實現
package com.itheima_01;/*冒泡排序:一種排序的方式,對要進行排序的數據中相鄰的數據進行兩兩比較,將較大的數據放在后面,依次對所有的數據進行操作,直至所有數據按要求完成排序*/ public class ArrayDemo {public static void main(String[] args) {//定義一個數組int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrayToString(arr));//第一次比較for(int i=0; i<arr.length-1-0; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第一次比較后:" + arrayToString(arr));//第二次比較for(int i=0; i<arr.length-1-1; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第二次比較后:" + arrayToString(arr));//第三次比較for(int i=0; i<arr.length-1-2; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第三次比較后:" + arrayToString(arr));//第四次比較for(int i=0; i<arr.length-1-3; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第四次比較后:" + arrayToString(arr));for(int x=0; x<arr.length-1; x++) {for(int i=0; i<arr.length-1-x; i++) {if(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}}System.out.println("排序后:" + arrayToString(arr));}//把數組中的元素按照指定的規則組成一個字符串:[元素1, 元素2, ...]public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;} }15_Arrays
4.2、Arrays類的概述和常用方法
private修飾的無參構造:外界無法通過構造方法創建對象。強制要求:通過類名來訪問成員方法。
private Arrays {} :如果一個類沒有無參構造方法,系統將會自動提供一個無參構造方法。Arrays的方法,用static修飾,強制要求用類名訪問。
在幫助文檔中,沒有看到構造方法,不代表這個類沒有構造方法,因為系統會給構造方法。--> 看源碼(構造方法)
?
總結
以上是生活随笔為你收集整理的Java12-day03【(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java11-day02【多态(成员访问
- 下一篇: Java13-day04【Integer