方法
- 方法與方法之間是平級(jí)關(guān)系,不能嵌套
- return表示結(jié)束當(dāng)前方法
基本數(shù)據(jù)類型和引用數(shù)據(jù)類型
基本數(shù)據(jù)類型:數(shù)據(jù)存儲(chǔ)在自己的空間中
引用數(shù)據(jù)類型:數(shù)據(jù)存儲(chǔ)在其他空間中,自己空間存儲(chǔ)的是地址值
值傳遞
- 傳遞基本數(shù)據(jù)類型時(shí),傳遞的是真實(shí)的數(shù)據(jù),形參的改變,不影響實(shí)際參數(shù)的值
- 要有new才會(huì)有堆內(nèi)存
- 引用類型,傳遞的是地址值,形參的改變,影響實(shí)際參數(shù)的值
自動(dòng)拆裝箱
-
裝箱(boxing):
將 基本數(shù)據(jù)類型 轉(zhuǎn)換成 包裝類
。 -
拆箱(unboxing):
將 包裝類 轉(zhuǎn)換成 基本數(shù)據(jù)類型
。 -
自動(dòng)裝箱:
將 基本數(shù)據(jù)類型 自動(dòng)轉(zhuǎn)換成 包裝類
。 -
自動(dòng)拆箱:
將 包裝類 自動(dòng)轉(zhuǎn)換成 基本數(shù)據(jù)類型
。
// 自動(dòng)裝箱
Integer num1 = 6;
// 自動(dòng)拆箱
int num2 = num1;
this
- this指向一個(gè)當(dāng)前對(duì)象的引用,只能在對(duì)象內(nèi)使用
- 不能用于靜態(tài)方法(this是一個(gè)對(duì)象層面的概念,不要與類層次概念混淆)
- 在方法內(nèi)部與局部變量與成員屬性重名時(shí),進(jìn)行區(qū)分
- 調(diào)用本類的構(gòu)造方法
- super調(diào)用父類的方法
重載
-
同一個(gè)類中方法名相同,參數(shù)不同的方法。與返回值無關(guān)
- 參數(shù)不同,個(gè)數(shù)不同,類型不同,順序不同
-
java虛擬機(jī)會(huì)根據(jù)不同的參數(shù)來區(qū)分同名的方法
構(gòu)造方法
-
可以有多個(gè)構(gòu)造函數(shù),但是需要重載
-
構(gòu)造函數(shù)存在的意義,給初始值賦值
-
構(gòu)造方法也叫構(gòu)造器,構(gòu)造函數(shù)
-
作用:創(chuàng)建對(duì)象給變量賦值,初始化
-
創(chuàng)建一次對(duì)象,構(gòu)造方法就會(huì)被調(diào)用一次
特點(diǎn):
1.方法名與類名相同,大小寫也要一致
2.沒有返回值類型,連void都沒有
3.沒有具體的返回值 (不能由retrun帶回結(jié)果數(shù)據(jù))
Java內(nèi)存
成員變量和局部變量
內(nèi)部類
1.什么是內(nèi)部類?
-
寫在一個(gè)類里面的類就叫做內(nèi)部類
2.什么時(shí)候用到內(nèi)部類?
- B類表示的事物是A類的一部分,且B單獨(dú)存在沒有意義比如: 汽車的發(fā)動(dòng)機(jī)ArrayList的選代器人的心臟等等
-
內(nèi)部類的分類
匿名內(nèi)部類
- 為了避免一次調(diào)用就要?jiǎng)?chuàng)建一個(gè)類去繼承父類
lambda表達(dá)式
- @FunctionalInterface接口加了這個(gè)注解不報(bào)錯(cuò),就是函數(shù)式接口,可以使用lambda表達(dá)式
package com.liang.lambda;
import java.util.Arrays;
import java.util.Comparator;
public class lambdaDemo {
public static void main(String[] args) {
//lambda表達(dá)式
Integer[] arr = {21,3,4,5,67,8,9};
// Arrays.sort(arr, new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return o1-o2;
// }
// });
//lambda完整格式
// Arrays.sort(arr,(Integer o1, Integer o2)->{
// return o1-o2;
// });
//lambda省略寫法
Arrays.sort(arr,( o1, o2)-> o1-o2);
System.out.println(Arrays.toString(arr));
}
}
this
-
this就是找上級(jí)代碼執(zhí)行的內(nèi)容
-
獲取值就近原則
static
-
static表示靜態(tài),是java中的一個(gè)修飾符,可以修飾成員方法,成員變量
-
靜態(tài)變量是隨著類的加載而加載的,優(yōu)先于對(duì)象出現(xiàn)的
-
靜態(tài)變量是類共享的,誰要用誰就拿
-
類.方法調(diào)用工具類
- 靜態(tài)方法里面沒有this,不能調(diào)用非靜態(tài)的成員變量
- 非靜態(tài)方法里面,有個(gè)隱藏的this
- 靜態(tài)會(huì)存在堆內(nèi)存
總結(jié):
-
靜態(tài)方法中沒有this關(guān)鍵字。
-
靜態(tài)方法中,只能訪問靜態(tài)。
-
非靜態(tài)方法可以訪問所有。
-
靜態(tài)方法只能調(diào)用和訪問靜態(tài)
-
靜態(tài)優(yōu)先于對(duì)象加載
增強(qiáng)for遍歷
- 修改增強(qiáng)for中的變量,不會(huì)改變集合中原本的數(shù)據(jù)
排序算法
冒泡排序
- 冒泡排序:相鄰的數(shù)據(jù)兩兩比較,小的放前面,大的放后面
文章來源:http://www.zghlxwxcb.cn/news/detail-453474.html
- idea批量改變字母,選中需要修改的字母shit+f6改成你對(duì)應(yīng)的
public static void main(String[] args) {
//冒泡排序:相鄰的數(shù)據(jù)兩兩比較,小的放前面,大的放后面
int[] arr = {1,5,4,2,3};
//外循環(huán): 表示我要執(zhí)行多少輪如果有n個(gè)數(shù)據(jù),那么執(zhí)行n - 1 輪
for (int i = 0; i < arr.length-1; i++) {//0 1 2 3
//內(nèi)循環(huán): 每一輪中我如何比較數(shù)據(jù)并找到當(dāng)前的最大值
// -1: 為了防止索引越界
//-i: 提高效率,每一輪執(zhí)行的次數(shù)應(yīng)該比上一輪少一次
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
選擇排序文章來源地址http://www.zghlxwxcb.cn/news/detail-453474.html
- 從0索引開始,拿著每一個(gè)索引上的元素跟后面的元素依次比較小的放前面,大的放后面,以此類推。
public static void main(String[] args) {
// 選擇排序:
// 1,從@索引開始,跟后面的元素一一比較。
// 2,小的放前面,大的放后面。
// 3,第一次循環(huán)結(jié)束后,最小的數(shù)據(jù)已經(jīng)確定
// 4,第二次循環(huán)從1索引開始以此類推。
//選擇排序
int[] arr = {10,5,4,2,3};
//最終代碼:
//外循環(huán): 幾輪
//i:表示這一輪中,我拿著哪個(gè)索引上的數(shù)據(jù)跟后面的數(shù)據(jù)進(jìn)行比較并交換
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
到了這里,關(guān)于Java基礎(chǔ)重溫鞏固的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!