JAVA 基础3-数组
一.數組的概念
數組可以看成是多個數據類型的集合,是對這些數據進行統一的管理;
數組的變量是引用類型,數組本身是對象,數組中的每個元素相當于該對象的成員變量;
數組的元素可以是任何數據類型,包括基礎數據類型和引用類型;
二.數組的聲明方式
數據類型 + [ ] + 數組名稱 = new + 數據類型 + [數組的長度];
例:int[] arr = new int[6]; 也可寫成int arr[] = new int[6]; 一般用第一種寫法;
也可直接定義數組中的內容:int[] arr ={1,2,3,4,5,6};注意:聲明數組時必須用new關鍵字;
注意:1.聲明數組時要使用new關鍵字
2.必須聲明數組的長度;且一旦定義則長度不可改變;
3.引用類型的數組是指在棧上聲明一個數組變量,內容則存在堆上,由該變量指向該內容;
三.數組的遍歷和初始化
1.靜態初始化指直接定義該數組內容,例:int[] arr = {1,2,3,4};
2.動態初始化是指用遍歷定義該數組內容;
四.public static void main(String[] args)
意思為公共的 靜態的 無返回值 主方法 前面3個都是用來修飾主方法的,括號里Sring是一個類,用于創建字符串對象,這里用來修飾主方法的形參,[ ]表示主方法的形參是一個字符串數組,args是一個標識符,是形參數組名。
五.關于局部變量和成員變量的區別:
1.在類中的位置不同:成員變量在類中方法外。局部變量在方法定義中或在方法定義上。
2.在內存的位置不同:成員變量在堆內存。局部變量在棧內存。
3.生命周期不同:成員變量隨著對象的創建而存在,隨著對象的消失而消失。?局部變量隨著方法的調用而存在,隨著方法的調用完畢而消失。
4.初始化值不同:成員變量有默認值初始化。局部變量沒有默認值初始化,必須定義,賦值,然后才能使用。
5.局部變量名稱可以和成員變量名稱一樣,在方法中使用的時候,采用的是就近原則。
main 方法是指該程序的主入口;
用args做運算器:
public class Test3 {public static void main(String[] args) {if (args.length != 3) {System.out.println("請輸入正確的格式!");return;}int a = Integer.parseInt(args[0]);int b = Integer.parseInt(args[2]);String s = args[1];switch (s) {case "+":System.out.println(a + b);break;case "-":System.out.println(a - b);break;case "/":System.out.println(a / b);break;case "X":System.out.println(a * b);break;default:break;}} }?在該文件夾下按shift+鼠標右鍵彈出的菜單中選擇命令窗口項運行;注意*在命令框中需改為大寫X才行;
例題:500逢3退1
public class Test3 {public static void main(String[] args) {boolean[] person = new boolean[500];for (int i = 0; i < person.length; i++) {person[i] = true;}int index = 0;int count = 0;int yu = person.length;while (yu != 1) {if (person[index]) {count++;if (count == 3) {count = 0;yu--;person[index] = false;}}index++;if (index == person.length) {index = 0;}}for (int i = 0; i < person.length; i++) {if (person[i] == true) {System.out.println(i);}}} }?結果為435;
思路:先讓所有人定義為布爾變量true;從這個人是true時開始數,當數到3時讓該人變為false;同時從0開始重新數,剩余人數少一個,當數到500時從新開始,知道剩余人數為1時停止;再用遍歷輸出為true的序號。
數組排序
public class Test4 {public static void main(String[] args) {int[] arr = { 1, 3, 6, 2, 0, 11, 17, 14, 4 };bubbleSort(arr); //冒泡排序selectSort(arr); //選擇排序reverseSort(arr); //反轉排序p(arr);}public static void reverseSort(int[] arr) {int t = arr.length / 2;for (int i = 0; i < t; i++) {int temp = arr[i];arr[i] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = temp;}}public static void selectSort(int[] arr) { //從大到小排序for (int i = 0; i < arr.length - 1; i++) {int index = i; //定義變量為第一個數的索引值for (int j = i + 1; j < arr.length; j++) { //如果后面的值比這個變量大,將這個值的索引賦值給變量if (arr[index] < arr[j]) {index = j;} //循環結束后得到所有數中最大的數}int temp = arr[index]; //將最大的數與原數位置互換,依次排序(int temp = arr[i]也可以)arr[index] = arr[i];arr[i] = temp;} }//選擇排序的運行思路:外循環先取第一個數,內循環讓該數依次與后面的每個數比較,內循環結束后得到最大的那個數的索引值,
外循環讓最大的數與第一個數位置互換,這樣最大的數排在第一位,然后取第二數重復循環。public static void bubbleSort(int[] arr) { //從小到大排序for (int i = 0; i < arr.length -1; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
//冒泡排序的運行思路:外循環是指需要比較的輪數,就是讓每個數都要與其他數比一次,內循環是讓該數與其他數比較后,通過位置互換將最大的數排到最后面,下輪循環則不需要讓其他數與該數比較,所以次數減1.public static void p(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}} }
?六.數組常用方法
例 :int[] arr1 = {6, 5 4, 3, 2, 1, 0}; int[] arr2 = {6, 5, 4, 3, 2, 1, 0};
1. 數組排序:Arrays.sort(arr); 從小到大排序,沒有降序方法,可以使用循環倒序輸出;
2. 填充數組: Arrays.fill(arr, 5);? 填充數組,一般用于數組的初始化,返回值都是5.
3. 數組的復制 :Arrays.copyOf(arr, 5);如果新數組的長度不如被復制的數組長度長則有多少取多少;如果新數組的長度比較長, 不足的部分用0填充
4. 數組的范圍復制 Arrays.copyOfRange(數組名,開始索引,結束索引);索引的范圍, 包括開始, 不包括結束
5. 比較兩個數組是不是一樣 Arrays.equals(arr,arr2);返回值是布爾值
轉載于:https://www.cnblogs.com/wyc1991/p/8965277.html
總結
以上是生活随笔為你收集整理的JAVA 基础3-数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pyinstaller运行时出现TCLE
- 下一篇: 转载:PAL/NTSC/BT601/BT