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