Java數(shù)組的定義與使用
一.一維數(shù)組的定義
1.創(chuàng)建數(shù)組
數(shù)組定義有三種方法:
int[] array1 = new int[10];//前面的int[]為數(shù)組的類型,后面的int[10]為其能夠存放的大小,array1為其數(shù)組名稱 int[] array2 = {1,2,3,4,5}; int[] array3 = new int[]{1,2,3,4,5};
2.初始化數(shù)組
初始化數(shù)組有動態(tài)初始化和靜態(tài)初始化兩種
動態(tài)初始化:在創(chuàng)建數(shù)組時,只定義數(shù)組中元素的個數(shù),并未給里面的元素進行賦值
例如:
int [] array = new int [ 10 ];
靜態(tài)初始化:在創(chuàng)建數(shù)組時不定義數(shù)據(jù)元素個數(shù),而直接將數(shù)組里的數(shù)據(jù)內(nèi)容進行賦值,編譯器會自己判定數(shù)組有幾個元素, 后面的數(shù)據(jù)必須與前面定義的數(shù)據(jù)類型一致
例如:
int[] array1 = {0,1,2,3,4,5,6,7,8,9};
初始化能分為兩步,分步的第二步中new int[]不能省略
int [] array ;
array = new int []{ 10 , 20 , 30 };
當數(shù)組中的元素為動態(tài)初始化時,會有對應(yīng)的默認值
二.數(shù)組的使用
1.訪問數(shù)組
通過數(shù)組的下標進行訪問,數(shù)組在內(nèi)存中是一塊連續(xù)的內(nèi)存空間
public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; System.out.println(array[3]); } }
數(shù)組的下標是從0開始的,所以數(shù)組用下標訪問最大能到數(shù)組長度-1
public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; System.out.println(array[5]); } }
超過會報異常
2.遍歷數(shù)組
數(shù)組有3種打印方式
(1)for循環(huán)打印數(shù)組
public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } } }
(2)foreach打印數(shù)組
public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; for (int x:array) { System.out.print(x+" "); } } }
(3)toString打印數(shù)組
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; System.out.println(Arrays.toString(array));//使用toString方法需要導(dǎo)包,類似C語言中的頭文件 } }
運行結(jié)果:
3.修改數(shù)據(jù)內(nèi)容
1.直接傳變量
public class Test { public static void func(int x){ x = 10; System.out.println("x:"+x); } public static void main(String[] args) { int num = 0; func(num); System.out.println("num:"+num); } }
運行結(jié)果:
num的值沒有被修改為10,因為方法傳參的時候傳的是形參,形參相當于是實參的一份臨時拷貝,形參的修改不會影響到實參(相當于調(diào)用方法時創(chuàng)建的棧幀里有一個變量的值為0,然后被修改為10,方法調(diào)用結(jié)束,創(chuàng)建的棧幀銷毀,并無影響)
2.傳的是數(shù)組
import java.util.Arrays; public class Test { public static void func(int[] array){ array[0] = 10; } public static void main(String[] args) { int[] array = {1,2,3}; func(array); System.out.println(Arrays.toString(array)); } }
運行結(jié)果:
3.傳的數(shù)組返回的也是數(shù)組
import java.util.Arrays; public class Test { public static int[] func(int[] array){ array[0] = 10; array[2] = 30; return array; } public static void main(String[] args) { int[] array = {1,2,3}; func(array); System.out.println(Arrays.toString(array)); } }
運行結(jié)果:
三.有關(guān)數(shù)組方法的使用
1.toString
toString方法的作用是將數(shù)組的數(shù)據(jù)變成字符串類型數(shù)據(jù)
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5};//定義一個數(shù)組 String arrays = Arrays.toString(array);//用字符串類型接受方法的返回值 System.out.println(arrays); } }
運行結(jié)果:
模擬實現(xiàn)toString
public class Test { public static String toString(int[] array){//返回類型為字符串類型 String array1 = "[";//定義一個字符串類型數(shù)據(jù) for (int i = 0; i < array.length; i++) { array1+=array[i]; if(i!= array.length-1){ array1+=","; } } array1+="]"; return array1; } public static void main(String[] args) { int[] array = {1,2,3,4,5};//定義一個數(shù)組 String arrays = toString(array);//用字符串類型接收方法的返回值 System.out.println(arrays); } }
運行結(jié)果:
2. copyOf
第一個參數(shù)original
- 要復(fù)制的數(shù)組
第二個參數(shù)newLength
- 要返回的副本的長度
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5}; int[] newArray = new int[array.length];//新數(shù)組 newArray = Arrays.copyOf(array,array.length); System.out.println(Arrays.toString(newArray)); } }
運行結(jié)果:
模擬實現(xiàn)copyOf
import java.util.Arrays; public class Test { public static int[] copyOf(int[] array,int length){ int[] newArray = new int[array.length]; for (int i = 0; i < array.length; i++) {//循環(huán)賦值 newArray[i] = array[i]; } return newArray; } public static void main(String[] args) { int[] array = {1,2,3,4,5}; int[] newArray = copyOf(array, array.length); newArray[2] = 30;//將拷貝好的數(shù)組的第3個元素賦值為30,觀察該改變是否對原數(shù)組是否有影響 System.out.println("array:"+Arrays.toString(array)); System.out.println("newArray:"+Arrays.toString(newArray)); } }
運行結(jié)果:
四.查找數(shù)組中的元素
1.順序查
public class Test { public static int find(int[] array,int k){ for (int i = 0; i < array.length; i++) { if(k == array[i]){ return i;//找到了就返回下標 } } return -1;//找不到返回-1 } public static void main(String[] args) { int[] array = {1,2,3,0,7,8,9,4,5,6}; int ret = find(array,4); System.out.println(ret); } }
運行結(jié)果:
2.二分查找binarySearch
二分查找必須是有序數(shù)組
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7,8,9,10}; int ret = Arrays.binarySearch(array,4); System.out.println(ret); } }
運行結(jié)果:
模擬實現(xiàn)binarySearch
a
- 要搜索的數(shù)組
key
- 要搜索的值
public class Test { public static int binarySearch(int[] array,int k){ int left = 0; int right = array.length-1; while(left<=right){ int mid = (left+right)/2; if(array[mid]>k){//查找范圍左移 right = mid-1; }else if(array[mid]<k){//查找范圍右移 left = mid+1; }else{ return mid; } } return -1; } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7,8,9,10}; int ret = binarySearch(array,4); System.out.println(ret); }
五.數(shù)組排序
1.冒泡排序
import java.util.Arrays; public class Test { public static void bubbleSort(int[] array){ for (int i = 0; i < array.length-1; i++) { boolean flag = true; for (int j = 0; j < array.length-1-i; j++) { if(array[j]>array[j+1]){ int tmp = array[j]; array[j] = array[j+1]; array[j+1] = tmp; flag = false; } } if(flag == true){//已經(jīng)有序 break; } } } public static void main(String[] args) { int[] array = {1,2,3,6,5,0,4,8,7,9}; bubbleSort(array); System.out.println(Arrays.toString(array)); }
運行結(jié)果:
2.排序方法sort
import java.util.Arrays; public class Test { public static void main(String[] args) { int[] array = {1,2,3,6,5,0,4,8,7,9}; Arrays.sort(array); System.out.println(Arrays.toString(array)); } }
運行結(jié)果:
六.數(shù)組逆置
import java.util.Arrays; public class Test { public static void reverse(int[] array){ int head = 0; int tail = array.length-1; while(head<tail){ int tmp = array[head]; array[head] = array[tail]; array[tail] = tmp; head++;//后移 tail--;//前移 } } public static void main(String[] args) { int[] array = {1,2,3,4,5,6}; reverse(array); System.out.println(Arrays.toString(array)); }
運行結(jié)果:
七.二維數(shù)組的定義
二維數(shù)組同樣有三種定義方式
public class Test { public static void main(String[] args) { int[][] array1 = {{1,2,3},{4,5,6}}; int[][] array2 = new int[2][3]; int[][] array3 = new int[][]{{1,2,3},{4,5,6}}; }
八.二維數(shù)組的打印
Arrays包里面的toString方法是將數(shù)組中的元素轉(zhuǎn)換為字符串,用2個toString方法來打印二維數(shù)組時,第一個toString已經(jīng)將數(shù)組轉(zhuǎn)換為字符串,第二個toString是不能接收字符串的,所以不能用toString來打印二維數(shù)組
應(yīng)用deepToString來打印
import java.util.Arrays; public class Test { public static void main(String[] args) { int[][] array = {{1,2,3},{4,5,6}}; System.out.println(Arrays.deepToString(array)); }
運行結(jié)果:
到此這篇關(guān)于Java數(shù)組的定義與使用的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot實現(xiàn)yml里的自定義配置方法
這篇文章主要介紹了springboot實現(xiàn)yml里的自定義配置方法,主要介紹三種,字符串配置,數(shù)組配置和帶默認值的配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01Spring使用RestTemplate模擬form提交示例
本篇文章主要介紹了Spring使用RestTemplate模擬form提交示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03詳解JavaScript中的函數(shù)聲明和函數(shù)表達式
這篇文章主要介紹了詳解JavaScript中的函數(shù)聲明和函數(shù)表達式,是JS入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-08-08base64_encode和base64_decode的JAVA實現(xiàn)
Base64 編碼其實是將3個8位字節(jié)轉(zhuǎn)換為4個6位這4個六位字節(jié) 其實仍然是8位,只不過高兩位被設(shè)置為0. 當一個字節(jié)只有6位有效時,它的取值空間為0 到 2的6次方減1 即63,也就是說被轉(zhuǎn)換的Base64編碼的每一個編碼的取值空間為(0~63).需要的朋友可以參考下2016-04-04