(參考網易雲課堂:龍馬高新教育)
一、一維數組
定義:類型[ ] 數組名 = new 類型[長度];
數組中存有預設值0,而在引用類型[ ]中為null;
如果在定義前,已經知道數組裡存放的内容,那可以簡單定義為:
類型[ ] 數組名 = {值1,值2,…,值n};
類型[ ] 數組名 = new 類型[ ]{值1,值2,…,值n};
Add:
動态初始化如:int[ ] array = new int[4];
靜态初始化如:int[] array = new int[]{1,2,3,4};
但是像int[] array = new int[3]{1,2,3};就是錯誤的寫法
這樣也是錯的,int[ ] array;array[ ] = {1,2,3};也是錯的!!!
而這樣是可以的:把String names[ ] = new String[ ]{“加油”,“沖呀”};
拆為:String names[ ] ;和 names[ ] = new String[ ]{“加油”,“沖呀”};
這裡老師拓展了一個知識點:就是建立一個随機的數組
package demo;
import java.util.Random; //導入包
public class Tst_1 {
public static void main(String[] args) {
Random rand = new Random();
int[] a = null;
a = new int[rand.nextInt(10)]; //開辟記憶體空間,長度是[0,10)的随機數
System.out.println("數組的長度:"+a.length);
for(int i=0;i<a.length;i++) {
a[i] = rand.nextInt(100);
System.out.println("a["+i+"]="+a[i]);
}
}
}
🌂另外,Java按引用傳值的方式也有點不太一樣!!!
Add:兩個數組對應同一個記憶體區域!!!
package demo;
public class Tst_1 {
public static void main(String[] args) {
int[] nums1 = {1,2};
int[] nums2 = nums1; //這裡其實把nums1中記錄的數組的位址傳給了nums2
//現在周遊兩個數組
System.out.println("第一個數組");
for(int x:nums1) {
System.out.println(x);
}
System.out.println("第二個數組");
for(int y:nums2) {
System.out.println(y);
}
//現在 修改下第二個數組中元素值
nums2[1] = 100;
System.out.println("第一個數組");
for(int x:nums1) {
System.out.println(x);
}
System.out.println("第二個數組");
for(int y:nums2) {
System.out.println(y);
}
}
}
輸出結果為:
第一個數組
1
2
第二個數組
1
2
第一個數組
1
100
第二個數組
1
100
這裡再來一個簡單的比較最大最小值的代碼!!!
package demo;
public class Tst_1 {
public static void main(String[] args) {
int nums[] = {100,5,41,79,58,1000,9854,121};
int max = nums[0];
int min = nums[0];
for(int i=1;i<nums.length;i++) {
if(nums[i]>max) {
max = nums[i];
}
}
for(int i=1;i<nums.length;i++) {
if(nums[i]<min) {
min = nums[i];
}
}
System.out.printf("該數組中最大值為:%d,最小值為:%d",max,min);
}
}
二、二維數組
定義:資料類型[ ][ ] 數組名 = new int[行數][列數];
如:int[ ][ ] array = new int [3][2];或者int[ ][ ] array; array = new int[3][2];
實質我感覺就像是數組的數組
下面舉一個行數列數都定了的二維數組
package demo;
public class Tst_2 {
public static void main(String[] args) {
int[][] nums;
nums = new int[3][2];
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums[i].length;j++) {
System.out.println("nums["+i+"]["+j+"]="+nums[i][j]);
}
}
}
}
再舉例列數不定(一定記得用new初始化)
package demo;
public class Tst_2 {
public static void main(String[] args) {
int[][] nums = new int[3][];
nums[0] = new int[2];
nums[1] = new int[2];
nums[2] = new int[] {1,2};
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums[i].length;j++) {
System.out.println("nums["+i+"]["+j+"]="+nums[i][j]);
}
}
}
}
🌂如果知道數組中存的值還可以:
package demo;
public class Tst_2 {
public static void main(String[] args) {
int[][] nums = {{1,2},{1,2,3},{2}};
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums[i].length;j++) {
System.out.println("nums["+i+"]["+j+"]="+nums[i][j]);
}
}
}
}
下面補充一道例題,計算某個員工的工資總額
package demo;
public class Tst_2 {
public static void main(String[] args) {
int sum = 0;
int[][] nums = {{1,2},{1,2,3},{2}};
for(int i=0;i<nums.length;i++) {
System.out.printf("第%d個人的銷售總額為:",(i+1));
for(int j=0;j<nums[i].length;j++) {
sum += nums[i][j];
}
System.out.println(sum);
sum = 0; //清零便于下一次計算
}
}
}
三、多元數組
定義:資料類型[ ][ ]…[] 數組名 = new int[ ][ ]…[];
類似的寫法,沒啥可說的!!!
四、拓展
4.1 Java中null的使用:可以為引用類型指派,作為初始值
比如:
public static void main(String[] args) {
String name = null;
name = "沖沖沖";
System.out.println(name);
}
🌂如果想要比較兩個字元串:可以使用a.equals(b)或b.equals(a);傳回一個布爾類型;
🌂另外如果報錯資訊出現NullPointerException則考慮是空對象;
4.2冒泡排序(參考曾經學c的思路)
package demo;
public class Tst_3 {
public static void main(String[] args) {
int[] a = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500};
int n; //存放數組a中元素的個數
int buf; //交換資料時用于存放中間資料
for(int i=0;i<a.length-1 ;i++) {
for(int j=0;j<a.length-i-1;j++) {
if(a[j]<a[j+1]) {
buf = a[j];
a[j] = a[j+1];
a[j+1] = buf;
}
}
}
for(int x:a) {
System.out.println(x);
}
}
}
package demo;
import java.util.Random;
public class Tst_4 {
public static void main(String[] args) {
Random random = new Random();
int buf;
int[] nums = new int[random.nextInt(10)];
for(int i=0;i<nums.length;i++) {
nums[i] = random.nextInt(100);
}
for(int i=0;i<nums.length-1 ;i++) {
for(int j=0;j<nums.length-i-1;j++) {
if(random.nextBoolean()) {
buf = nums[j];
nums[j] = nums[j+1];
nums[j+1] = buf;
}
}
}
for(int x:nums) {
System.out.println(x);
}
}
}