Java知識(shí)點(diǎn)總結(jié) (數(shù)組)
@(Java知識(shí)點(diǎn)總結(jié))[Java, Java數(shù)組]
[toc]
一維數(shù)組 定義用于存儲(chǔ)同一類型數(shù)據(jù)的一個(gè)容器
可以對(duì)該容器中的數(shù)據(jù)從0開(kāi)始進(jìn)行編號(hào)
數(shù)組是對(duì)象
聲明數(shù)組元素類型 [ ] 變量名 等價(jià) 元素類型 變量名 [ ]
元素類型 [ ] 變量名 = new 元素類型 [元素的個(gè)數(shù)];
元素類型 [ ] 變量名 = {元素1,元素2...};
元素類型 [ ] 變量名 = new 元素類型[ ]{元素1,元素2...};
數(shù)組元素的個(gè)數(shù):__length__ 下標(biāo)運(yùn)算:[ ]數(shù)組的元素是通過(guò)索引訪問(wèn)的。數(shù)組索引從 0 開(kāi)始,所以索引值從 0 到 length-1.
場(chǎng)景異常ArrayIndexOutOfBoundsException(數(shù)組下標(biāo)越界異常)
二維數(shù)組 二維數(shù)組可以看成以數(shù)組為元素的數(shù)組,例如: Java中多維數(shù)組的聲明和初始化應(yīng)從高維到低維的順序進(jìn)行,例如: 需要兩次下標(biāo)運(yùn)算才能取出元素 應(yīng)用:表格、矩陣、棋盤、地圖 數(shù)組相關(guān)算法 數(shù)組拷貝import java.util.Arrays; /** * 數(shù)組拷貝 * @author Administrator * */ public class ArrayTest2 { //這樣拷貝數(shù)組間沒(méi)有隔離性 public static void test1(){ String[] ss1 = {"1","2","3"}; String[] ss2 = ss1; //把ss1對(duì)數(shù)組的引用傳遞給變量ss2,兩個(gè)變量指向的是同一個(gè)數(shù)組 ss2[0] = "張三"; System.out.println(ss1[0]); //張三 } public static void test2(){ String[] ss1 = {"1","2","3"}; String[] ss2 = new String[ss1.length];//通過(guò)new關(guān)鍵字在內(nèi)存中開(kāi)辟一塊空間,ss2指向的是新的數(shù)組對(duì)象 for (int i = 0; i < ss2.length; i++) { ss2[i] = ss1[i]; } ss2[0] = "張三"; System.out.println(ss1[0]); //1 } //API提供的方式,底層用C++寫(xiě)的,所以速度很快,比f(wàn)or循環(huán)的效率高 public static void test3(){ String[] ss1 = {"1","2","3"}; String[] ss2 = new String[ss1.length]; System.arraycopy (ss1, 0, ss2, 0, ss1.length); System.out.println(Arrays.toString(ss2)); // [1, 2, 3] } public static void test4(){ String[] ss1 = {"1","2","3"}; String[] ss2 = Arrays.copyOf (ss1, ss1.length); System.out.println(Arrays.toString(ss2)); //[1, 2, 3] } public static void main(String[] args) { test1(); test2(); test3(); test4(); } }數(shù)組擴(kuò)容
import java.util.Arrays; /** * 數(shù)組擴(kuò)容 * @author Administrator * */ public class ArrayTest3 { public static void test1(){ String[] arry1 = {"張三","李四","王五"}; arry1 = Arrays.copyOf (arry1, arry1.length+2); System.out.println(arry1.length); //5 System.out.println(Arrays.toString(arry1)); //[張三, 李四, 王五, null, null] } public static void test2(){ String str = "統(tǒng)計(jì)一個(gè)字符在字符串中的所有位置"; //int[] arry = countAll(str, "字"); // [4, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] int[] arry = countAll2(str, "字"); // [4, 7] System.out.println(Arrays.toString(arry)); } //浪費(fèi)內(nèi)存 private static int[] countAll(String str,char ch){ char[] charArray = str.toCharArray(); int[] array = new int[charArray.length]; int index = 0; for (int i = 0; i < charArray.length; i++) { if (ch == charArray[i]) { array[index] = i; index ++; } } return array; } private static int[] countAll2(String str,char ch){ int[] array = {}; //創(chuàng)建一個(gè)空數(shù)組 for (int i = 0; i < str.length(); i++) { if (ch == str.charAt(i)) { array = Arrays.copyOf(array, array.length+1); array[array.length-1] = i; } } return array; } public static void main(String[] args) { test1(); test2(); } }數(shù)組排序
import java.util.Arrays; /** * 排序 * @author Administrator * */ public class ArrayTest4 { // java 提供的排序方法 public static void arraySort(int[] array) { Arrays.sort(array); System.out.println(Arrays.toString(array)); } // 冒泡排序,前一個(gè)數(shù)與后一個(gè)數(shù)進(jìn)行比較 public static void bubbleSort(int[] array) { int temp = 0; for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[j] < array[i]) { temp = array[i]; array[i] = array[j]; array[j] = temp; } } } System.out.println(Arrays.toString(array)); } // 選擇排序 public static void selectSort(int[] array) { int temp = 0; for (int i = 0; i < array.length - 1; i++) { int min = i; for (int j = i + 1; j < array.length; j++) { if (array[min] > array[j]) { min = j; } } if (min != i) { temp = array[i]; array[i] = array[min]; array[min] = temp; } } System.out.println(Arrays.toString(array)); } // 插入排序 public static void insertSort(int[] array) { int temp = 0; for (int i = 1; i < array.length; i++) { for (int j = i; j > 0; j--) { if (array[j]數(shù)組查找 import java.util.Arrays; /** * 無(wú)序數(shù)組 - 順序查找 * 有序數(shù)組 - 二分查找 * @author Administrator * */ public class ArrayTest5 { //有序數(shù)組,二分查找 public static int binarySerarch(int[] array ,int num){ int low = 0; int high = array.length-1; while(low <= high){ int mid = (low+high)/2; if (num>array[mid]) { low = mid + 1; }else if (numArrays工具類 java.util.Arrays類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的
import java.util.Arrays; import java.util.List; public class ArrayTest6 { public static void main(String[] args) { int[] nums = new int[10]; //填充數(shù)組 Arrays.fill (nums, 3); System.out.println(Arrays.toString(nums)); //[3, 3, 3, 3, 3, 3, 3, 3, 3, 3] //將第4個(gè)元素到低8個(gè)元素的值,賦值為0 Arrays.fill (nums,3,8,0); System.out.println(Arrays.toString(nums)); //[3, 3, 3, 0, 0, 0, 0, 0, 3, 3] // 將第3到第5之間的元素進(jìn)行排序 char[] ch = {"a","d","f","c","j","e"}; Arrays.sort (ch,2,5); System.out.println(Arrays.toString(ch)); //[a, d, c, f, j, e] // 比較元素是否相等 char[] ch2 = ch.clone(); System.out.println(Arrays.equals (ch, ch2)); //true 數(shù)組元素內(nèi)容相等 System.out.println(ch == ch2); //false 不是同一個(gè)對(duì)象 //二分查找 Arrays.sort(ch); //必須先排好序,否則結(jié)果不正確 int index = Arrays.binarySearch (ch, "c"); System.out.println(index); // 1 //數(shù)組轉(zhuǎn)為list集合 int[] array1 = {34,21,56,22,1,7,8,3,0,21}; List數(shù)組內(nèi)存list1 = Arrays.asList(array1); System.out.println(list1.size()); //1 Integer[] array2 = {34,21,56,22,1,7,8,3,0,21}; List list2 = Arrays.asList (array2); System.out.println(list2.size()); //10 for (Integer i : list2) { System.out.print(i+","); // 34,21,56,22,1,7,8,3,0,21, } } } int score[]; //聲明一個(gè)整數(shù)數(shù)組score 此時(shí)這個(gè)變量并沒(méi)有包含任何內(nèi)容,編譯器僅僅會(huì)分配一塊內(nèi)存給它,用來(lái)保存指向數(shù)組實(shí)體的地址,如圖:聲明之后,接著要進(jìn)行內(nèi)存分配的操作。這一行代碼會(huì)開(kāi)辟3個(gè)可供保存整數(shù)的內(nèi)存空間,并把此內(nèi)存空間的參考地址賦給score變量。如圖:二維數(shù)組內(nèi)存:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69131.html
摘要:代碼實(shí)現(xiàn)在控制臺(tái)打印總結(jié)本篇文章帶大家搭好環(huán)境,并體驗(yàn)了控制臺(tái)打印。輸出結(jié)果總結(jié)熟練掌握取余和整除運(yùn)算,大有作用。終止本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。 ?本文收錄...
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器與相似,但是是同步的。所以說(shuō)是線程安全的動(dòng)態(tài)數(shù)組。如果集合中的元素的數(shù)目大于目前集合數(shù)組的長(zhǎng)度時(shí),增長(zhǎng)率為目前數(shù)組長(zhǎng)度的而增長(zhǎng)率為目前數(shù)組長(zhǎng)度的如過(guò)在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用有一定的優(yōu)勢(shì)。 Java知識(shí)點(diǎn)總結(jié)(Java容器-Vector) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection, JavaList] Vec...
摘要:知識(shí)點(diǎn)總結(jié)字節(jié)流知識(shí)點(diǎn)總結(jié)字節(jié)流在程序中所有的數(shù)據(jù)都是以流的方式進(jìn)行傳輸或保存的,程序需要數(shù)據(jù)時(shí)要使用輸入流讀取數(shù)據(jù),而當(dāng)程序需要將一些數(shù)據(jù)保存起來(lái)時(shí),就要使用輸出流。字節(jié)流主要操作類型數(shù)據(jù),以數(shù)組為準(zhǔn),主要操作類是類和類。 Java知識(shí)點(diǎn)總結(jié)(JavaIO-字節(jié)流) @(Java知識(shí)點(diǎn)總結(jié))[Java, JavaIO] [toc] 字節(jié)流 在程序中所有的數(shù)據(jù)都是以流的方式進(jìn)行傳輸或保...
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器函數(shù)庫(kù)是包下的一些接口和類,類是用來(lái)產(chǎn)生對(duì)象存放數(shù)據(jù)用的,而接口是訪問(wèn)數(shù)據(jù)的方式。底層也是數(shù)組實(shí)現(xiàn),線程安全,效率低效率高,線程不安全。 Java知識(shí)點(diǎn)總結(jié)(Java容器-Collection) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection] [toc] Collection Collection函數(shù)庫(kù)是java.uti...
摘要:知識(shí)點(diǎn)總結(jié)容器知識(shí)點(diǎn)總結(jié)容器底層實(shí)現(xiàn)是數(shù)組,訪問(wèn)元素效率高查詢快,插入修改刪除元素慢與相比,它效率高,但線程不安全。 Java知識(shí)點(diǎn)總結(jié)(Java容器-ArrayList) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java容器, JavaCollection, JavaList] ArrayList 底層實(shí)現(xiàn)是數(shù)組,訪問(wèn)元素效率高 (查詢快,插入、修改、刪除元素慢) 與LinkedLis...
閱讀 2857·2023-04-26 02:49
閱讀 3441·2021-11-25 09:43
閱讀 3367·2021-10-09 09:43
閱讀 2985·2021-09-28 09:44
閱讀 2446·2021-09-22 15:29
閱讀 4506·2021-09-14 18:02
閱讀 2773·2021-09-03 10:48
閱讀 3426·2019-08-30 12:47