Java零基礎(chǔ)入門(mén)數(shù)組
認(rèn)識(shí)數(shù)組
數(shù)組的定義
數(shù)組是相同類型數(shù)據(jù)的有序集合。數(shù)組描述的是相同類型的若干個(gè)數(shù)據(jù),按照一定的先后次序排列組合而成。其中,每一個(gè)數(shù)據(jù)稱作一個(gè)元素,每個(gè)元素可以通過(guò)一個(gè)索引(下標(biāo))來(lái)訪問(wèn)它們。
數(shù)組的四個(gè)基本特點(diǎn)
- 長(zhǎng)度是確定的。數(shù)組一旦被創(chuàng)建,它的大小就是不可以改變的。
- 其元素的類型必須是相同類型,不允許出現(xiàn)混合類型。
- 數(shù)組類型可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。
- 數(shù)組有索引的:索引從0開(kāi)始,到 數(shù)組
.length-1結(jié)束 - 數(shù)組變量屬于引用類型,數(shù)組也是對(duì)象。
PS:數(shù)組變量屬于引用類型,數(shù)組也是對(duì)象,數(shù)組中的每個(gè)元素相當(dāng)于該對(duì)象的成員變量。數(shù)組本身就是對(duì)象,Java中對(duì)象是在堆中的,因此數(shù)組無(wú)論保存原始類型還是其他對(duì)象類型,數(shù)組對(duì)象本身是在堆中存儲(chǔ)的。

