方法
說明
String
toString(array)
將數(shù)組array轉(zhuǎn)換成字符串
void
sort(array)
對數(shù)組進(jìn)行升序排列。注" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Java中的Arrays,這一篇就夠了

來源: 責(zé)編: 時(shí)間:2024-04-11 09:06:37 251觀看
導(dǎo)讀哈嘍,大家好,我是了不起。JDK中提供了一個(gè)專門用于操作數(shù)組的工具類,即Arrays類,位于java.util 包中。常用方法返回類型
方法
說明
String
toString(array)
將數(shù)組array轉(zhuǎn)換成字符串
void
sort(array)
對數(shù)組進(jìn)行升序排列。注

哈嘍,大家好,我是了不起。eIi28資訊網(wǎng)——每日最新資訊28at.com

JDK中提供了一個(gè)專門用于操作數(shù)組的工具類,即Arrays類,位于java.util 包中。eIi28資訊網(wǎng)——每日最新資訊28at.com

常用方法

返回類型
eIi28資訊網(wǎng)——每日最新資訊28at.com

方法
eIi28資訊網(wǎng)——每日最新資訊28at.com

說明
eIi28資訊網(wǎng)——每日最新資訊28at.com

String
eIi28資訊網(wǎng)——每日最新資訊28at.com

toString(array)
eIi28資訊網(wǎng)——每日最新資訊28at.com

將數(shù)組array轉(zhuǎn)換成字符串
eIi28資訊網(wǎng)——每日最新資訊28at.com

void
eIi28資訊網(wǎng)——每日最新資訊28at.com

sort(array)
eIi28資訊網(wǎng)——每日最新資訊28at.com

對數(shù)組進(jìn)行升序排列。注意:排序算法是由Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch提供的雙軸快速排序。
eIi28資訊網(wǎng)——每日最新資訊28at.com

void
eIi28資訊網(wǎng)——每日最新資訊28at.com

fill(arr,val)
eIi28資訊網(wǎng)——每日最新資訊28at.com

將數(shù)組arr全部元素賦值為val
eIi28資訊網(wǎng)——每日最新資訊28at.com

boolean
eIi28資訊網(wǎng)——每日最新資訊28at.com

equals(arr1,arr2)
eIi28資訊網(wǎng)——每日最新資訊28at.com

判斷兩個(gè)數(shù)組是否相等
eIi28資訊網(wǎng)——每日最新資訊28at.com

與arr類型相同
eIi28資訊網(wǎng)——每日最新資訊28at.com

copyOf(arr,length)
eIi28資訊網(wǎng)——每日最新資訊28at.com

將數(shù)組arr復(fù)制成一個(gè)長度為length的新數(shù)組
eIi28資訊網(wǎng)——每日最新資訊28at.com

int
eIi28資訊網(wǎng)——每日最新資訊28at.com

binarySearch(arr, val)
eIi28資訊網(wǎng)——每日最新資訊28at.com

查詢元素val在arr中的下標(biāo)值
eIi28資訊網(wǎng)——每日最新資訊28at.com

示例代碼eIi28資訊網(wǎng)——每日最新資訊28at.com

