陣列(是一種參考資料型別)
一,陣列定義?:它是基礎的線性儲存結構,也可以有效的實作一組變數的關聯
1.“陣列名稱.length”屬性,可以直接得到陣列的長度
2.陣列屬于參考資料型別,在代碼中需要進行記憶體的分配
3.動態初始化后會發現陣列中的每一個元素的內容都是其對應資料型別的默認值
4.靜態初始化:在陣列定義時就為其設定了具體的資料內容,這樣就避免了先開辟后賦值的重復操作
二、陣列參考傳遞分析?:在陣列使用時需要關鍵字new開辟堆記憶體空 間,而一塊堆記憶體空間可以被多個堆疊記憶體指向,自然也就能對它進行參考資料操作
注意:不能夠直接使用未開辟堆記憶體空間的陣列(因為一但使用就會出現空指向例外)
public class ArrayDemo{
public static void main(String args[]){
int data[] = new int {10,20,30}; //使用靜態初始化陣列
int temp[] = data; //這里用到的就是參考傳遞
temp[0] = 99; //修改原data陣列中的內容
for(int x = 0;x < data.length;x++){
System.out.print(data[x] + "、"); //輸出結果
}
}
}
程式結果:

三、foreach輸出?:他是一種加強型for回圈,使用foreach結構可以實作陣列資料的輸出
如下:
for(資料型別 變數 :陣列 | 集合){
//回圈體代碼,回圈的次數為陣列的長度
}
//范例:使用foreach結構輸出陣列內容
public class ArrayDemo{
public static void main(String args[]){
int data[] = new int [] {1,2,3,4,5,6,7,8,9,10};
/*下面就是foreach結構的輸出形式了*/
for(int temp : data){
System.out.print(temp + "、");
}
}
}
程式的執行結果:

四、二維陣列?:它是一種描述多行多列的陣列結構
它也有倆種初始化的方式,分別是動態初始化和靜態初始化(其實要區分動態和靜態,就看初始化時有沒有進行賦值操作,有的話就是靜態的)
1.動態初始化:資料型別 陣列名稱[][] = new 資料型別[行的個數][列的個數];
2.靜態初始化:資料型別 陣列名稱[][] = new 資料型別[][]{{值,值,值}{值,值,值}}
關于多維陣列::二維及其以上的都可以稱為多維陣列,但維數越高,復雜度也就越高,在開發的程序中建議盡量不要使用多維陣列
//范例:同樣的這里也將用foreach結構對二維陣列進行輸出
public class ArrayDemo{
public static void main(String argc[]){
int data[][] = new int[][]{
{1,2,3,4,5,6},{1,2,3,4,5},{6,7,8,9,10}};
for(int temp [] : data){ //外層回圈獲取每一行陣列
for(int num : temp){ //內層回圈獲取陣列內容
System.out.print(num + "、");
}吧
System.out.println(); //換行
}
}
程式執行結果:

五、陣列與方法:這里要講的是如何利用方法接收陣列和回傳陣列的操作
1.用方法接收一個陣列:事先開辟好一個陣列,然后通過參考傳遞,指向該陣列的堆空間,這樣就達到了接收的目的了
2.用方法回傳一個陣列:和接收差不多,只不過接收時對方法的型別沒有強制的要求,回傳時則必須要要求方法的型別與接收陣列的型別一致
注:因為用的是參考傳遞只要有一個修改了堆空間里內容,其它的也會跟著改變,因為歸根結底指向的都是同一塊堆空間,
//范例:使用方法接收陣列參考
class ArrayUtil{
public static void printArray(int temp[]){
for(int x = 0;x < temp.length;x++){
System.out.print(temp[x] + "、");
}
System.out.println();
}
}
public class ArrayDemo{
public static void main(String argc[]){
int data[] = new int[] {32,12,1,245,2,6,12,34,56};
int dataB[] = new int[] {11,22,33,44,55,66,44,77,88,99};
java.util.Arrays.sort(data);//可以自動排序,按照從小到大的順序
System.arraycopy(data,3,dataB,4,5);//陣列復制
ArrayUtil.printArray(data);
ArrayUtil.printArray(dataB);//復制后會覆寫原陣列中的內容
}
}
程式執行結果:

七、物件陣列?:除了基本資料型別的資料定義為陣列外,參考資料型別也可以定義陣列,像這樣的就是物件陣列了
1.物件陣列動態初始化:類 物件名稱[] = new 類 [長度];
2.物件陣列靜態初始化:類 物件名稱[] = new 類 [實體化物件,實體化物件,…];
類的定義和以前的差不多,只不過在實體化物件的時候用了陣列的形式
//范例使用動態初始化定義物件陣列
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getInfo(){
return "姓名:" + this.name + "、年齡:" + this.age;
}
}
public class ArrayDemo{
public static void main(String argc[]){
Person per [] = new Person[3]; //動態初始化一個物件陣列
per[0] = new Person("張三",20);
per[1] = new Person("李四",21);
per[2] = new Person("王五",22);
for(int x = 0;x < per.length;x++){
System.out.println(per[x].getInfo());
}
}
}
程式執行結果:

