2013.8.7Java语言基础——数组
數(shù)組是數(shù)據(jù)類(lèi)型一致的變量的集合。
一個(gè):變量
一堆(多個(gè)):數(shù)組
數(shù)組語(yǔ)法:
1)數(shù)組變量(引用類(lèi)型變量)
數(shù)組變量通過(guò)引用地址引用了數(shù)組(數(shù)組對(duì)象)
2)數(shù)組(數(shù)組對(duì)象)
數(shù)組就是個(gè)體,是一個(gè)整體
數(shù)組元素的個(gè)數(shù)叫數(shù)組的長(zhǎng)度length
數(shù)組元素的范圍:0 1 2…length-1
3)數(shù)組元素
是數(shù)組中的每個(gè)變量,使用[下標(biāo)]訪問(wèn)
使用數(shù)組非常有用的API方法
(使用API方法:API方法封裝了常用算法功能,使用這些功能簡(jiǎn)化開(kāi)發(fā)過(guò)程,提高開(kāi)發(fā)效率)
Arrays.toString:用于字符串表示數(shù)組元素
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 String[] str =new String[]{"A","b","c","d"}; 9 System.out.println(Arrays.toString(str));//打印出數(shù)組元素[A, b, c, d] 10 }Arrays.equals:用于比較兩個(gè)數(shù)組內(nèi)容是否相等(便捷)
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 char[] a1 = new char[]{'a','b','c'}; 9 char[] a2 = new char[]{'a','b','c'}; 10 char[] a3 = new char[]{'a','c','d'}; 11 System.out.println(Arrays.equals(a1, a2));//true 12 System.out.println(Arrays.equals(a1, a3));//false 13 } 14 }Arrays.sort:用于實(shí)現(xiàn)數(shù)組排序
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 char[] a = new char[]{'a','d','f','c','b','g'}; 9 System.out.println(Arrays.toString(a));//[a, d, f, c, b, g] 10 Arrays.sort(a); 11 System.out.println(Arrays.toString(a));//[a, b, c, d, f, g] 12 } 13 }Arrays.binarySearch:用于實(shí)現(xiàn)有序數(shù)組 的二分法查找
只能查找排序后的數(shù)組,不然得到的結(jié)果不穩(wěn)定
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 char[] a = new char[]{'a','d','f','c','b','g'}; 9 int index= Arrays.binarySearch(a, 'c'); 10 System.out.println(index);//-2負(fù)數(shù)找不到 11 Arrays.sort(a); 12 index= Arrays.binarySearch(a, 'c'); 13 System.out.println(index);//在排序后數(shù)組的第2位 14 } 15 }?數(shù)組的復(fù)制
最常見(jiàn)用途:數(shù)組的擴(kuò)容算法
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 int[] ary1 = {4,5,6}; 9 int[] ary2 = ary1;//數(shù)組變量的賦值,但數(shù)組還是同一個(gè)。ary1 ary2互相影響 10 ary2[1]++; 11 System.out.println(Arrays.toString(ary1));//[4, 6, 6] 12 System.out.println(Arrays.toString(ary1));//[4, 6, 6] 13 //數(shù)組的復(fù)制:1)使用for循環(huán)實(shí)現(xiàn) 2)使用API 14 //將ary1引用數(shù)組進(jìn)行復(fù)制 15 int[] ary3 = new int[ary1.length]; 16 for(int i=0;i<ary1.length;i++){ 17 ary3[i] = ary1[i]; 18 } 19 ary3[1]++; 20 System.out.println(Arrays.toString(ary3));//[4, 7, 6] 21 System.out.println(Arrays.toString(ary1));//[4, 6, 6] 22 //使用API System.arraycopy()實(shí)現(xiàn)復(fù)制,比較早期,用C寫(xiě)的,性能好 23 int[] ary4 = new int[ary1.length]; 24 //參數(shù):源數(shù)組,源數(shù)組位置,目標(biāo)數(shù)組,目標(biāo)數(shù)組位置,個(gè)數(shù) 25 System.arraycopy(ary1, 0, ary4, 0, ary1.length); 26 System.out.println(Arrays.toString(ary1)); 27 System.out.println(Arrays.toString(ary4)); 28 //使用Arrays.copyOf()方法(JDK1.5開(kāi)始出現(xiàn)),底層就是arraycopy 29 int[] ary5 = Arrays.copyOf(ary1, ary1.length); 30 System.out.println(Arrays.toString(ary1)); 31 System.out.println(Arrays.toString(ary5)); 32 33 } 34 }數(shù)組的擴(kuò)容 與 追加
1) 數(shù)組創(chuàng)建以后長(zhǎng)度不可改變
2) 利用更換數(shù)組的方式實(shí)現(xiàn)擴(kuò)容算法
3) 更換數(shù)組時(shí)候,利用復(fù)制方法保持原數(shù)組內(nèi)容。
?數(shù)組擴(kuò)容是Java API 實(shí)現(xiàn)的常用算法!
?
1 package TestCode; 2 3 import java.util.Arrays; 4 5 public class Test { 6 7 public static void main(String[] args) { 8 // 擴(kuò)容原理:更換新數(shù)組 9 String[] playlist = { "song1", "song2" }; 10 System.out.println(Arrays.toString(playlist)); 11 playlist = new String[] { "song1", "song2", "song3" }; 12 System.out.println(Arrays.toString(playlist)); 13 // 擴(kuò)容:為playlist擴(kuò)容并追加 新 歌曲 “song4” 14 playlist = Arrays.copyOf(playlist, playlist.length + 1); 15 playlist[playlist.length - 1] = "song4"; 16 System.out.println(Arrays.toString(playlist)); 17 // 1) 復(fù)制新數(shù)組(增加容量) 18 // 2) 替換原數(shù)組 19 String[] newOne = new String[playlist.length + 1]; 20 System.arraycopy(playlist, 0, newOne, 0, playlist.length); 21 playlist = newOne; 22 System.out.println(Arrays.toString(playlist)); 23 } 24 }?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/grape/p/3244159.html
總結(jié)
以上是生活随笔為你收集整理的2013.8.7Java语言基础——数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 北京环球影城残疾证免门票吗
- 下一篇: 右侧输卵管通而不畅会影响怀孕吗?