Java的知识点16——数组概述和特点、数组声明、初始化、数组的遍历、for-each循环、数组的拷贝
數(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):
? ? ??1. 長(zhǎng)度是確定的。數(shù)組一旦被創(chuàng)建,它的大小就是不可以改變的。
? ? ??2. 其元素必須是相同類型,不允許出現(xiàn)混合類型。
? ? ??3. 數(shù)組類型可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。
? ? ? ?數(shù)組變量屬引用類型,數(shù)組也可以看成是對(duì)象,數(shù)組中的每個(gè)元素相當(dāng)于該對(duì)象的成員變量。數(shù)組本身就是對(duì)象,Java中對(duì)象是在堆中的,因此數(shù)組無(wú)論保存原始類型還是其他對(duì)象類型,數(shù)組對(duì)象本身是在堆中存儲(chǔ)的。?
數(shù)組聲明
數(shù)組的聲明方式(以一維數(shù)組為例)? ??type[] arr_name;?//(推薦使用這種方式)
注:1. 聲明的時(shí)候并沒(méi)有實(shí)例化任何對(duì)象,只有在實(shí)例化數(shù)組對(duì)象時(shí),JVM才分配空間,這時(shí)才與長(zhǎng)度有關(guān)。
? ? ? ?2. 聲明一個(gè)數(shù)組的時(shí)候并沒(méi)有數(shù)組真正被創(chuàng)建。
? ? ? ?3. 構(gòu)造一個(gè)數(shù)組,必須指定長(zhǎng)度。
創(chuàng)建基本類型一維數(shù)組
package cn.dym07;public class Test {public static void main(String[] args) {int [] s=null; //聲明數(shù)組s=new int[10]; //給數(shù)組分配空間for(int i=0;i<10;i++) {s[i]=2*i+1;System.out.println(s[i]);}} }? ? ? ? ? ? ? ?
創(chuàng)建引用類型一維數(shù)組
package cn.dym07;class Man{private int age;private int id;public Man(int id,int age) {super();this.age=age;this.id=id;} }public class AppMain {public static void main(String [] args) {Man[] mans; //聲明引用類型的數(shù)組mans=new Man[10]; //給引用類型數(shù)組分配空間Man m1=new Man(1,11);Man m2=new Man(2,22);mans[0]=m1;//給引用類型數(shù)組元素賦值mans[0]=m2;} }? ? ? ? ? ? ? ??
初始化
?數(shù)組的初始化方式總共有三種:靜態(tài)初始化、動(dòng)態(tài)初始化、默認(rèn)初始化。?
1. 靜態(tài)初始化
? ? ??除了用new關(guān)鍵字來(lái)產(chǎn)生數(shù)組以外,還可以直接在定義數(shù)組的同時(shí)就為數(shù)組元素分配空間并賦值。
? ? ? 靜態(tài)初始化數(shù)組例子:int[]?a?=?{?1,?2,?3?};//?靜態(tài)初始化基本類型數(shù)組;
? ? ? ? ? ? ? ?Man[]?mans?=?{?new?Man(1,?1),?new?Man(2,?2)?};//?靜態(tài)初始化引用類型數(shù)組;
2.動(dòng)態(tài)初始化
? ? ??數(shù)組定義與為數(shù)組元素分配空間并賦值的操作分開進(jìn)行。
? ? ??動(dòng)態(tài)初始化數(shù)組例子:int[]?a1?=?new?int[2];//動(dòng)態(tài)初始化數(shù)組,先分配空間;
? ? ? ? ? ?a1[0]=1;//給數(shù)組元素賦值;
? ? ? ? ? ?a1[1]=2;//給數(shù)組元素賦值;
3.數(shù)組的默認(rèn)初始化
? ? ? 數(shù)組是引用類型,它的元素相當(dāng)于類的實(shí)例變量,因此數(shù)組一經(jīng)分配空間,其中的每個(gè)元素也被按照實(shí)例變量同樣的方式被隱式初始化。
? ? ? 數(shù)組的默認(rèn)初始化例子:?int?a2[]?=?new?int[2];?//?默認(rèn)值:0,0
? ? ? ? ? ? ? ? ?boolean[]?b?=?new?boolean[2];?//?默認(rèn)值:false,false
? ? ? ? ? ? ? ? ?String[]?s?=?new?String[2];?//?默認(rèn)值:null,?null
數(shù)組的遍歷
數(shù)組元素下標(biāo)的合法區(qū)間:[0, length-1]。
可以通過(guò)下標(biāo)來(lái)遍歷數(shù)組中的元素,遍歷時(shí)可以讀取元素的值或者修改元素的值。
?使用循環(huán)遍歷初始化和讀取數(shù)組
package cn.dym07;public class Test01 {public static void main(String [] args) {int [] a=new int[4];//初始化數(shù)組元素的值for(int i=0;i<a.length;i++) {a[i]=100*i;}//讀取數(shù)組元素的值for(int i=0;i<a.length;i++) {System.out.println(a[i]);}} }for-each循環(huán)
?增強(qiáng)for循環(huán)for-each專門用于讀取數(shù)組或集合中所有的元素,即對(duì)數(shù)組進(jìn)行遍歷。
增強(qiáng)for循環(huán)
package cn.dym07;public class Test02 {public static void main(String [] args) {String [] ss= {"aaa","bbb","ccc","ddd"};for(String temp:ss) {System.out.println(temp);}} }注:1. for-each增強(qiáng)for循環(huán)在遍歷數(shù)組過(guò)程中不能修改數(shù)組中某元素的值。
? ? ? ?2. for-each僅適用于遍歷,不涉及有關(guān)索引(下標(biāo))的操作。
數(shù)組的拷貝
? ? static void arraycopy(object src,int srcpos,object dest, int destpos,int length)
數(shù)組拷貝
package cn.dym07;public class Test03 {public static void main(String[] args) {String [] s= {"阿里巴巴","京東","百度","搜狐","網(wǎng)易","百度"};String [] sBak=new String[6];System.arraycopy(s, 0, sBak, 0, s.length);for(String ss:sBak) {System.out.print(ss+"\t");}} }總結(jié)
以上是生活随笔為你收集整理的Java的知识点16——数组概述和特点、数组声明、初始化、数组的遍历、for-each循环、数组的拷贝的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java的知识点15——String基础
- 下一篇: java的知识点17——java.uti