6. 使用【Arrays類(lèi)】操作Java中的數(shù)組
Arrays 類(lèi)
是 Java 中提供的一個(gè)工具類(lèi)
挪鹏,在 java.util 包
中拉庶。該類(lèi)中包含了一些方法
用來(lái)直接操作數(shù)組杨刨,比如可直接實(shí)現(xiàn)數(shù)組的排序映之、搜索等沾乘;
6.1 要使用Arrays類(lèi)怜奖,必須先導(dǎo)入對(duì)應(yīng)的包:
import java.util.Arrays;
6.2 介紹一些Arrays中常用的方法
6.2.1 排序
語(yǔ)法: Arrays.sort(數(shù)組名);
可以使用 sort( )
方法實(shí)現(xiàn)對(duì)數(shù)組的排序
,只要將數(shù)組名
放在 sort( ) 方法的括號(hào)中意鲸,就可以完成對(duì)該數(shù)組的排序(按升序排列
);
6.2.1.2 小疑惑烦周?
import java.util.Arrays;//導(dǎo)入Arrays類(lèi)
public class HelloWorld {
public static void main(String[] args) {
int[] nums = {23, 564, 63, 4, 78, 12, 0};
Arrays.sort(nums);
for(int i =0; i<nums.length; i++){
System.out.println(nums[i]);
}
System.out.println(nums);//[I@659e0bfd 這是什么鬼?
//System.out.println( Arrays.sort(nums));// 會(huì)報(bào)錯(cuò)怎顾,和main有關(guān)把;
}
}
- 輸出
nums
,打印的是神馬玩意漱贱?- JavaScript是可以直接打印數(shù)組的槐雾,但Java中打印數(shù)組出來(lái)的那個(gè)是什么鬼?
- 既然我使用sort()排序了幅狮,為什么不能直接輸出
Arrays.sort(nums)
?- 大致猜出募强,估計(jì)和main方法前的void有關(guān)系;
- Java和JavaScript還是有區(qū)別的崇摄;
6.2.2 將數(shù)組轉(zhuǎn)換成字符串
語(yǔ)法: Arrays.toString(數(shù)組名);
可以使用 toString( )
方法將一個(gè)數(shù)組
轉(zhuǎn)換成字符串
擎值,該方法按順序
把多個(gè)
數(shù)組元素連接
在一起,多個(gè)元素之間使用逗號(hào)和空格
隔開(kāi);
舉個(gè)栗子:
-
寫(xiě)完這個(gè)栗子逐抑,感覺(jué)之前上面的小疑惑少了不少:
貌似println輸出的是字符類(lèi)型鸠儿,要把數(shù)組轉(zhuǎn)化成字符才能輸出,輸出結(jié)果是
[元素1, 元素2,...]
,之前還猜測(cè)Java數(shù)組輸出形式不會(huì)是{元素1厕氨, 元素2, ...}
进每,捂臉啊...
6.3 java中使用foreach遍歷數(shù)組
foreach 是for
語(yǔ)句的特殊簡(jiǎn)化版本
,它在遍歷數(shù)組
命斧、集合
的時(shí)候更簡(jiǎn)單便捷
田晚;
語(yǔ)法:
for(元素類(lèi)型 元素變量:遍歷對(duì)象){
// 執(zhí)行的代碼;
}
舉個(gè)栗子:
import java.util.Arrays;
public class HelloWorld{
public static void main(String[] args){
String songs[] = {"煎餅", "果子", "來(lái)一套"};
for(String song: songs ){
System.out.println(song);
}
}
}
- 對(duì)比f(wàn)or與foreach:
注意:
元素變量
相當(dāng)于遍歷對(duì)象
中的一個(gè)實(shí)例国葬,名字只要符合標(biāo)準(zhǔn)規(guī)范即可贤徒,與JavaScript中的for item in 遍歷對(duì)象
的item類(lèi)似;
如果想在 foreach 語(yǔ)句中獲取數(shù)組元素的下標(biāo)汇四,該如何做呢接奈??
-
在外部定義一個(gè)變量船殉,初始化為0鲫趁,遍歷的同時(shí)讓這個(gè)變量記錄循環(huán)的次數(shù),把記錄的次數(shù)當(dāng)它的下標(biāo)利虫;
Java中的二維數(shù)組
二維數(shù)組也相當(dāng)于一種特殊的``一維數(shù)組挨厚,只不過(guò)它的
每個(gè)數(shù)組空間中保存的是一個(gè)
一維數(shù)組`;
有點(diǎn)繞堡僻,我自己認(rèn)為,它就是一維數(shù)組里面套一維數(shù)組
,不知道對(duì)不對(duì)疫剃;
二維數(shù)組的聲明:
1.聲明數(shù)組并分配空間
數(shù)據(jù)類(lèi)型[][] 數(shù)組名 = new 數(shù)據(jù)類(lèi)型[行的個(gè)數(shù)][列的個(gè)數(shù)];
另一種寫(xiě)法:
數(shù)據(jù)類(lèi)型[][] 數(shù)組名;
數(shù)組名 = new 數(shù)據(jù)類(lèi)型[行的個(gè)數(shù)][列的個(gè)數(shù)];
舉栗:
// 定義一個(gè)三行兩列的二維數(shù)組
int[][] test_demo = new int[3][2];
2.賦值
一維數(shù)組和二維數(shù)組都可以通過(guò)下標(biāo)
來(lái)逐個(gè)賦值
钉疫,下標(biāo)的索引是從0
開(kāi)始的;
//二維數(shù)組賦值
數(shù)組名[行的索引][列的索引] = 值;
舉栗:
// 定義一個(gè)2行2列的二維數(shù)組
int[][] num = new int[2][2];
給第1行第1列賦值為2
num[0][0] = 2;
也可以在聲明數(shù)組的同時(shí)為其賦值:
數(shù)據(jù)類(lèi)型[][] 數(shù)組名={{a1,a2...},{a11,a22...},{a21,a22...},...};
臥槽巢价,看慕課上寫(xiě)的這個(gè)地方我有點(diǎn)懵逼了牲阁,??
好了,這樣就清楚多了壤躲,還是小姿勢(shì)不對(duì)惹的禍城菊,嘿嘿嘿
3.處理數(shù)組
二維數(shù)組的訪(fǎng)問(wèn)和輸出同一維數(shù)組一樣,只是多了一個(gè)下標(biāo)而已碉克;
在循環(huán)輸出時(shí)凌唬,需要外層循環(huán)再內(nèi)嵌一個(gè)循環(huán),即外層(行)
循環(huán)一次
漏麦,內(nèi)層(列)
循環(huán)一圈
客税,就可以輸出二維數(shù)組中的每一個(gè)
元素了;
二重循環(huán):
public class HelloWorld {
public static void main(String[] args){
String[][] arr = {{"a1", "a2", "a3"}, {"b1", "b2", "b3"}};
for(int i = 0; i < arr.length; i++){
for(int j =0; j < arr[i].length; j++){
System.out.print(arr[i][j]+",");
}
System.out.println();//換行
}
}
}