public class Test {    public static void main(String[] args) {        int a[]={12,20,13,42,72,26,35,10,46,26,53};        int b[]={3,5,7,8,54,23,9};        int c[]={3,5,7,8,54,23,9};         String str=Arrays.toString(a);       //將特定數(shù)組轉(zhuǎn)換成字符串        System.out.println("字符串:"+str);                Arrays.sort(a);                      //對數(shù)組array的元素進(jìn)行升序排列        System.out.println("排序后:"+Arrays.toString(a));                 Arrays.fill(a,10);                   //所以元素都賦值成特定值        System.out.println("賦值后:"+Arrays.toString(a));                 boolean boo=Arrays.equals(a,b);      //判斷兩個(gè)數(shù)組是否相等(對應(yīng)位置上的元素是否相等)        boolean boo2=Arrays.equals(b, c);        System.out.println("a:"+a);        System.out.println("b:"+b);        System.out.println("c:"+c);        System.out.println("ab相等?"+boo);        System.out.println("bc相等?"+boo2);                 int d[]=Arrays.copyOf(b,b.length);   //把數(shù)組復(fù)制成特定長度的數(shù)組,與直接賦值(引用傳遞)不同        System.out.println("d:"+Arrays.toString(d));        System.out.println("d:"+d);        System.out.println("b:"+b);                int i=Arrays.binarySearch(b, 5);     //查詢特定因素在數(shù)組中的下標(biāo)        System.out.println("下標(biāo)是:"+i);    }}

運(yùn)行結(jié)果:eIi28資訊網(wǎng)——每日最新資訊28at.com

字符串:[12,20,13,42,72,26,35,10,46,26,53]排序后:[10,12,13,20,26,26,35,42,46,53,72]賦值后:「10,10,10,10,10,10,10,10,10,10,10]a:[I@1606bf5b:[I@14fcc96c:[I@bcbcab相等?falsebc相等?trued:[3,5,7,8,54,23,9]d:[I@671416b:[I@14fcc96下標(biāo)是:1

源碼解析

將數(shù)組array轉(zhuǎn)換成字符串

public static String toString(int[] a)eIi28資訊網(wǎng)——每日最新資訊28at.com

int[] arr = { 24, 69, 80, 57, 13 };System.out.println("排序前:" + Arrays.toString(arr)); public static String toString(int[] a) { //a -- arr -- { 24, 69, 80, 57, 13 }     if (a == null)        return "null"; //說明數(shù)組對象不存在    int iMax = a.length - 1; //iMax=4;    if (iMax == -1)        return "[]"; //說明數(shù)組存在,但是沒有元素。     StringBuilder b = new StringBuilder();    b.append('['); //"["    for (int i = 0; ; i++) {        b.append(a[i]); //"[24, 69, 80, 57, 13"        if (i == iMax)         //"[24, 69, 80, 57, 13]"            return b.append(']').toString();        b.append(", "); //"[24, 69, 80, 57, "    }}

二分查找

public static int binarySearch(int[] a,int key)eIi28資訊網(wǎng)——每日最新資訊28at.com

int[] arr = {13, 24, 57, 69, 80};System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));public static int binarySearch(int[] a, int key) {    //a -- arr -- {13, 24, 57, 69, 80}    //key -- 577    return binarySearch0(a, 0, a.length, key);}private static int binarySearch0(int[] a, int fromIndex, int toIndex,                                 int key) {    //a -- arr --  {13, 24, 57, 69, 80}    //fromIndex -- 0    //toIndex -- 5    //key -- 577                                                                                                 int low = fromIndex; //low=0    int high = toIndex - 1; //high=4    while (low <= high) {        int mid = (low + high) >>> 1; //mid=2,mid=3,mid=4        int midVal = a[mid]; //midVal=57,midVal=69,midVal=80        if (midVal < key)            low = mid + 1; //low=3,low=4,low=5        else if (midVal > key)            high = mid - 1;        else            return mid; // key found    }    return -(low + 1);  // key not found.}

復(fù)制

public static int[] copyOf(int[] original, int newLength)eIi28資訊網(wǎng)——每日最新資訊28at.com

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {    @SuppressWarnings("unchecked")    T[] copy = ((Object)newType == (Object)Object[].class)        ? (T[]) new Object[newLength]        : (T[]) Array.newInstance(newType.getComponentType(), newLength);    System.arraycopy(original, 0, copy, 0,                     Math.min(original.length, newLength));    return copy;}

可以看到,最終調(diào)用的是System.arraycopy()方法,由虛擬機(jī)實(shí)現(xiàn),效率自然比用java一個(gè)個(gè)復(fù)制高。eIi28資訊網(wǎng)——每日最新資訊28at.com

深復(fù)制與淺復(fù)制

  • 當(dāng)數(shù)組為一維數(shù)組,且元素為基本類型或String類型時(shí),屬于深復(fù)制,即原數(shù)組與新數(shù)組的元素不會(huì)相互影響。
  • 當(dāng)數(shù)組為多維數(shù)組,或一維數(shù)組中的元素為引用類型時(shí),屬于淺復(fù)制,原數(shù)組與新數(shù)組的元素引用指向同一個(gè)對象。這里說的影響,是兩個(gè)數(shù)組復(fù)制后對應(yīng)的元素。String的特殊是因?yàn)樗牟豢勺冃浴?/li>

一維數(shù)組,元素為基本類型

public class SystemArrayCopy { public static void main(String[] args) {     String str1 = "aa";     String str2 = "bb";     String str3 = "cc";     String str4 = "dd";      String[] src = {str1, str2, str3, str4};     String[] dest = new String[4];     System.arraycopy(src, 0, dest, 0, 4);     System.out.println("改變前");     print("src = ", src);     print("dest = ", dest);     src[0] = "abcd";     System.out.println("改變后");     print("src = ", src);     print("dest = ", dest);   }    private static void print(String string, String[] arr) {        System.out.print(string);        for (String str : arr) {            System.out.print(str + " ");        }        System.out.println();    }}/*改變前src = aa bb cc dd dest = aa bb cc dd 改變后src = abcd bb cc dd dest = aa bb cc dd */

可以看到,源數(shù)組第0個(gè)元素改變,并不會(huì)影響到目標(biāo)數(shù)組。eIi28資訊網(wǎng)——每日最新資訊28at.com

多維數(shù)組

public class SystemArrayCopy { public static void main(String[] args) {     int[] arr1 = {1, 2};     int[] arr2 = {3, 4};     int[] arr3 = {5, 6};     int[] arr4 = {7, 8};     int[][] src = new int[][]{arr1, arr2, arr3, arr4};     int[][] dest = new int[4][];     System.arraycopy(src, 0, dest, 0, 4);     System.out.println("改變前");     print("src = ", src);     print("dest = ", dest);     src[0][0] = 11111;     System.out.println("改變后");     print("src = ", src);     print("dest = ", dest);      } // 簡單輸出二維int數(shù)組的方法 private static void print(String string, int[][] arr) {     System.out.print(string);     for (int[] a : arr) {         for (int i : a) {             System.out.print(i + " ");         }         System.out.print(",");     }     System.out.println(); }}/*改變前src = 1 2 ,3 4 ,5 6 ,7 8 ,dest = 1 2 ,3 4 ,5 6 ,7 8 ,改變后src = 11111 2 ,3 4 ,5 6 ,7 8 ,dest = 11111 2 ,3 4 ,5 6 ,7 8 ,*/

源數(shù)組改變后,目標(biāo)數(shù)組也跟改變了,這就是淺復(fù)制eIi28資訊網(wǎng)——每日最新資訊28at.com

數(shù)組拷貝的4種方法

1. for循環(huán)

使用for循環(huán)自己實(shí)現(xiàn)數(shù)組的復(fù)制eIi28資訊網(wǎng)——每日最新資訊28at.com

2. clone

克隆方法我們在數(shù)組中是找不到的,它是object的方法,我們先看看源碼eIi28資訊網(wǎng)——每日最新資訊28at.com

protected native Object clone() throws CloneNotSupportedException;

看到了修飾符native,說明是由c或者c++實(shí)現(xiàn)的,它的優(yōu)點(diǎn)是速度快,它返回了object對象,所以使用的時(shí)候需要用對象接收返回值。eIi28資訊網(wǎng)——每日最新資訊28at.com

3. System.arraycopy()

通過上述源碼我們看到也是native修飾的,所以底層也是用c或者c++實(shí)現(xiàn)的,但是可以看到?jīng)]有返回值,clone()還需要對返回值進(jìn)行類型轉(zhuǎn)換,所以它的速度是要比clone()要快的,這也是牛客網(wǎng)的一道題,問的就是四種拷貝哪種是最快的,答案肯定是System.arraycopy()。eIi28資訊網(wǎng)——每日最新資訊28at.com

4. Arrays.copyof()

在方法內(nèi)部調(diào)用了System.arraycopy(),相當(dāng)于換了名字。eIi28資訊網(wǎng)——每日最新資訊28at.com

結(jié)語

本次我們介紹了Java中的Arrays的常用方法,Arrays如何去操作數(shù)組、拷貝數(shù)組和打印數(shù)組的方法。eIi28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-82762-0.htmlJava中的Arrays,這一篇就夠了

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Vue 3高級響應(yīng)式數(shù)據(jù)探秘:原理、用法詳解與實(shí)戰(zhàn)示例!

下一篇: 2024 抖音歡笑中國年之AnnieX互動(dòng)容器創(chuàng)新玩法解析

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲欧美日韩国产综合| 1024日韩| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩国产综合网| 欧美午夜女人视频在线| 国产精品视频自拍| 国产亚洲欧美在线| 在线看片欧美| 夜夜躁日日躁狠狠久久88av| 亚洲美女av电影| 亚洲欧美怡红院| 久久久999国产| 欧美大片免费观看在线观看网站推荐| 欧美精品亚洲精品| 国产美女一区二区| 亚洲福利国产精品| 亚洲影院在线观看| 美女精品国产| 欧美午夜激情视频| 黄色小说综合网站| 99精品视频网| 久久精品91| 欧美三级日本三级少妇99| 国产原创一区二区| 在线一区欧美| 久久在线91| 国产精品免费一区豆花| 亚洲国产裸拍裸体视频在线观看乱了中文| 中文日韩在线| 免费欧美电影| 国产农村妇女精品| 亚洲狼人综合| 久久九九国产| 国产精品成人观看视频国产奇米| 在线观看亚洲视频| 午夜精品在线视频| 欧美日韩国产成人在线91| 国内精品久久久久影院薰衣草| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩精品免费在线观看视频 | 亚洲视频免费观看| 免费中文字幕日韩欧美| 国产精品中文字幕在线观看| 亚洲精品一区二区三区樱花| 久久精品亚洲一区二区| 国产精品看片资源| 日韩午夜视频在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 欧美亚洲成人免费| 亚洲精品一区二区三| 久久婷婷人人澡人人喊人人爽| 国产精品女人毛片| 99re6这里只有精品| 嫩草影视亚洲| 伊人精品成人久久综合软件| 欧美一区二区三区在线观看 | 国产精品国产三级国产| 亚洲精品一区二区网址| 麻豆精品视频在线| 国内精品久久久| 亚洲综合激情| 欧美性做爰猛烈叫床潮| 日韩天堂av| 欧美激情一区二区三区四区 | 亚洲精品一区二区三区婷婷月| 久久漫画官网| 国内自拍一区| 久久gogo国模啪啪人体图| 国产精品日韩欧美| 亚洲资源av| 国产精品麻豆欧美日韩ww | 亚洲欧美激情诱惑| 欧美新色视频| 亚洲午夜视频在线| 欧美日韩精品在线播放| 99riav久久精品riav| 欧美日韩国产一区二区三区| 日韩午夜中文字幕| 欧美日韩精品久久| 在线亚洲成人| 国产精品乱人伦一区二区| 亚洲综合久久久久| 国产乱码精品一区二区三区不卡 | 欧美视频日韩| 亚洲性视频h| 国产精品推荐精品| 欧美一区二区三区视频| 国产日本欧美视频| 久久精品二区三区| 伊人激情综合| 欧美激情视频在线播放| 亚洲裸体视频| 欧美日韩综合视频网址| 亚洲与欧洲av电影| 国产日韩精品一区二区| 久久久九九九九| 亚洲大胆女人| 欧美日本在线观看| 亚洲一本大道在线| 国产日韩精品一区二区| 久久躁日日躁aaaaxxxx| 亚洲日本成人| 欧美性生交xxxxx久久久| 亚洲欧美日韩精品一区二区| 国产一区 二区 三区一级| 久久久久欧美| 亚洲精品在线二区| 国产精品久久久久一区二区三区| 欧美亚洲自偷自偷| 在线看日韩av| 欧美日韩第一页| 亚洲一区二区四区| 国产精品99免视看9| 亚久久调教视频| 136国产福利精品导航网址应用 | 欧美/亚洲一区| 一区二区三区波多野结衣在线观看| 国产精品理论片| 久久久久**毛片大全| 亚洲精品少妇网址| 国产精品一二一区| 免费黄网站欧美| 亚洲深夜激情| 好吊视频一区二区三区四区| 欧美精品一区二区精品网 | 亚洲欧美另类在线观看| 激情欧美国产欧美| 欧美日一区二区三区在线观看国产免| 先锋影音久久久| 亚洲国产精品福利| 国产精品久久九九| 久久夜色精品亚洲噜噜国产mv| 99精品国产在热久久| 国产亚洲欧美一级| 欧美激情自拍| 久久不见久久见免费视频1| 亚洲精品美女久久7777777| 国产欧美日韩亚州综合| 欧美激情亚洲一区| 久久精品国产精品亚洲综合| 99国产欧美久久久精品| 国色天香一区二区| 国产精品久久久久9999吃药| 美女图片一区二区| 亚洲欧美成人| 亚洲精品国产精品国自产观看| 国产精品久久久久久久免费软件 | 欧美福利视频在线| 欧美在线视频全部完| 99re视频这里只有精品| 国产自产2019最新不卡| 欧美色欧美亚洲另类二区| 久久嫩草精品久久久久| 亚洲在线1234| 亚洲精品美女免费| 黑人一区二区| 国产精品日韩精品| 欧美日本韩国一区| 另类天堂视频在线观看| 欧美一区二区播放| 中文在线一区| 亚洲精品久久久久久久久久久| 国产一区二区三区四区老人| 欧美亚洲不卡| 欧美日韩国产91| 免费欧美电影| 久久久美女艺术照精彩视频福利播放| 亚洲午夜久久久久久尤物| 亚洲精品永久免费精品| 在线国产精品播放| 国产又爽又黄的激情精品视频| 国产精品欧美一区喷水| 欧美日韩免费观看一区| 欧美77777| 老牛嫩草一区二区三区日本| 欧美在线国产| 香蕉久久一区二区不卡无毒影院| 中文亚洲免费| 野花国产精品入口| 亚洲精品一区二区三区樱花| 黄色精品一区二区| 国产一区二区剧情av在线| 国产精品稀缺呦系列在线| 欧美日韩视频| 欧美日本高清视频| 欧美精品一区在线观看| 美女露胸一区二区三区| 久久一区国产| 久久一区二区视频| 久久天天躁夜夜躁狠狠躁2022| 久久国产精品久久w女人spa| 性久久久久久久久| 午夜日韩电影| 欧美一区二区三区另类| 香蕉久久夜色精品| 午夜激情一区| 亚洲欧美一区二区三区久久| 亚洲影视中文字幕| 亚洲一级二级| 亚洲欧美日韩在线综合| 亚洲一区二区少妇| 亚洲欧美国产va在线影院| 亚洲欧美韩国| 欧美一区二区三区四区视频|