一、重點(diǎn)知識(shí)
double float小數(shù)在計(jì)算機(jī)中計(jì)算取得的都是近似值,所以存在精度問(wèn)題
增強(qiáng)for循環(huán)
專門用于獲取數(shù)組和集合中的元素
只能取值,不能賦值,因?yàn)樗Z(yǔ)法層面上操作不到下標(biāo)
代碼示例
public class For_eachTest {
public static void main(String[] args) {
????String [] name = new String []{"name","cao","cao","yu"};
????//for -each循環(huán)(增強(qiáng)循環(huán))
????for(String e : name){
????????????System.out.println(e);
????????????}
????????}
????????}
for循環(huán)使用中找不出來(lái)規(guī)律就二倍看看有沒(méi)有規(guī)律
最后一次警告char = ‘16’ 是錯(cuò)誤的,一次只能寫一個(gè)字符,16算兩個(gè)字符了
存在堆里面的數(shù)據(jù)都是有默認(rèn)值的
記得數(shù)組得動(dòng)態(tài)初始化也是可以先定義再賦值的
局部變量必須先賦值再使用,即便是引用數(shù)據(jù)類型得局部變量也是如此
參數(shù)列表里面把數(shù)組作為形參,格式 int [] arr 。
int [] 起到的是聲明arr的類型的作用int []作為一個(gè)整體? 表示數(shù)組數(shù)據(jù)類型
程序一進(jìn)來(lái)先找主函數(shù),執(zhí)行主函數(shù)里面的內(nèi)容,主函數(shù)里面聲明的變量會(huì)在主函數(shù)結(jié)束后才被釋放內(nèi)存空空間。也就是 ===主函數(shù)結(jié)束后里面的局部變量才會(huì)被銷毀
堆里面的結(jié)構(gòu)不是及時(shí)銷毀的,得靠自動(dòng)垃圾回收機(jī)制得判斷
二、重點(diǎn)問(wèn)題
可變形參的使用 -----把它當(dāng)作一個(gè)數(shù)組來(lái)使用
代碼示例
public void sum(int ... num){
? int sum = 0;
? ? ?for(int i =0 ;i < num.length;i++){
? ? ? ? sum += num[i];
? ? }
}
//把它當(dāng)作一個(gè)數(shù)組來(lái)使用,他也可以使用下標(biāo)
注意:可變參數(shù)一定要寫在最后?
Boolean n2 = new Boolean("true");為什么可以這樣寫
在構(gòu)造類得轉(zhuǎn)換基本數(shù)據(jù)類型時(shí)時(shí)如果調(diào)用方法形參為String型,則賦值使用字符串格式,他自動(dòng)會(huì)把數(shù)據(jù)從雙引號(hào)當(dāng)中抽取出來(lái)
三、課堂知識(shí)
3.1、數(shù)組遍歷得兩種寫法
使用for循環(huán)
遍歷:依次訪問(wèn),從第一個(gè)元素,訪問(wèn)到最后一個(gè)元素。
1、使用循環(huán)來(lái)遍歷數(shù)組
for(int i = 0;i < arr.length; i++){
arr[i] = i;//賦值
System.out.println(arr[i]);//獲取數(shù)值
}
for-each循環(huán)
for-each循環(huán):【擴(kuò)展】
增強(qiáng)for循環(huán):JDK1.5的版本出現(xiàn)的。
特定的用法:專門用于獲取數(shù)組中的每一個(gè)元素的值。
語(yǔ)法結(jié)構(gòu):
for(數(shù)據(jù)類型 變量名 : 數(shù)組名){
? ? System.out.println(變量名);
}
工作原理:
for(int e :arr){
? ? System.out.println(e);
}
int e,定義變量e,
依次獲取數(shù)組的元素,賦值給e
注意點(diǎn):
? ? A:for-each只能獲取數(shù)組的數(shù)據(jù),但是不能給數(shù)組進(jìn)行賦值
? ? B:for-each,在代碼這個(gè)層面,不能操作下標(biāo)。
3.2、數(shù)組中的默認(rèn)值
數(shù)組的默認(rèn)值,就是數(shù)組創(chuàng)建后,里面存儲(chǔ)的默認(rèn)的數(shù)據(jù)。
數(shù)組的引用存在棧內(nèi)存中,數(shù)組本身存在堆內(nèi)存中。
數(shù)組創(chuàng)建完,就有默認(rèn)的數(shù)據(jù)了。
數(shù)組中存儲(chǔ)的默認(rèn)值:
數(shù)組中是有默認(rèn)值的
整數(shù):0? ? ?小數(shù):0.0? ? ?字符:\u0000????布爾:false????其他:null
3.3、創(chuàng)建數(shù)組的其他語(yǔ)法
動(dòng)態(tài)創(chuàng)建數(shù)組:先創(chuàng)建數(shù)組,然后再根據(jù)下標(biāo)一個(gè)一個(gè)存儲(chǔ)數(shù)據(jù)。
A:先聲明,再創(chuàng)建(分配內(nèi)存空間)
數(shù)據(jù)類型 [] 數(shù)組名;
數(shù)組名 = new 數(shù)據(jù)類型[長(zhǎng)度];
B:聲明并創(chuàng)建
數(shù)據(jù)類型 [] 數(shù)組名 = new 數(shù)據(jù)類型[長(zhǎng)度];
數(shù)據(jù)類型? 數(shù)組名[] = new 數(shù)據(jù)類型[長(zhǎng)度];
//靜態(tài)創(chuàng)建數(shù)組:聲明,創(chuàng)建,賦值一起寫完。
C:聲明,創(chuàng)建,并賦值
數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)值1,數(shù)值2,數(shù)值3,數(shù)值4.。。。};
//=左邊聲明數(shù)組,=右邊,會(huì)先根據(jù){}中數(shù)據(jù)的個(gè)數(shù),然后再將{}中數(shù)據(jù),按照順序存儲(chǔ)進(jìn)去。
完成了幾件事:
1.先聲明:int[] c
2.根據(jù){}中數(shù)組值的個(gè)數(shù),開辟堆內(nèi)存
3.將{}中的數(shù)組值,依次按照順序存入數(shù)組中
D:聲明,創(chuàng)建,并賦值
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{數(shù)值1,數(shù)值2,數(shù)值3,數(shù)值4.。。。}
3.4、數(shù)組的地址傳遞
Java中的數(shù)據(jù)分為兩大類:
基本類型:4類8種
操作的都是數(shù)值本身
引用類型:數(shù)組
操作的是地址
基本類型進(jìn)行賦值:數(shù)值
引用類型進(jìn)行賦值:地址
3.5、數(shù)組作為參數(shù)
數(shù)組是引用類型:傳遞的是地址。就是參數(shù)也會(huì)指向這塊內(nèi)存。當(dāng)方法結(jié)束的時(shí)候,參數(shù)就銷毀了
class Test5ArrayMethod
{
//設(shè)計(jì)一個(gè)方法,用于打印數(shù)組
public static void printArray(int[] arr){
//int[] arr = a;a的地址給了arr,那么arr和a指向同一塊內(nèi)存的數(shù)組
for(int e : arr){
System.out.print(e +"\t");
}
System.out.println();
}
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
//設(shè)計(jì)一個(gè)方法,用于打印數(shù)組
printArray(a);//將a的地址,傳遞給arr
}
}
3.6 可變參數(shù)
概念:一個(gè)方法可以接收的參數(shù)的數(shù)量不定(0-多個(gè)),但是類型固定。
語(yǔ)法:數(shù)據(jù)類型 ... 參數(shù)名,可變參數(shù)在方法中當(dāng)數(shù)組使用。
注意事項(xiàng):
1、如果參數(shù)列表中,除了可變參數(shù)還有其他的參數(shù),可變參數(shù)要寫在整個(gè)參數(shù)列表的最后。
? ? 2、一個(gè)方法最多只能有一個(gè)可變參數(shù)。
class Test6Array
{
//求一組int類型的數(shù)據(jù)的和
public static void getSum(int ... nums ){
int sum = 0;
for(int i = 0;i <nums.length;i++){
sum += nums[i];
}
System.out.println("結(jié)果:" + sum);
}
public static void main(String[] args)
{
/*
可變參數(shù):同一種類型的參數(shù),類型固定的,但是個(gè)數(shù)不固定。
語(yǔ)法的支持:
數(shù)據(jù)類型 ... 參數(shù)名
可變參數(shù),類型固定,個(gè)數(shù)可變。0-多個(gè)
在方法中可變參數(shù)當(dāng)數(shù)組使用
*/
getSum(1,2,3);
getSum(1,2,3,4,5,6,7,8,9,10);
}
}
3.7 數(shù)組的排序
排序:數(shù)組是存儲(chǔ)一組數(shù)據(jù),而且這些數(shù)據(jù)是有順序的。但是數(shù)值本身可能是無(wú)序的。通過(guò)算法來(lái)實(shí)現(xiàn)給數(shù)組進(jìn)行排序,升序(數(shù)值從小到大),降序(數(shù)值從大到小)。
1冒泡排序
1、冒泡排序:Bubble Sort
原理:比較相鄰的兩個(gè)數(shù),將較大的數(shù),向后移動(dòng)。
class Test7BubbleSort
{
public static void main(String[] args)
{
int[] arr = {15,23,8,10,7};
for(int i= 1; i<arr.length;i++){//控制輪數(shù):
for(int j = 0;j < arr.length - 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.println(arr[i]);
}
}
}