java學習--基礎知識第四天--筆記

今日內容
隨機數Random類
一維數組
二維數組(二維數組的初始化、遍歷)

Random類
做用:用來產生隨機數

使用步驟:
(1)導包
import java.util.Random;
(2)建立對象
Random r = new Random();
(3)調用方法產生隨機數
int num = r.nextInt(100);// 產生隨機整數,範圍在[0,100),0~100之間,可是不包括100.

需求:如何產生1~100之間的隨機數?
int num = r.nextInt(100)+1;
如何產生0~100之間的隨機數?
int num = r.nextInt(100+1);
如何產生n~100之間的隨機數?
int num = r.nextInt(100-n)+n;java


數組
爲何須要數組?
原來學習的變量,也是一個容器,可是它只能存儲一個數據,若是有多個數據,這時就須要定義多個變量,可是變量太多就不方便,這時就須要數組。
數組是能夠存儲多個同一數據類型數據的容器。

定義格式:
數據類型[] 數組名;
int[] arr;

數據類型 數組名[];
int arr[];

數組的特色:
(1)數組是能夠存儲多個"同一數據類型"數據的容器,若是是能夠轉換爲該類型的數據也是能夠往裏面存儲的。
(2)數組一經定義長度就固定
(3)數組既能夠存儲基本數據類型的數據,也能夠存儲引用數據類型的數據
(4)數組有整數索引(編號、角標、下標),從0開始的,最大索引爲數組長度-1

數組的初始化
動態初始化:給定數組的長度,由系統賦於默認初始化值
格式:
數據類型[] 數組名 = new 數據類型[長度];
int[] arr = new int[5];

靜態初始化:給定元素值,由系統計算數組的長度
格式:
數據類型[] 數組名 = new 數據類型[]{元素1,元素2,...};
int[] arr = new int[]{1,2,3};

簡化格式:
數據類型[] 數組名 = {元素1,元素2,...};
int[] arr = {1,2,3};



數組元素的訪問
格式:
數組名[索引]

獲取
int num = 數組名[索引];
System.out.println(數組名[索引]);
賦值
數組名[索引] = 值;// arr[0] = 100;

注意:數組直接打印都是看到內存地址值,不能看到數組中存儲的元素,除了char[]以外

Java中的內存分配
棧:方法進棧,局部變量隨着方法進入棧,先進後出
堆:一切new出來的東西,數組,對象

//後面的暫時不學
方法區(第五天的方法中會學習)
本地方法區(畢業班會學習)
寄存器(Java不學習)

數組元素的默認初始值
基本數據類型
整型(默認初始值都是0)
byte short int long
浮點型(默認初始值都是0.0)
float double
字符型(默認初始值爲'\u0000')
char
布爾型(默認初始值爲false)
boolean
引用數據類型(默認初始值都是null)

數組的兩個小問題
索引越界異常:ArrayIndexOutOfBoundsException
發生的緣由:由於數組的索引的範圍在0~數組的長度-1,若是訪問了這個範圍以外的索引,就會發生該異常
空指針異常:NullPointerException
發生的緣由:數組名再也不記錄任何數組的內存地址,而後還想經過數組名去訪問該數組對應的那片空間

數組的常見操做
遍歷(正向和反向遍歷)、求最值(最大值和最小值)、反轉、排序(冒泡排序、選擇排序)

遍歷(正向和反向遍歷)
屬性:length

int[] arr = {1,2,3,4};
for(int i=0;i<arr.length;i++){// 0~長度-1
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}

求最值(最大值和最小值)
int max=arr[0];
if(max<arr[i]){
max=arr[i];
}

int min=arr[i];
if(min>arr[i]){
min=arr[i];
}

反轉:
for(int start=0,end=arr.length-1;start<end;start++,end--){
int temp =arr[start];
arr[start]=arr[end];
arr[end]=temp;
}

查找:
for(int i=0;i<arr.length;i++){
if(number==arr[i]){
System.out.println(i);
}
}

排序(冒泡排序、選擇排序)
選擇排序:
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
// System.out.print(i+"-"+j+" ");
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// System.out.println();
}
冒泡排序:
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}



二維數組
初始化
動態初始化
格式:
數據類型[][] 數組名 = new 數據類型[二維數組的長度][一維數組的長度];
int[][] arr = new int[3][2];

數據類型[][] 數組名 = new 數據類型[二維數組的長度][];
int[][] arr = new int[3][];
靜態初始化
數據類型[][] 數組名 = new 數據類型[][]{{元素1,元素2,...},{},{},...};
int[][] arr = new int[][]{{1,2},{3,4,5},{6,7,8,9}};

數據類型[][] 數組名 = {{元素1,元素2,...},{},{},...};
int[][] arr = {{1,2},{3,4,5},{6,7,8,9}};

遍歷

數組

相關文章
相關標籤/搜索