一維數組格式及使用,堆,棧--學習筆記--11

一. 數組

存儲同一種數據類型多個變量元素
數組的定義格式:

  1. 數據類型[] 數組名;
  2. 數組類型 數組名[]
  3. 這兩種定義做完了,數組中沒有元素值
    Int[ ] a;定義一個int類型的數組a變量;
    Int a [ ];定義一個int類型的a數組變量;

數組必須先初始化,爲其分配內存空間併爲其分配內存空間
(1)動態初始化:初始化時只指定數組長度,由系統爲數組分配初始值
格式
數組類型[] 數組名=new 數據類型 [數組長度]
數組長度其實就是數組元素的個數
(2)靜態初始化:
格式:

數組類型[ ] 數組名=new 數據類型[] (元素1,元素2……)
舉例1.:int [ ]arr=new int[1,2,3]
定義了一個int類型數組,,這個數組可存放3個int 類型值,值分別爲1,2,3;
初始化時指定每個數組元素的初始值,由系統決定數組長度;
用數組名和編號的配合就可以獲取數組中的指定編號的元素,這個編號的專業名稱爲索引;
通過數組名訪問數據的格式是數組名[索引]索引就是每個元素編號,從0開始,最大是數組長度-1;

import java.util.Scanner;
public class One {
public static void main(String[] args) {
		int [] arr=new int[3];
		//int 數組中元素類型爲int
		//arr數組名稱
		//new爲數組分配內存空間
		///3:數組長度
		System.out.println(arr);//[I@15db9742地址值
	}
  }

二.堆,棧

1.棧:存放局部變量
數據用完就釋放
:存放所有new出來的東西
堆內存特點:
1.每一個new 出來的東西都有地址值;
2.每個變量都有默認值,byte,short,int,long 0
Float,double —0.0
Char —‘ \u0000’
Boolean— false
引用類型 —null
3.使用完就變成垃圾,但沒有立刻回收,會在垃圾回收器空閒時回收
局部變量:在方法定義中或者方法聲明上的變量都稱爲局部變量

int [] arr=new int[2];
		int [] arr2=new int[3];
		arr[1]=20;
		arr2[1]=30;
		arr2[0]=40;
		System.out.println(arr);//[I@15db9742地址值
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println("--------------------");
		System.out.println(arr);//[I@15db9742地址值
		System.out.println(arr2[0]);
		System.out.println(arr2[1]);
		System.out.println(arr2[2]);		
	}

沒有數字的即爲它在堆內存的地址值
在這裏插入圖片描述

2.數組的定義

定義第一個數組,定義完畢後,給數組元素賦值,賦值完畢後,再輸出數組名稱和元素;
定義第二個數組,定義完畢後,給數組元素賦值,賦值完畢後,再輸出數組名稱和元素;
定義第三個數組,把第一個數組的地址值賦值給他,通過第三個數組的名稱取把元素重複賦值,最後,再次輸出第一個數組數組名和元素。
(1)靜態初始化:

import java.util.Scanner;
public class One {
public static void main(String[] args) {
		int [] arr= {1,2,3};
		
		arr[1]=20;
		arr[2]=30;
		arr[0]=50;
		System.out.println(arr);//[I@15db9742地址值
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println("--------------------");
	}
  }

注意:
(1)ArrayIndexOutOfBoundsException:數組索引越界異常,訪問了不存在的索引;
(2)NullPointerException:空指針異常,數組已經不再指向堆內存了,而你還用數組名去訪問元素。
(3) 數組提供了一個屬性,用於獲取數組長度
格式:數組名.length

舉例1.數組遍歷

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	//定義數據
		int [ ] arr= {1,2,3,4,5};
		//獲取每一個元素
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println(arr[3]);
		System.out.println(arr[4]);
		System.out.println("-----------------------");
		for (int x=0;x<arr.lengt;x++) {
			System.out.println(arr[x]);
		}
	}
  }

舉例2.數組獲取最大值
(1)定義數組,進行靜態初始化;
(2)找參照物,數組中任意元素作爲參照物,默認最大值
遍歷其他元素
方法一:

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	//定義數據
		int [] arr= {1,2,3,4,5};
		int max=arr[0];
		for (int x=1;x<arr.length;x++) {
			if (arr[x]>max) {
				max=arr[x];
			}
		}
			System.out.println(max);
	}
  }

在這裏插入圖片描述
方法二:

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	int [] arr= {1,2,3,4,5};
	
	int max=getMax(arr);
	System.out.println(max);
}
	public static int getMax(int[] arr){
		int max=arr[0]	;
		for (int x=1;x<arr.length;x++) {
			if (arr[x]>max) {
				max=arr[x];
			}
		}
		return max;
		}
	}

舉例3.數組元素逆序

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	int [] arr= {12,23,32,48,56};
	System.out.println("逆序前");
	printArray(arr);
	reverse(arr);
	System.out.println("逆序後");
	printArray(arr);
	
}
		public static void reverse(int [] arr) {
			for(int x=0;x<arr.length/2;x++) {
				int temp=arr[x];
				arr[x]=arr[arr.length-1-x];
				arr[arr.length-1-x]=temp;
				}
		}
		//遍歷數組
		public static void printArray(int [] arr) {
			System.out.println("[");
			for(int x=0;x<arr.length;x++) {
				if(x==arr.length-1) {
					System.out.println(arr[x]+"]");
				}else {
					System.out.print(arr[x]+",");
			}
		}
		}
	}

在這裏插入圖片描述

舉例4.數組查表法,根據鍵盤錄入索引,查找對應星期

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	String[] strArray= {"1","2","3","4","5","6","7"};
	Scanner sc=new Scanner(System.in);
	System.out.println("請輸入一個數0-6");
	int index=sc.nextInt();
	System.out.println("你要查找的日期是"+strArray[index]);
}

在這裏插入圖片描述

舉例5.數組元素查找
需求:查找指定數據再數組中第一次出現的索引
定義一個數組,並靜態初始化
參數列表:兩個
寫一個功能實現。

import java.util.Scanner;
public class One {
public static void main(String[] args) {
	int [] arr= {12,23,34,45,67};
	int index=getIndex(arr,23);
	System.out.println("出現第一次索引爲"+index);
	}
		public static int getIndex(int [] arr,int value) {
			for(int x=0;x<arr.length;x++) {
				if (arr[x]==value) {
					return x;	
				}		
			}
			//假如我要查的數據數組中不存在,那就找不到,
			//找不到有對應的返回嗎
			//只要是判斷,就有可能是false
			//如果找不到數據,我們一般返回一個負數即可,而且返回是1
			return -1;	
		}
}

在這裏插入圖片描述
方法2.

public static void main(String[] args) {
	int [] arr= {12,23,34,45,67};
	int index=getIndex(arr,23);
	System.out.println("出現第一次索引爲"+index);
	}
		public static int getIndex(int [] arr,int value) {
			int index=-1;
			for(int x=0;x<arr.length;x++) {
				if (arr[x]==value) {
					index=x;
					break;
				}		
			}
			return index;
		}
發佈了24 篇原創文章 · 獲贊 4 · 訪問量 1760
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章