八、類關聯結構?:這里要說的是一個類可以關聯其他類,根據參考關系依據某一個類物件,可以獲取其相應的資訊
詳解:用于描述連個類之間的參考關系,在主類操作時首先根據兩個類的關系設定參考關系,隨后就可以根據參考關系依據某一個類物件獲取相應的關系(這里有一點象父類與子類的繼承的意思在里面,但兩者的操作是不一樣的)
九、自身關聯結構?:可以利用自身關聯的形式描述人員后代的關系
詳解:在進行類關聯描述的程序中,除了可以關聯其他類之外,也可以實作自身的關聯操作,也就是說可以利用自身關聯的形式描述人員后代的關系
十、合成設計模式?:將物件的參考關聯進一步擴展就可以實作更多的結構描述,通過不同的類實作子結構定義,隨后將其在一個父結構中整合
詳解:下面會寫一個偽代碼的合成設計模式組成結構,需要注意的是Java中提供的參考資料型別不僅僅是描述的記憶體操作形式,更多的是包含了抽象與關聯的設計思想
范例:偽代碼塊描述合成設計思想
class 計算機{
private 顯示幕 物件陣列[];
private 主機 物件;
}
class 顯示幕{}
class 主機{
private 主板 物件;
private 滑鼠 物件;
private 鍵盤 物件;
}
class 主板{
private 記憶體 物件陣列[];
private CPU 物件陣列[];
private 顯卡 物件;
private 硬碟 物件陣列[];
}
/*以下都屬于主機的子結構*/
class 鍵盤{}
class 滑鼠{}
class 記憶體{}
/*以下都屬于主板的子結構*/
class cpu{}
class 顯卡{}
class 硬碟{}
/*而以上不管是顯示幕還是主機都屬于計算機的子結構,多個類之間互相關聯包含,象這樣的就是合成設計的模式*/
十一、資料表與簡單Java類映射轉化?:這里分析的是資料表與簡單java類之間的轉化,簡當操作就是首先實體化各個物件資訊,隨后根據關聯關系設定資料間的參考配置,在資料配置完成后就可以依據物件間的參考關系獲取物件的相應資訊,
//范例實作一對多的資料結構轉化
/*描述部門*/
class Dept{
private int deptno;//部門編號
private String dname;//部門名稱
private String loc;//部門位置
private Emp emps[];//用來保存多個雇員的資訊
public Dept(int deptno,String dname,String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public void setEmps(Emp[] emps){
this.emps = emps;
}
public Emp[] getEmps(){
return this.emps;
}
public String getInfo(){
return "【部門資訊】部門編號 = " + this.deptno + "、部門名稱 = " + this.dname + "、部門位置 = " + this.loc;
}
}
/*描述員工*/
class Emp{
private long empno; //員工編號
private String ename; //員工姓名
private String job; //職位
private double sal;//工資
private double comm;//傭金
private Dept dept;//部門
private Emp mgr;//領導
public Emp(long empno,String ename,String job,double sal,double comm){
this.empno = empno;
this.ename = ename;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public String getInfo(){
return "【員工資訊】編號 = " + this.empno + "、姓名 = " + this.ename + "、職位 = " + this.job + "、 工資 = " + this.sal + "、傭金 = " + this.comm;
}
public void setDept(Dept dept){
this.dept = dept;
}
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Dept getDept(){
return this.dept;
}
public Emp getMgr(){
return this.mgr;
}
}
/*設定資料并根據參考關系獲取資料內容*/
public class JavaDemo{
public static void main(String args[]){
Dept dept = new Dept(10,"MLDN教學部","北京");
Emp empA = new Emp(7369L,"SMITH","CLERK",800.00,0.0);
Emp empB = new Emp(7370L,"FORD","MANAGER",900.00,0.0);
Emp empC = new Emp(7371L,"KING","PRESIDENT",1000.00,0.0);
//根據資料表定義的資料關聯關系,利用參考進行物件間的聯系
empA.setDept(dept);
empB.setDept(dept);
empC.setDept(dept);
empA.setMgr(empB);
empB.setMgr(empC);
dept.setEmps(new Emp[] {empA,empB,empC});
//第二部:根據關系獲取資料
System.out.println(dept.getInfo());
for(int x = 0;x < dept.getEmps().length;x++){
System.out.println("\t|- " + dept.getEmps()[x].getInfo());
if(dept.getEmps()[x].getMgr() != null){
System.out.println("\t\t| - " + dept.getEmps()[x].getMgr().getInfo());
}
}
System.out.println("-------------------------");
System.out.println(empB.getDept().getInfo());
System.out.println(empB.getMgr().getInfo());
}
}
程式執行結果:

詳解:現代專案的開發中資料庫是核心的組成部分,幾乎所有的專案代碼都是圍繞著資料表的業務邏輯結構展開的,那么分析資料表與簡單java類之間的轉化也是很重要的
十二、小結
1.陣列是一組相關資料變數的線性集合,利用陣列可以方便地實作一組變數的關聯,但陣列的缺點就在于長度不可以改變
2.陣列的訪問需要通過“陣列名稱【索引】”的形式,如果超出索引范圍就會報例外,
3.陣列的長度可以用“陣列名稱.length”的形式動態獲取,
4. 陣列采用動態初始化時,陣列中的每一個元素的內容都是其對應資料型別的默認值,
5.如果使用了未開辟堆記憶體空間的陣列則會出現空指向例外,
6.在JDK中使用System.arraycopy()和java.util.Arrays.sort兩個方法可以實作陣列的復制和排序
7.JDK1.5之后追加了可變引數,這樣可以使得方法可以任意接收多個引數,不過需注意的是接收的引數使用陣列形式處理,
8.物件陣列可以實作一組物件的管理,這樣在開發中就可以描述多個實體,
9.簡單java類可以實作資料表結構的映射轉換,通過面向物件的關聯形式可以描述資料表的存盤結構
小小溫馨提示:碼字不易,希望能一鍵三連哦🤞🤞🤞
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261488.html
標籤:java
上一篇:【藍橋杯省賽JavaB組真題詳解】湊算式(2016)
下一篇:c++回傳資料失敗