數(shù)組下標(biāo)從0開(kāi)始
arr[0] == 12
arr[1] == 6
arr[2] == 27
…
arr[5] == 43
數(shù)組的初始化
數(shù)組的初始化方式總共有三種:默認(rèn)初始化、靜態(tài)初始化、動(dòng)態(tài)初始化。
默認(rèn)初始化
數(shù)組是引用類型,它的元素相當(dāng)于類的實(shí)例變量,因此數(shù)組一經(jīng)分配空間,其中的每個(gè)元素也被按照實(shí)例變量同樣的方式被隱式初始化。
int[] arr = new int[3]; //數(shù)組有默認(rèn)的初始化值
基本數(shù)據(jù)類型數(shù)組的默認(rèn)值:
byte[] : 0
short[] : 0
cahr[] : ‘\u0000’
int[] : 0
long[] : 0
float[] : 0.0
double[] : 0.0
boolean[] : false
引用數(shù)據(jù)類型數(shù)組的默認(rèn)值:null
靜態(tài)初始化
除了用new關(guān)鍵字來(lái)產(chǎn)生數(shù)組以外,還可以直接在定義數(shù)組的同時(shí)就為數(shù)組元素分配空間并賦值。
int[] arr = {12,23,45};
int[] arr = new int[]{12,23,45};
動(dòng)態(tài)初始化
數(shù)組定義與為數(shù)組元素分配空間并賦值的操作分開(kāi)進(jìn)行。
int[] arr ; arr = new int[3] arr[0] = 12; arr[1] = 23; arr[2] = 45;
數(shù)組有關(guān)的問(wèn)題
數(shù)組的遍歷
兩種方法
public class TestCode04 {
public static void main(String[] args) {
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int[] arr2 = {5, 4, 3, 2, 1};
//方式1,使用普通for循環(huán)
//arr1.length獲取數(shù)組長(zhǎng)度的方法
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
System.out.println();
//方式2,使用增強(qiáng)for循環(huán)
for (int a : arr2) {
System.out.print(a + " ");
}
}
}
求最值問(wèn)題
問(wèn)題:給定一個(gè)數(shù)組int[] arr = {3,5,6,17,26,9,0,7}; ,求出數(shù)組中最大的數(shù)
public class TestCode05 {
public static void main(String[] args) {
int[] arr={3,5,6,17,26,9,0,7};
int max=arr[0];//假設(shè)最大元素為數(shù)組arr[0]位置上的數(shù)
//然后依次向后比較
for(int i=1;i<arr.length;i++){
//因?yàn)閙ax=arr[0];可以從arr[1]位置開(kāi)始比較
if(arr[i]>max){
max=arr[i];
}
}
System.out.println(max);
}
}
查詢子元素
查詢指定位置元素
給定一個(gè)數(shù)組,查詢索引位置為2上的元素
public class TestCode06 {
public static void main(String[] args) {
int[] arr={3,5,6,17,26,9,0,7};
//直接輸出arr[2];
System.out.println(arr[2]);
//輸出-->6
}
}
上面代碼體現(xiàn)了數(shù)組的一個(gè)優(yōu)點(diǎn):在按照位置查詢的時(shí)候,直接一步到位,效率非常高
查詢指定元素的位置–>找出元素對(duì)應(yīng)的索引
public class TestCode07{
public static void main(String[] args){
//查詢指定元素的位置-->找出元素對(duì)應(yīng)的索引
//給定一個(gè)數(shù)組:
int[] arr = {12,34,56,7,3,56};
// 0 1 2 3 4 5
//功能:查詢?cè)?2對(duì)應(yīng)的索引:
int index = -1; //這個(gè)初始值只要不是數(shù)組的索引即可
for(int i=0;i<arr.length;i++){
if(arr[i]==12){
index = i;//只要找到了元素,那么index就變成為i
break;//只要找到這個(gè)元素,循環(huán)就停止
}
}
if(index!=-1){
System.out.println("元素對(duì)應(yīng)的索引:"+index);
}else{//index==-1
System.out.println("查無(wú)此數(shù)!");
}
}
}
Arrays工具類
為了方便我們對(duì)數(shù)組進(jìn)行操作,系統(tǒng)提供一個(gè)類Arrays,我們將它當(dāng)做工具類來(lái)使用。
下面通過(guò)代碼演示Arrays類中常用的方法:
Arrays.toString(arr);//對(duì)數(shù)組進(jìn)行遍歷查看,返回的是一個(gè)字符串
Arrays.sort(arr);//對(duì)數(shù)組進(jìn)行排序 -->升序
Arrays.copyOf(arr,index);//對(duì)數(shù)組的復(fù)制
Arrays.copyOfRange(arr,startindex,endindex);//區(qū)間復(fù)制
Arrays.equals(arr1,arr2);//比較兩個(gè)數(shù)組的值是否一樣
Arrays.fill(arr,1);//數(shù)組填充
import java.util.Arrays;
public class TestCode08{
public static void main(String[] args){
//給定一個(gè)數(shù)組:
int[] arr = {1,3,7,2,4,8};
//toString:對(duì)數(shù)組進(jìn)行遍歷查看的,返回的是一個(gè)字符串
System.out.println(Arrays.toString(arr));
//binarySearch:二分法查找:找出指定數(shù)組中的指定元素對(duì)應(yīng)的索引:
//這個(gè)方法的使用前提:一定要查看的是一個(gè)有序的數(shù)組:
//sort:排序 -->升序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr,4));
int[] arr2 = {1,3,7,2,4,8};
//copyOf:完成數(shù)組的復(fù)制:
int[] newArr = Arrays.copyOf(arr2,4);
System.out.println(Arrays.toString(newArr));
//copyOfRange:區(qū)間復(fù)制:
int[] newArr2 = Arrays.copyOfRange(arr2,1,4);//[1,4)-->1,2,3位置
System.out.println(Arrays.toString(newArr2));
//equals:比較兩個(gè)數(shù)組的值是否一樣:
int[] arr3 = {1,3,7,2,4,8};
int[] arr4 = {1,3,7,2,4,8};
System.out.println(Arrays.equals(arr3,arr4));//true
System.out.println(arr3==arr4);//false ==比較左右兩側(cè)的值是否相等,比較的是左右的地址值,返回結(jié)果一定是false
//fill:數(shù)組的填充:
int[] arr5 = {1,3,7,2,4,8};
Arrays.fill(arr5,10);
System.out.println(Arrays.toString(arr5));
}
}
二維數(shù)組
本質(zhì)上全部都是一維數(shù)組
二維數(shù)組初始方式
- 靜態(tài)初始化
int[][] arr = {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
int[][] arr =new int[][] {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
- 動(dòng)態(tài)初始化
int[][] arr = new int[3][]; //本質(zhì)上定義了一維數(shù)組長(zhǎng)度為3,每個(gè)“格子”中放入的是一個(gè)數(shù)組
arr[0] = new int[]{1,2};
arr[1] = new int[]{3,4,5,6};
arr[2] = new int[]{34,45,56};
- 默認(rèn)初始化
數(shù)組是引用類型,它的元素相當(dāng)于類的實(shí)例變量,因此數(shù)組一經(jīng)分配空間,其中的每個(gè)元素也被按照實(shí)例變量同樣的方式被隱式初始化。
int[][] arr=new int[3][3];//定義一個(gè)3*3的二維數(shù)組,默認(rèn)值為0
二維數(shù)組的遍歷
兩個(gè)for循環(huán)
for (int i = 0; i < arr.length; i++) {
for (int j = 0; i < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();//換行
}
}
到此這篇關(guān)于Java零基礎(chǔ)入門(mén)數(shù)組的文章就介紹到這了,更多相關(guān)Java 數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Eclipse開(kāi)發(fā)JavaWeb項(xiàng)目配置Tomcat的方法步驟
本文主要介紹了Eclipse開(kāi)發(fā)JavaWeb項(xiàng)目配置Tomcat的方法步驟,首先介紹eclipse開(kāi)發(fā)JavaWeb項(xiàng)目需要配置的相關(guān)環(huán)境,使用tomcat軟件在本地搭建服務(wù)器,然后再在eclipse環(huán)境下配置tomcat,感興趣的可以了解一下2021-08-08
SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn)
這篇文章主要介紹了SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
java如何把逗號(hào)分隔的String字符串轉(zhuǎn)int集合
這篇文章主要介紹了java實(shí)現(xiàn)把逗號(hào)分隔的String字符串轉(zhuǎn)int集合,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Springboot中Instant時(shí)間傳參及序列化詳解
這篇文章主要介紹了Springboot中Instant時(shí)間傳參及序列化詳解,Instant是Java8引入的一個(gè)精度極高的時(shí)間類型,可以精確到納秒,但實(shí)際使用的時(shí)候不需要這么高的精確度,通常到毫秒就可以了,需要的朋友可以參考下2023-11-11
SpringMVC日期類型接收空值異常問(wèn)題解決方法
這篇文章主要介紹了SpringMVC日期類型接收空值異常問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Java數(shù)據(jù)結(jié)構(gòu)之散列表詳解
散列表(Hash table,也叫哈希表),是根據(jù)關(guān)鍵碼值(Key value)而直接進(jìn)行訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)。本文將為大家具體介紹一下散列表的原理及其代碼實(shí)現(xiàn)2022-01-01
elasticsearch通過(guò)guice注入Node組裝啟動(dòng)過(guò)程
這篇文章主要為大家介紹了?elasticsearch通過(guò)guice注入Node組裝啟動(dòng)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
SpringBoot如何根據(jù)目錄路徑生成接口的url路徑
這篇文章主要介紹了SpringBoot如何根據(jù)目錄路徑生成接口的url路徑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

