java數(shù)組基礎(chǔ)詳解
數(shù)組
博客園好像炸了,在維護(hù)中。
一. 數(shù)組概述
- 相同類型數(shù)據(jù)的有序集合
- 數(shù)組描述的是相同類型的若干個(gè)數(shù)據(jù)。按照一定的先后次序排列組合而成
- 每一個(gè)數(shù)據(jù)稱作一個(gè)數(shù)組元素,每個(gè)數(shù)組元素可以通過一個(gè)下標(biāo)來訪問它們
- 數(shù)組本身就是對象,數(shù)組對象本身是存在堆中的
- 一旦創(chuàng)建,大小不可改變,長度確定
二. 數(shù)組聲明和創(chuàng)建
1.首先必須聲明數(shù)組變量。才能在程序中使用數(shù)組
int[] nums;//主要用這樣的方式 int nums[];//這樣也行,不建議 nums = new int[10];//創(chuàng)建一個(gè)儲(chǔ)存10個(gè)數(shù)據(jù)的數(shù)組 int[] nums = new int[10];//也可以這樣寫,把聲明和創(chuàng)建放一起
2.數(shù)組的下標(biāo),或者說數(shù)組的索引是從[0] 開始的
- 當(dāng)一個(gè)位置沒有數(shù)據(jù)時(shí),會(huì)得到類型的默認(rèn)值,如 int 會(huì)得到 0,String 會(huì)得到 null 。
int[] nums = new int[10]; nums[0]=1; nums[1]=2; nums[2]=3; nums[3]=4; nums[4]=5; nums[5]=6; nums[6]=7; nums[7]=8; nums[8]=9; nums[9]=10;
3.可以用 arrays.length 獲取數(shù)組長度。數(shù)組的長度是確定的,確定之后不可變的。切記不要下標(biāo)越界
int[] nums = new int[10];
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
int sum = 0;//求和
for(int i = 0; i < nums.length; i++){
sum = sum + nums[i];
System.out.println(sum);
}

三. 內(nèi)存分析
1.JAVA內(nèi)存有:堆,棧,方法區(qū)····
- 堆:存放new的對象和數(shù)組??梢员凰械木€程共享,不會(huì)存放別的對象引用
- 棧:存放基本變量類型(包括這個(gè)類型的具體數(shù)值)。引用對象的變量(會(huì)存放這個(gè)引用在堆里的具體地址)

- 方法區(qū):可以被所有的線程共享。包含了所有的class和static變量
- ·····還有其他,后面學(xué)到再提
2.靜態(tài)初始化:創(chuàng)建+賦值
//如int個(gè)數(shù)組
int[] a = {1,2,3,4,5,6,7,8,9,10};
System.out.println(a[0]);
//也可以是引用類型
Man[] mans = {new Man(1,1),new Man(2,2)}
3.動(dòng)態(tài)初始化:前面其實(shí)就是動(dòng)態(tài)初始化,是分開寫的。沒有賦值的,為該類型的默認(rèn)初始化值
int[] a = new int[10]; a[0]=1; a[1]=2;
這里a[3] , a[4]····沒有賦值,那么就是int的默認(rèn)初始化值 0
4.下標(biāo)區(qū)間 [ 0 , length-1 ] 。下標(biāo)越界報(bào)錯(cuò):java.lang.ArrayIndexOutOfBoundsException
綜合舉例:

運(yùn)行結(jié)果:

四. 數(shù)組的使用
1.For-Each 循環(huán) (省掉了下標(biāo)的使用)
int[] nums = {1,2,3,4,5,6,7,8,9};
//常規(guī)for循環(huán)打印全部元素
for(int i = 0; i< nums.length; i++){
System.out.println(nums[i]);
}
//利用for-each循環(huán)
for(int num : nums){
System.out.println(num);
}
2.常規(guī) for 循環(huán)
3.數(shù)組作方法入?yún)?/h4>

4.數(shù)組作返回值。比如反轉(zhuǎn)數(shù)組里的元素

二維數(shù)組和冒泡排序
1.二維數(shù)組
//遍歷二維數(shù)組
public class Array001 {
public static void main(String[] args) {
//創(chuàng)建二維數(shù)組
int[][] a = {{1,2},{5,7},{9,6},{9,5,4},{6,5,4,9,1,2,3}};
//遍歷二維數(shù)組的外部數(shù)組
for(int i=0; i<a.length; i++) {
//j作為二維數(shù)組內(nèi)部數(shù)組的下標(biāo),長度是 a[i].length
for(int j=0; j<a[i].length;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
/*
* a[0][0] a[0][1]
* a[1][0] a[1][1]
* a[2][0] a[2][1]
* a[3][0] a[3][1] a[3][2]
* a[4][0] a[4][1] a[4][2] a[4][3] a[4][4] a[4][5] a[4][6]
*
*/
2. 冒泡排序
//冒泡排序
import java.util.Arrays;
public class Test001 {
public static void main(String[] args) {
//創(chuàng)建一個(gè)數(shù)組
int[] a = {12,45,2,6,48,23,9};
method(a);
System.out.println(Arrays.toString(a));
}
/* 12與45比較然后排序不變,45與2比較然后排序?yàn)?2,2,45,6····45與6比較然后排序12,2,6,45,48····以此類推,第一輪的結(jié)果就是12,2,6,45,23,9,48 */
//第二輪2,6,12,23,9,45,48
//第三輪···
//可以發(fā)現(xiàn)比較的輪數(shù)為數(shù)組長度a.length-1
private static void method(int[] a) {
//定義變量i,表示比較的輪數(shù)
for(int i =1; i<a.length; i++) {
for(int j = 0; j<a.length-1; j++) {
//比較相鄰元素的大小,并交換值
if( a[j]>a[j+1] ) {
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
}
總結(jié)
本篇文章的內(nèi)容就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的其他內(nèi)容!
相關(guān)文章
Spring?Boot?3.x?集成?Feign的詳細(xì)過程
本文闡述了如何在SpringBoot3.x中集成Feign,以實(shí)現(xiàn)微服務(wù)之間的調(diào)用,主要步驟包括:搭建chain-common服務(wù),創(chuàng)建chain-starter/chain-feign-starter服務(wù),集成Feign到chain-system和chain-iot-channel服務(wù),配置Feign,感興趣的朋友一起看看吧2024-09-09
Java 自定義動(dòng)態(tài)數(shù)組方式
這篇文章主要介紹了Java自定義動(dòng)態(tài)數(shù)組方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
使用Java和Redis實(shí)現(xiàn)高效的短信防轟炸方案
在當(dāng)今互聯(lián)網(wǎng)應(yīng)用中,短信驗(yàn)證碼已成為身份驗(yàn)證的重要手段,然而,這也帶來了"短信轟炸"的安全風(fēng)險(xiǎn)?-?惡意用戶利用程序自動(dòng)化發(fā)送大量短信請求,導(dǎo)致用戶被騷擾和企業(yè)短信成本激增,本文將詳細(xì)介紹如何使用Java和Redis實(shí)現(xiàn)高效的短信防轟炸解決方案,需要的朋友可以參考下2025-04-04
spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁面
這篇文章主要為大家介紹了spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁面展示的詳細(xì)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03

