4修改初始值_Java基础语法 --4(连载)
第一部分 : IDEA開發(fā)工具
參見 :IEDA的安裝請參考文件夾PPT中的 04_IDEA.ppt
1.數(shù)組
1.1 數(shù)組介紹
? 數(shù)組就是存儲數(shù)據(jù)長度固定的容器,存儲多個數(shù)據(jù)的數(shù)據(jù)類型要一致。
1.2 數(shù)組的定義格式
1.2.1 第一種格式
? 數(shù)據(jù)類型[] 數(shù)組名
? 示例:
int[] arr; double[] arr; char[] arr;1.2.2 第二種格式
? 數(shù)據(jù)類型 數(shù)組名[]
? 示例:
int arr[]; double arr[]; char arr[];1.3 數(shù)組的動態(tài)初始化
1.3.1 什么是動態(tài)初始化
? 數(shù)組動態(tài)初始化就是只給定數(shù)組的長度,由系統(tǒng)給出默認(rèn)初始化值
1.3.2 動態(tài)初始化格式
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度]; int[] arr = new int[3];1.3.3 動態(tài)初始化格式詳解
- 等號左邊:
- int:數(shù)組的數(shù)據(jù)類型
- []:代表這是一個數(shù)組
- arr:代表數(shù)組的名稱
- 等號右邊:
- new:為數(shù)組開辟內(nèi)存空間
- int:數(shù)組的數(shù)據(jù)類型
- []:代表這是一個數(shù)組
- 5:代表數(shù)組的長度
代碼 :
package com.itheima.array;public class Demo2Array {/*數(shù)組的動態(tài)初始化:在初始化的時候, 需要手動指定數(shù)組的長度, 系統(tǒng)會為數(shù)組容器分配初始值.動態(tài)初始化格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度];注意:打印數(shù)組變量的時候, 會打印出數(shù)組的內(nèi)存地址[I@10f87f48 :@ : 分隔符[ : 當(dāng)前的空間是一個數(shù)組類型I : 當(dāng)前數(shù)組容器中所存儲的數(shù)據(jù)類型10f87f48 : 十六進(jìn)制內(nèi)存地址0 1 2 3 4 5 6 7 8 9 a b c d e f*/public static void main(String[] args) {// 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度];// 通過new關(guān)鍵字創(chuàng)建了一個int類型的數(shù)組容器, 該容器可以存儲5個int類型的整數(shù), 該容器被arr數(shù)組變量所記錄int[] arr = new int[5];// [I@10f87f48System.out.println(arr);byte[] bArr = new byte[3];// [B@b4c966aSystem.out.println(bArr);} }1.4 數(shù)組元素訪問
1.4.1 什么是索引
? 每一個存儲到數(shù)組的元素,都會自動的擁有一個編號,從0開始。
? 這個自動編號稱為數(shù)組索引(index),可以通過數(shù)組的索引訪問到數(shù)組中的元素。
1.4.2訪問數(shù)組元素格式
數(shù)組名[索引];1.4.3示例代碼
package com.itheima.array;public class Demo3ArrayIndex {/*數(shù)組動態(tài)初始化:初始化的時候, 手動指定數(shù)組長度, 系統(tǒng)會為數(shù)組容器分配初始值.數(shù)組的元素訪問格式:數(shù)組名[索引]索引: 數(shù)組中數(shù)據(jù)的編號方式, 編號從0開始作用: 訪問數(shù)組容器中的空間位置注意:數(shù)組在創(chuàng)建完畢后, 即使沒有賦值, 也可以取出, 但取出的元素都是默認(rèn)初始化值.*/public static void main(String[] args) {int[] arr = new int[3]; // 0 1 2System.out.println(arr); // 數(shù)組的內(nèi)存地址 [I@10f87f48// 數(shù)組名[索引] 訪問數(shù)組容器中的空間位置System.out.println(arr[0]); // 0 系統(tǒng)自動分配的默認(rèn)初始化值System.out.println(arr[1]);System.out.println(arr[2]);System.out.println("--------------");// 數(shù)組名[索引]arr[0] = 11;arr[1] = 22;arr[2] = 33;System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);} }1.5 內(nèi)存分配
1.5.1 內(nèi)存概述
? 內(nèi)存是計算機(jī)中的重要原件,臨時存儲區(qū)域,作用是運(yùn)行程序。
? 我們編寫的程序是存放在硬盤中的,在硬盤中的程序是不會運(yùn)行的。
? 必須放進(jìn)內(nèi)存中才能運(yùn)行,運(yùn)行完畢后會清空內(nèi)存。
? Java虛擬機(jī)要運(yùn)行程序,必須要對內(nèi)存進(jìn)行空間的分配和管理。
1.5.2 java中的內(nèi)存分配
- 目前我們只需要記住兩個內(nèi)存,分別是:棧內(nèi)存和堆內(nèi)存
| 區(qū)域名稱 | 作用 | | ---------- | ---------------------------------------------------------- | | 寄存器 | 給CPU使用,和我們開發(fā)無關(guān)。 | | 本地方法棧 | JVM在使用操作系統(tǒng)功能的時候使用,和我們開發(fā)無關(guān)。 | | 方法區(qū) | 存儲可以運(yùn)行的class文件。 | | 堆內(nèi)存 | 存儲對象或者數(shù)組,new來創(chuàng)建的,都存儲在堆內(nèi)存。 | | 方法棧 | 方法運(yùn)行時使用的內(nèi)存,比如main方法運(yùn)行,進(jìn)入方法棧中執(zhí)行。 |
1.6 Java內(nèi)存分配-一個數(shù)組內(nèi)存圖
1.7 兩個數(shù)組內(nèi)存圖
1.8 多個數(shù)組指向相同內(nèi)存圖
1.9 數(shù)組的靜態(tài)初始化
1.9.1 什么是靜態(tài)初始化
? 在創(chuàng)建數(shù)組時,直接將元素確定
1.9.2 靜態(tài)初始化格式
- 完整版格式
java 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,...};
- 簡化版格式
java 數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,...};
1.9.3示例代碼
package com.itheima.array2; public class Demo1Array {/*數(shù)組靜態(tài)初始化 : 初始化時指定每個數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度完整格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...};簡化格式:數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...};*/public static void main(String[] args) {// 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...};int[] arr = new int[]{11,22,33};System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);// 數(shù)據(jù)類型[] 數(shù)組名 = {數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3...};int[] arr2 = {44,55,66};System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);} }1.10 數(shù)組操作的兩個常見問題
1.10.1 索引越界異常
- 出現(xiàn)原因
java public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }
數(shù)組長度為3,索引范圍是0~2,但是我們卻訪問了一個3的索引。
程序運(yùn)行后,將會拋出ArrayIndexOutOfBoundsException 數(shù)組越界異常。在開發(fā)中,數(shù)組的越界異常是不能出現(xiàn)的,一旦出現(xiàn)了,就必須要修改我們編寫的代碼。
- 解決方案
將錯誤的索引修改為正確的索引范圍即可!
1.10.2 空指針異常
- 出現(xiàn)原因
```java public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3];
//把null賦值給數(shù)組arr = null;System.out.println(arr[0]);}} ```
arr = null 這行代碼,意味著變量arr將不會在保存數(shù)組的內(nèi)存地址,也就不允許再操作數(shù)組了,因此運(yùn)行的時候會拋出 NullPointerException 空指針異常。在開發(fā)中,數(shù)組的越界異常是不能出現(xiàn)的,一旦出現(xiàn)了,就必須要修改我們編寫的代碼。
- 解決方案
給數(shù)組一個真正的堆內(nèi)存空間引用即可!
1.11 數(shù)組遍歷
- 數(shù)組遍歷:就是將數(shù)組中的每個元素分別獲取出來,就是遍歷。遍歷也是數(shù)組操作中的基石。
java public class ArrayTest01 { 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]); } }
以上代碼是可以將數(shù)組中每個元素全部遍歷出來,但是如果數(shù)組元素非常多,這種寫法肯定不行,因此我們需要改造成循環(huán)的寫法。數(shù)組的索引是 0 到 lenght-1 ,可以作為循環(huán)的條件出現(xiàn)。
```java public class ArrayTest01 { public static void main(String[] args) { //定義數(shù)組 int[] arr = {11, 22, 33, 44, 55};
//使用通用的遍歷格式for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}}} ```
1.12 數(shù)組獲取最大值
- 最大值獲取:從數(shù)組的所有元素中找出最大值。
- 實(shí)現(xiàn)思路:
- 定義變量,保存數(shù)組0索引上的元素
- 遍歷數(shù)組,獲取出數(shù)組中的每個元素
- 將遍歷到的元素和保存數(shù)組0索引上值的變量進(jìn)行比較
- 如果數(shù)組元素的值大于了變量的值,變量記錄住新的值
- 數(shù)組循環(huán)遍歷結(jié)束,變量保存的就是數(shù)組中的最大值
- 代碼實(shí)現(xiàn):
```java package com.itheima.test;
import java.util.Scanner;
public class Test2Array { /* 需求: 從數(shù)組中查找最大值
int[] arr = {12,45,98,73,60};實(shí)現(xiàn)步驟:1. 假設(shè)數(shù)組中的第一個元素為最大值2. 遍歷數(shù)組, 獲取每一個元素, 準(zhǔn)備進(jìn)行比較3. 如果比較的過程中, 出現(xiàn)了比max更大的, 讓max記錄更大的值4. 循環(huán)結(jié)束后, 打印最大值.*/public static void main(String[] args) {int[] arr = {12,45,98,73,60};// 1. 假設(shè)數(shù)組中的第一個元素為最大值int max = arr[0];// 2. 遍歷數(shù)組, 獲取每一個元素, 準(zhǔn)備進(jìn)行比較for(int i = 1; i < arr.length; i++){// 3. 如果比較的過程中, 出現(xiàn)了比max更大的, 讓max記錄更大的值if(arr[i] > max){max = arr[i];}}// 4. 循環(huán)結(jié)束后, 打印最大值.System.out.println("max:" + max);}}
```
1.13 數(shù)組元素求和
- 需求:鍵盤錄入5個整數(shù),存儲到數(shù)組中,并對數(shù)組求和
- 思路: 1.創(chuàng)建鍵盤錄入對象,準(zhǔn)備鍵盤錄入 2.定義一個求和變量,準(zhǔn)備記錄累加后的結(jié)果 3.動態(tài)初始化一個長度為5的int數(shù)組,準(zhǔn)備存儲鍵盤錄入的數(shù)值 4.將鍵盤錄入的數(shù)值存儲到數(shù)組中 5.遍歷數(shù)組,取出每一個元素,并求和 6.輸出總和
- 代碼實(shí)現(xiàn):
```java package com.itheima.test;
import java.util.Scanner;
public class Test3Array { /* 需求:鍵盤錄入5個整數(shù),存儲到數(shù)組中,并對數(shù)組求和
思路:1.創(chuàng)建鍵盤錄入對象,準(zhǔn)備鍵盤錄入2.定義一個求和變量,準(zhǔn)備記錄累加后的結(jié)果3.動態(tài)初始化一個長度為5的int數(shù)組,準(zhǔn)備存儲鍵盤錄入的數(shù)值4.將鍵盤錄入的數(shù)值存儲到數(shù)組中5.遍歷數(shù)組,取出每一個元素,并求和6.輸出總和*/public static void main(String[] args) {// 1.創(chuàng)建鍵盤錄入對象,準(zhǔn)備鍵盤錄入Scanner sc = new Scanner(System.in);// 2.定義一個求和變量,準(zhǔn)備記錄累加后的結(jié)果int sum = 0;// 3.動態(tài)初始化一個長度為5的int數(shù)組,準(zhǔn)備存儲鍵盤錄入的數(shù)值int[] arr = new int[5];// 4.將鍵盤錄入的數(shù)值存儲到數(shù)組中for(int i = 0; i < arr.length; i++){System.out.println("請輸入第" + (i+1) + "個整數(shù):");//arr[i] = 10;arr[i] = sc.nextInt();}// 5.遍歷數(shù)組,取出每一個元素,并求和for (int i = 0; i < arr.length; i++) {sum += arr[i];}// 6.輸出總和System.out.println("sum:" + sum);}}
```
1.14 數(shù)組基本查找【應(yīng)用】
- 需求: 已知一個數(shù)組 arr = {19, 28, 37, 46, 50}; 鍵盤錄入一個數(shù)據(jù),查找該數(shù)據(jù)在數(shù)組中的索引,并在控 制臺輸出找到的索引值。
- 思路: 1.定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素的初始化 2.鍵盤錄入要查找的數(shù)據(jù),用一個變量接收 3.定義一個索引變量,初始值為-1 4.遍歷數(shù)組,獲取到數(shù)組中的每一個元素 5.拿鍵盤錄入的數(shù)據(jù)和數(shù)組中的每一個元素進(jìn)行比較,如果值相同,就把該值對應(yīng)的索引賦值給索引變量,并結(jié)束循環(huán) 6.輸出索引變量
- 代碼實(shí)現(xiàn):
```java public static void main(String[] args) { // 1.定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素的初始化 int[] arr = {19, 28, 37, 46, 50}; // 2.鍵盤錄入要查找的數(shù)據(jù),用一個變量接收 Scanner sc = new Scanner(http://System.in); System.out.println("請輸入您要查找的元素:"); int num = sc.nextInt(); // 3.定義一個索引變量,初始值為-1 // 假設(shè)要查找的數(shù)據(jù), 在數(shù)組中就是不存在的 int index = -1; // 4.遍歷數(shù)組,獲取到數(shù)組中的每一個元素 for (int i = 0; i < arr.length; i++) { // 5.拿鍵盤錄入的數(shù)據(jù)和數(shù)組中的每一個元素進(jìn)行比較,如果值相同,就把該值對應(yīng)的索引賦值給索引變量,并結(jié)束循環(huán) if(num == arr[i]){ // 如果值相同,就把該值對應(yīng)的索引賦值給索引變量,并結(jié)束循環(huán) index = i; break; } } // 6.輸出索引變量 System.out.println(index); } }
```
1.15 評委打分【應(yīng)用】
- 需求:在編程競賽中,有6個評委為參賽的選手打分,分?jǐn)?shù)為0-100的整數(shù)分。 選手的最后得分為:去掉一個最高分和一個最低分后 的4個評委平均值 (不考慮小數(shù)部分)。
- 思路: 1.定義一個數(shù)組,用動態(tài)初始化完成數(shù)組元素的初始化,長度為6 2.鍵盤錄入評委分?jǐn)?shù) 3.由于是6個評委打分,所以,接收評委分?jǐn)?shù)的操作,用循環(huán) 4.求出數(shù)組最大值 5.求出數(shù)組最小值 6.求出數(shù)組總和 7.按照計算規(guī)則進(jìn)行計算得到平均分 8.輸出平均分
- 代碼實(shí)現(xiàn):
```java public static void main(String[] args) { // 1.定義一個數(shù)組,用動態(tài)初始化完成數(shù)組元素的初始化,長度為6 int[] arr = new int[6]; // 2.鍵盤錄入評委分?jǐn)?shù) Scanner sc = new Scanner(http://System.in); // 3.由于是6個評委打分,所以,接收評委分?jǐn)?shù)的操作,用循環(huán) for (int i = 0; i < arr.length; i++) { System.out.println("請輸入第" + (i+1) + "個評委的打分:"); int score = sc.nextInt(); if(score >= 0 && score <= 100){ // 合法的分值 arr[i] = score; }else{ // 非法的分值 System.out.println("您的打分輸入有誤, 請檢查是否是0-100之間的"); i--; } }
// 4.求出數(shù)組最大值int max = arr[0];for (int i = 1; i < arr.length; i++) {if(max < arr[i]){max = arr[i];}}// 5.求出數(shù)組最小值int min = arr[0];for (int i = 1; i < arr.length; i++) {if(min > arr[i]){min = arr[i];}}// 6.求出數(shù)組總和int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}// 7.按照計算規(guī)則進(jìn)行計算得到平均分int avg = (sum - max - min ) / 4;// 8.輸出平均分System.out.println(avg);}} ```
總結(jié)
以上是生活随笔為你收集整理的4修改初始值_Java基础语法 --4(连载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 面试什么是类_Java 面试题
- 下一篇: jq处理返回来json_4个小窍门,让你