一維數(shù)組:
A:為什么要有數(shù)組(容器)
為了存儲同種數(shù)據(jù)類型的多個值
B:數(shù)組概念
數(shù)組是存儲同一種數(shù)據(jù)類型多個元素的集合霜医。也可以看成是一個容器
?數(shù)組既可以存儲基本數(shù)據(jù)類型涧狮,也可以存儲引用數(shù)據(jù)類型
C:數(shù)組定義格式
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度];
例如:int[] arr = new int[5]; //可以存儲五個int類型的數(shù)據(jù)
左邊:int:數(shù)據(jù)類型伐蒂,[]:代表的數(shù)組酥诽,幾個中括號就代表幾維數(shù)組习瑰,arr:合法的標(biāo)識符
右邊:new:創(chuàng)建新的實(shí)體或?qū)ο笫德眨琲nt:數(shù)據(jù)類型肃晚,[]:代表的數(shù)組锚贱,5:代表數(shù)組的長度
D:什么是數(shù)組的初始化
就是為數(shù)組開辟連續(xù)的內(nèi)存空間,并為每個數(shù)組元素賦予值
E:如何對數(shù)組進(jìn)行初始化
a:動態(tài)初始化 只指定長度关串,由系統(tǒng)給出初始化值
?int[] arr = new int[5];
b:靜態(tài)初始化 給出初始化值拧廊,由系統(tǒng)決定長度?
F:動態(tài)初始化的格式
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];示例:?int[] arr = new int[5];
G:
a:各種類型的默認(rèn)初始化值:
整數(shù)類型:byte,short,int,long默認(rèn)初始化值都是0
浮點(diǎn)類型:float,double默認(rèn)初始化值都是0.0
布爾類型:boolean默認(rèn)初始化值false
字符類型:char默認(rèn)初始化值'\u0000'
char在內(nèi)存中占的兩個字節(jié),是16個二進(jìn)制位
\u0000,每一個0其實(shí)代表的是16進(jìn)制的0,那么四個0就是代表16個二進(jìn)制位
b:數(shù)組的地址的含義
[I@19bb25a
[代表是數(shù)組,幾個就代表幾維晋修,I代表是int類型吧碾,@是固定的,19bb25a代表的是數(shù)組的地址值
H:靜態(tài)初始化的格式
格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,…}墓卦;
簡化格式:數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,…}滤港;
int[] arr = new int[ ]{11,22,33,44,55};
int[] arr2 = {11,22,33,44,55}趴拧;//靜態(tài)初始化的簡寫形式
I:數(shù)組屬性
數(shù)組遍歷:就是依次輸出數(shù)組中的每一個元素
數(shù)組的長度:arr.length數(shù)組的長度
數(shù)組的最大索引:arr.length - 1
J:演示
數(shù)組獲取最值
/*A:案例演示? * 數(shù)組獲取最值(獲取數(shù)組中的最大值最小值)*/
class Demo9_Array {
public static void main(String[] args) {
int[] arr = {33,77,22,44,55};
int max = getMax(arr);
System.out.println(max);
}
/*獲取數(shù)組中最大值 ? 1,返回值類型int ? 2,參數(shù)列表int[] arr? */
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1;i < arr.length ;i++ ) { //從數(shù)組的第二個元素開始遍歷
if (max < arr[i]) { //如果max記錄的值小于的數(shù)組中的元素
max = arr[i]; //max記錄住較大的
}
}
return max;
}
}
數(shù)組元素反轉(zhuǎn)
class Demo10_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
reverseArray(arr);
print(arr);
}
/*? 數(shù)組元素反轉(zhuǎn)? 1,明確返回值類型void? 2,明確參數(shù)列表int[] arr? */
public static void reverseArray(int[] arr) {
for (int i = 0;i < arr.length / 2 ; i++) {
//arr[0]和arr[arr.length-1-0]交換
//arr[1]和arr[arr.length-1-1]交換
//arr[2]和arr[arr.lentth-1-2]
//...
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
/* 數(shù)組遍歷? 1,明確返回值類型void? 2,明確參數(shù)列表int[] arr? */
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) { //遍歷數(shù)組中的每一個元素
System.out.print(arr[i] + " "); //打印在控制臺
}
}
}
數(shù)組查表法(根據(jù)鍵盤錄入索引,查找對應(yīng)星期)
import java.util.Scanner;
class Demo11_Array {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入對應(yīng)的星期范圍在1-7");
int week = sc.nextInt();
System.out.println("星期" + getWeek(week));
}
/* 根據(jù)索引返回對應(yīng)的星期 1,返回值類型char 2,參數(shù)列表int week */
public static char getWeek(int week) {
char[] arr = {' ','一','二','三','四','五','六','日'}; //定義了一張星期表
return arr[week]; //通過索引獲取表中的元素
}
}
數(shù)組元素查找(查找指定元素第一次在數(shù)組中出現(xiàn)的索引)
class Demo12_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77};
int index = getIndex(arr,88);
System.out.println(index);
}
/* 查找元素索引 1,返回值類型int 2,明確參數(shù)列表,int[] arr,int value */
public static int getIndex(int[] arr,int value) {
for (int i = 0;i < arr.length ;i++ ) { //數(shù)組的遍歷
if (arr[i] == value) { //如果數(shù)組中的元素與查找的元素匹配
return i;
}
}
return -1;
}
}
二維數(shù)組:
A:二維數(shù)組格式1
int[][] arr = new int[3][2];?
解釋:這是一個二維數(shù)組溅漾,這個二維數(shù)組中有3個一維數(shù)組,每個一維數(shù)組中有2個元素
System.out.println(arr); //[[I@19bb25a ? 二維數(shù)組的地址值
System.out.println(arr[0]); //[I@da6bf4 ? 一維數(shù)組的地址值
System.out.println(arr[0][0]); //0? 元素值
B:注意事項(xiàng)
a:以下格式也可以表示二維數(shù)組
?1:數(shù)據(jù)類型 數(shù)組名[][] = new 數(shù)據(jù)類型[m][n];
?2:數(shù)據(jù)類型[] 數(shù)組名[] = new 數(shù)據(jù)類型[m][n];
b:注意下面定義
int[] x,y[]; x是一維數(shù)組,y是二維數(shù)組
C:二維數(shù)組格式2
int[][] arr = new int[3][];?
解釋:這是一個二維數(shù)組著榴,這個二維數(shù)組中有三個一維數(shù)組添履,三個一維數(shù)組都沒有被賦值
arr[0] = new int[3];
arr[1] = new int[5];?
解釋:第一個一維數(shù)組中可以存儲三個int值,第二個一維數(shù)組中可以存儲五個int值
D:二維數(shù)組格式3
int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
解釋:這是一個二維數(shù)組脑又,這個二維數(shù)組中每個大括號都代表一個一維數(shù)組
System.out.println(arr); ? //[[I@19bb25a,二維數(shù)組的地址值
System.out.println(arr[0]); ? //[I@da6bf4,一維數(shù)組的地址值
System.out.println(arr[0][0]); ? //1,一維數(shù)組中的元素值
E:二維數(shù)組遍歷
外循環(huán)控制的是二維數(shù)組的長度暮胧,其實(shí)就是一維數(shù)組的個數(shù),內(nèi)循環(huán)控制的是一維數(shù)組的長度
class Test1_Array {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
for (int i = 0;i < arr.length ;i++ ) { //獲取到每個二維數(shù)組中的一維數(shù)組
for (int j = 0;j < arr[i].length ;j++ ) { //獲取每個一維數(shù)組中的元素
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
F:
基本數(shù)據(jù)類型的值傳遞,不改變原值,因?yàn)檎{(diào)用后就會彈棧,局部變量隨之消失
引用數(shù)據(jù)類型的值傳遞,改變原值,因?yàn)榧词狗椒◤棗?但是堆內(nèi)存數(shù)組對象還在,可以通過地址繼續(xù)訪問
Java中到底是傳值還是傳址
1,既是傳值,也是傳地址,基本數(shù)據(jù)類型傳遞的值,引用數(shù)據(jù)類型傳遞的地址
2,java中只有傳值,因?yàn)榈刂分狄彩侵?出去面試都說這種,支持者是高司令(java之父))