數(shù)組常見操作
數(shù)組的遍歷
數(shù)組元素下標(biāo)的合法區(qū)間:[0, length-1]。我們可以通過下標(biāo)來遍歷數(shù)組中的元素,遍歷時可以讀取元素的值或者修改元素的值。
【示例1】?使用循環(huán)遍歷初始化和讀取數(shù)組
public?class?? Test {
????public?static?void?? main(String[] args) {
???????int[] ? a =?new?int[4];
???????//初始化數(shù)組元素的值
???????for(int?? i=0;i<a.length;i++){
?????????? a[i] = 100*i;
?????? }
???????//讀取元素的值
???????for(int?? i=0;i<a.length;i++){
?????????? System.out.println(a[i]);
?????? }
??? }
}
示例1 運行效果圖
數(shù)組的拷貝
System類里也包含了一個static void arraycopy(object src,int srcpos,object dest,?int destpos,int length)方法,該方法可以將src數(shù)組里的元素值賦給dest數(shù)組的元素,其中srcpos指定從src數(shù)組的第幾個元素開始賦值,length參數(shù)指定將src數(shù)組的多少個元素賦給dest數(shù)組的元素。
【示例2】數(shù)組拷貝
public?class?? Test {
????public?static?void?? main(String args[]) {
?????? String[] s = {"阿里","尚學(xué)堂","京東","搜狐","網(wǎng)易"};
??? ??? String[] sBak =?new?? String[6];
??? ??? System.arraycopy(s,0,sBak,0,s.length);
??? ????for?(int?i ? = 0; i < sBak.length; ? i++) {
?????????? System.out.print(sBak[i]+ ??"\t");
?????? }
??? }
}

?示例2?運行效果圖
?java.util.Arrays類?
JDK提供的Java.util.Arrays類,包含了常用的數(shù)組操作,方便我們?nèi)粘i_發(fā)。Arrays類包含了:排序、查找、填充、打印內(nèi)容等常見的操作。
【示例3】打印數(shù)組
import?java.util.Arrays;
public?class?Test {
????public?static?void?main(String args[]) {
???????int[] a = {1,2};
?????? System.out.println(a);?? //打印結(jié)果:[I@35ce36
?????? System.out.println(Arrays.toString(a));? //打印結(jié)果:[1, 2]
??? }
}
新手雷區(qū)
此處的Arrays.toString()方法是Arrays類的靜態(tài)方法,不是前面講的Object的toString()方法。
【示例4】數(shù)組元素的排序
import?java.util.Arrays;
public?class?Test {
????public?static?void?main(String args[]) {
???????int[] a = {1,2,323,23,543,12,59};
?????? System.out.println(Arrays.toString(a));
?????? Arrays.sort(a);
?????? System.out.println(Arrays.toString(a));
??? }
}

?示例4?運行效果圖
【示例5】數(shù)組元素是引用類型的排序(Comparable接口的應(yīng)用)
import?java.util.Arrays;
public?class?Test{
????public?static?void?main(String[] args) {
?????? Man[] msMans = {new?Man(3,"a"),new?? Man(60,"b"),new?Man(2,"c")};
?????? Arrays.sort(msMans);
?????? System.out.println(Arrays.toString(msMans));
??? }
}
class?Man?implements?Comparable {
????int?age;
????int?id;
??? String name;
????public?Man(int?age, String name) {
???????super();
???????this.age = age;
???????this.name = name;
??? }
????public?String toString(){
???????return?this.name;
??? }
????public?int compareTo(Object o) {
?????? Man man = ? (Man) o;
?????? if(this.age<man.age){
?????????? return -1;
?????? }
?????? if(this.age>man.age){
?????????? return 1;
?????? }
?????? return 0;
??? }
}?
【示例6】二分法查找
import?java.util.Arrays;
public?class?? Test {
????public?static?void?? main(String[] args) {
???????int[] ? a = {1,2,323,23,543,12,59};
?????? System.out.println(Arrays.toString(a));
???????Arrays.sort(a);?? ??//使用二分法查找,必須先對數(shù)組進(jìn)行排序
?????? System.out.println(Arrays.toString(a));
?????? System.out.println("該元素的索引:"+Arrays.binarySearch(a, ? 12));?//返回排序后新的索引位置,若未找到返回負(fù)數(shù)。
??? }
}
示例6運行效果圖
【示例7】填充
import?? java.util.Arrays;
public?class?? Test {
????public?static?void?? main(String[] args) {
???????int[] ? a= {1,2,323,23,543,12,59};
?????? System.out.println(Arrays.toString(a));
?????? Arrays.fill(a, 2, 4, 100);??//將2到4索引的元素替換為100
?????? System.out.println(Arrays.toString(a));
??? }
}
示例7 運行效果圖
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰(zhàn)
E-Java高級框架精解
F-Linux和Hadoop?