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ù)組有動(dòng)態(tài)初始化和靜態(tài)初始化兩種
動(dòng)態(tài)初始化:在創(chuàng)建數(shù)組時(shí),只定義數(shù)組中元素的個(gè)數(shù),并未給里面的元素進(jìn)行賦值
例如:
int [] array = new int [ 10 ];
靜態(tài)初始化:在創(chuàng)建數(shù)組時(shí)不定義數(shù)據(jù)元素個(gè)數(shù),而直接將數(shù)組里的數(shù)據(jù)內(nèi)容進(jìn)行賦值,編譯器會(huì)自己判定數(shù)組有幾個(gè)元素, 后面的數(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 };
當(dāng)數(shù)組中的元素為動(dòng)態(tài)初始化時(shí),會(huì)有對應(yīng)的默認(rèn)值

二.數(shù)組的使用
1.訪問數(shù)組
通過數(shù)組的下標(biāo)進(jìn)行訪問,數(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ù)組的下標(biāo)是從0開始的,所以數(shù)組用下標(biāo)訪問最大能到數(shù)組長度-1
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(array[5]);
}
}超過會(huì)報(bào)異常

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語言中的頭文件
}
}運(yùn)行結(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);
}
}運(yùn)行結(jié)果:

num的值沒有被修改為10,因?yàn)榉椒▊鲄⒌臅r(shí)候傳的是形參,形參相當(dāng)于是實(shí)參的一份臨時(shí)拷貝,形參的修改不會(huì)影響到實(shí)參(相當(dāng)于調(diào)用方法時(shí)創(chuàng)建的棧幀里有一個(gè)變量的值為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));
}
}運(yùn)行結(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));
}
}運(yùn)行結(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};//定義一個(gè)數(shù)組
String arrays = Arrays.toString(array);//用字符串類型接受方法的返回值
System.out.println(arrays);
}
}運(yùn)行結(jié)果:

模擬實(shí)現(xiàn)toString
public class Test {
public static String toString(int[] array){//返回類型為字符串類型
String array1 = "[";//定義一個(gè)字符串類型數(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};//定義一個(gè)數(shù)組
String arrays = toString(array);//用字符串類型接收方法的返回值
System.out.println(arrays);
}
}運(yùn)行結(jié)果:

2. copyOf

第一個(gè)參數(shù)original- 要復(fù)制的數(shù)組
第二個(gè)參數(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));
}
}運(yùn)行結(jié)果:

模擬實(shí)現(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個(gè)元素賦值為30,觀察該改變是否對原數(shù)組是否有影響
System.out.println("array:"+Arrays.toString(array));
System.out.println("newArray:"+Arrays.toString(newArray));
}
}運(yùn)行結(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;//找到了就返回下標(biāo)
}
}
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);
}
}運(yùn)行結(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);
}
}運(yùn)行結(jié)果:

模擬實(shí)現(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));
}運(yùn)行結(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));
}
}運(yùn)行結(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));
}運(yùn)行結(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個(gè)toString方法來打印二維數(shù)組時(shí),第一個(gè)toString已經(jīng)將數(shù)組轉(zhuǎn)換為字符串,第二個(gè)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));
}運(yùn)行結(jié)果:

到此這篇關(guān)于Java數(shù)組的定義與使用的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot實(shí)現(xiàn)yml里的自定義配置方法
這篇文章主要介紹了springboot實(shí)現(xiàn)yml里的自定義配置方法,主要介紹三種,字符串配置,數(shù)組配置和帶默認(rèn)值的配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
java實(shí)現(xiàn)釘釘機(jī)器人消息推送的示例代碼
這篇文章主要介紹了java實(shí)現(xiàn)釘釘機(jī)器人消息推送的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
SpringBoot 鉤子接口的實(shí)現(xiàn)代碼
本文主要介紹了SpringBoot 鉤子接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
Spring使用RestTemplate模擬form提交示例
本篇文章主要介紹了Spring使用RestTemplate模擬form提交示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式
這篇文章主要介紹了詳解JavaScript中的函數(shù)聲明和函數(shù)表達(dá)式,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08
SpringBoot的jar包如何啟動(dòng)的實(shí)現(xiàn)
本文主要介紹了SpringBoot的jar包如何啟動(dòng)的實(shí)現(xiàn),文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
base64_encode和base64_decode的JAVA實(shí)現(xiàn)
Base64 編碼其實(shí)是將3個(gè)8位字節(jié)轉(zhuǎn)換為4個(gè)6位這4個(gè)六位字節(jié) 其實(shí)仍然是8位,只不過高兩位被設(shè)置為0. 當(dāng)一個(gè)字節(jié)只有6位有效時(shí),它的取值空間為0 到 2的6次方減1 即63,也就是說被轉(zhuǎn)換的Base64編碼的每一個(gè)編碼的取值空間為(0~63).需要的朋友可以參考下2016-04-04

