java 左边补0_java基础知识
1 寫在前面
JVM + 核心類庫 = JRE + 編譯器等開發工具 = JDK
Java環境變量的配置 : 計算機 -> 屬性-> 高級系統設置 -> 系統變量 -> 新建系統變量
JAVA_HOME : 選擇Java工具包的bin目錄的上一級目錄
Path : %JAVA_HOME%bin
Java程序開發三步驟 : 編寫, 編譯, 運行
編譯 : javac.exe 編譯器 運行 : java.exe 解釋器
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");} }// 先 javac HelloWorld.java, 再 java HelloWorld2 標識符的概念及規則
- 標識符 : 在程序中,我們自己定義的內容; 比如類, 方法, 變量的 名字 都稱為標識符
- 命名規則 : 硬性要求
- 標識符可以包含英文字母26個(區分大小寫),0-9數字,$(美元符號) 和 _(下劃線)
- 標識符不能以數字開頭
- 標識符不能是已有的關鍵字
- 命名規范 : 軟性建議
- 類名規范 : 首字母大寫, 后面每個單詞首字母大寫 (大駝峰式)
- 變量名規范 : 首字母小寫, 后面每個單詞首字母大寫 (小駝峰式)
- 方法名規范 : 同變量名規范
3 常量
定義 : 是指在Java程序運行期間固定不變的數據
| 類型 | 含義 | 數據舉例 | | ---------- | ---------------------------------------- | ---------------- | | 整數常量 | 所有的整數 | 0, 1 , 5, -5 | | 浮點數常量 | 所有的小數 | 1.4 , 0.0, -4.9 | | 字符常量 | 單引號引起來的,只能寫一個字符,必須有內容 | 'a', ‘好’ | | 字符串常量 | 雙引號引起來的,可以寫多個, 可以不寫 | 'aaaaa', 'Hello’ | | 布爾常量 | 兩個值 | true, fasle | | 空常量 | 一個值; 空常量不能直接用來打印輸出 | null |
System.out.println(5); System.out.println(5.0); System.out.println('5'); System.out.println("admin);4 數據基本類型
Java數據類型分為兩大類 : 基本數據類型 和 引用數據類型
基本數據類型 : 整數, 浮點數, 字符, 布爾這四大類 又可分為八種
引用數據類型 : 字符串, 類, 數組, 接口, Lambda
| 數據類型 | 關鍵字 | 內存占用 | 取值范圍 | | ------------ | ------- | ------------- | ------------------------ | | 字節型 | byte | 1個字節 | -128 ~127 | | 短整型 | short | 2 個字節 | -32768 ~ 32767 | | 整型 | int | 4個字節(默認) | -2的31次方 ~ 2的31次方-1 | | 長整型 | long | 8個字節 | -2的63次方 ~ 2的63次方-1 | | 單精度浮點數 | float | 4個字節 | 1.4013E-45 ~ 3.4028E+38 | | 雙精度浮點數 | double | 8個字節 | 4.9E-324~1.7977E+308 | | 字符 | char | 2個字節 | 0-65535 | | 布爾 | boolean | 1個字節 | true, false |
注意事項 :
5 變量
定義 : 在程序運行期間可以變化的量稱為變量
Java中要求一個變量每次只能保存一個數據, 且必須要明確保存變量的數據類型
變量定義的格式包括三個要素: 數據類型 、 變量名 、 數據值 。
數據類型 變量名稱 = 數據值; // 創建了一個變量,并將數據值賦值給變量
注意事項 :
6 數據類型轉換
自動類型轉化 -- 隱式轉換
將取值小的范圍自動提升為取值范圍大的類型, 比如:一個int類型與byte字節類型相加運算是int類型
public static void main(String[] args){int i = 1;byte b = 2;// byte x = b + i; // 報錯 // int類型和byte類型運算,結果是int類型 int j = b + i; System.out.println(j); }同樣道理當一個 int 類型變量和一個double 變量運算時,int 類型將會自動提升為 double 類型進行運算。
public static void main(String[] args) {int i = 1; double d = 2.5; //int類型和double類型運算,結果是double類型 // int類型會提升為double類型double e = d+i;System.out.println(e);}轉換規則 :范圍小的類型向 范圍大的類型提升; byte, short ,char 運算時直接提升為 int
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
強制類型轉換 -- 顯式轉換
將 1.5 賦值到 int 類型變量會發生什么? 產生編譯失敗, 肯定無法賦值
int i = 1.5 // // 錯誤 double 類型內存8個字節, int 類型內存4個字節。 1.5 是 double 類型,取值范圍大于 int 。可以理解為 double 是8 升的水壺, int 是4升的水壺,不能把大水壺中的水直接放進小水壺去。 想要賦值成功,只有通過強制類型轉換,將 double 類型強制轉換成 int 類型才能賦值。強制類型轉換:將取值范圍大的類型 強制轉換成 取值范圍小的類型 。 比較而言,自動轉換是Java自動執行的,而強制轉換需要我們自己手動執行。
轉換格式 : 數據類型 (范圍小) 變量名 (范圍小) = (數據類型 -- 范圍小) 被轉數據值(范圍大);
int i = (int) 1.5;public static void main(String[] args) { //short類型變量,內存中2個字節 short s = 1;/*出現編譯失敗 s和1做運算的時候,1是int類型,s會被提升為int類型 s+1后的結果是int類型,將結果在賦值會short類型時發生錯誤 short內存2個字節,int類型4個字節 必須將int強制轉成short才能完成賦值 */s = s + 1;//編譯失敗 s = (short) (s+1);//編譯成功 }注意事項 :
7 ASCII編碼表
public static void main(String[] args){// 字符類型變量char c = 'a';int i = 1;// 字符類型和int類型計算System.out.println(c+i); //輸出結果為98 }| 字符 | 數值 | | :--- | :--- | | 0 | 48 | | 9 | 57 | | A | 65 | | Z | 90 | | a | 97 | | z | 122 |
在char類型和int類型計算的過程中,char類型的字符先查詢編碼表,得到97,再和1求和,結果為98。 char類型提升 為了int類型。char類型內存2個字節,int類型內存4個字節。
8 運算符
算數運算符
| 算數運算符包括: | | | :--------------- | :--------------------------- | | + | 加法運算,字符串連接運算 | | - | 減法運算 | | * | 乘法運算 | | / | 除法運算 | | % | 取模運算,兩個數字相除取余數 | | ++、— | 自增自減運算 |
Java中, 整數使用以上運算符 ,無論怎么計算, 也不會得到小數
public static void main(String[] args) { int i = 1234;System.out.println(i/1000*1000);//計算結果是1000 }一切基本數據類型與 String字符串用 + 都是拼接形成新的 字符串
自增運算符 : ++
自減運算符 : --
使用格式 : 寫在變量名稱之前, 后綴寫在變量名稱之后, 例如: ++num, 也可以num++
使用方式 :
? 單獨使用 : ++num, num++ 沒有任何區別
? 混合使用 :
? A - 如果是前++ ,那么變量立刻馬上+1,然后拿著結果使用 [先加后用]
? B - 如果是后++,那么使用變量本來的數值,然后再讓變量+1 [先用后加]
注意事項 : 只有變量才能使用自增, 自減運算符; 常量不可改變, 所以不能用
賦值運算符
| 賦值運算符包括: | | | :--------------- | :----- | | = | 等于號 | | += | 加等于 | | -= | 減等于 | | *= | 乘等于 | | %= | 取模等 | | /= | 除等于 |
賦值運算符 : 就是將符號左邊的值, 賦給左邊的變量
public static void main(String[] args){ int i = 5; i+=5;//計算方式 i=i+5 變量i先加5,再賦值變量i System.out.println(i); //輸出結果是10 }比較運算符
| 比較運算符包括: | | | :--------------- | :----------------------------------------------------------- | | == | 比較符號兩邊數據是否相等,相等結果是true。 | | > | 比較符號左邊的數據是否大于右邊的數據,如果大于結果是true。 | | < | 比較符號左邊的數據是否小于右邊的數據,如果小于結果是true。 | | >= | 比較符號左邊的數據是否大于或者等于右邊的數據,如果小于結果是true。 | | <= | 比較符號左邊的數據是否小于或者等于右邊的數據,如果小于結果是true。 | | != | 不等于符號 ,如果符號兩邊的數據不相等,結果是true。 |
比較運算符 : 兩個數據之間比較的運算, 運算結果都是布爾值 true 或者 false
邏輯運算符
| 邏輯運算符包括: | | | :--------------- | :----------------------------------------------------------- | | && 短路與 | 1. 兩邊都是true,結果是true 2. 一邊是false,結果是false 短路特點:符號左邊是false,右邊不再運算 [全真為真] | | ! 取反 | 1. ! true 結果是false 2. ! false結果是true | | || 短路或 | 1. 兩邊都是false,結果是false 2. 一邊是true,結果是true 短路特點: 符號左邊是true,右邊不再運算。 [一真為真] |
三元運算符
運算法則 : 數據類型 變量名 = 布爾類型表達式 ? 結果1 : 結果2
當布爾類型表達式值為true, 取結果1賦值給變量 ; 否則即當布爾類型表達式值為false, 取結果2賦值給變量;
9 JDK的JShell的簡單使用
當我們編寫的代碼非常少的時候, 而又不愿意編寫類, main方法, 也不愿意去編譯和運行,就要使用JShell命令
在cmd當中 輸入 jshell進入,,,,,,,輸入 /exit 退出命令
編譯器的的優化 :
- 對于 byte/short/char 三種類型來說, 如果右側賦值的數值沒有超過范圍, 那么javac編譯器將會自動隱含地(強轉)為我們補上一個(byte)(short)(char); 如果右側超過了左側的范圍, 那么直接編譯報錯
- 在給變量賦值的時候, 如果右側的表達式當中全都是常量, 沒有任何變量, 那么編譯器javac 將會直接將若干個常量表達式計算得到結果; short = 5 + 8; // 等號右邊全都是常量, 沒有任何變量參與運算編譯之后, 得到的.class 字節碼文件當中相當于[直接就是] : short result = 13;右側的常量結果數值, 沒有超過左側范圍, 所以正確; 這稱之為"編譯器的常量優化"
10 流程控制
順序結構
在一個程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說,程序的流程對運行結果 有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現 我們要完成的功能。
public static void main(String[] args){ //順序執行,根據編寫的順序,從上到下運行 System.out.println(1); System.out.println(2); System.out.println(3); }判斷語句
if
if(關系表達式){ 語句體; }public static void main(String[] args){System.out.println("開始");// 定義兩個變量int a = 10;int b = 20;//變量使用if判斷if (a == b){System.out.println("a等于b");}int c = 10;if(a == c){System.out.println("a等于c");}System.out.println("結束"); }執行流程 :
if.....else
if(關系表達式) { 語句體1; }else { 語句體2; }執行流程 :
if ....else if ...else
if (判斷條件1) { 執行語句1; } else if (判斷條件2) { 執行語句2; } ... }else if (判斷條件n) { 執行語句n; } else { 執行語句n+1; }執行流程 :
選擇語句
switch(表達式) {case 常量值1:語句體1;break;case 常量值2:語句體2;break;...default:語句體n+1;break; }執行流程 :
switch語句中, 表達式的數據類型 ,可以是byte, short, int ,char ,enum(枚舉), 還可以是字符串
循環語句
循環語句可以在滿足循環條件的情況下, 反復執行某一段代碼, 這段被重復執行的代碼被稱為循環體語句, 當反復執行這個循環體時, 需要在合適的時候把循環判斷條件修改為false, 從而結束循環, 否則循環將一直執行下去, 形成死循環
for循環語句表達式
for(初始化表達式①; 布爾表達式②; 步進表達式④){循環體③ }執行流程 :
執行順序:①②③④>②③④>②③④…②不滿足為止。
①負責完成循環變量初始化
②負責判斷是否滿足循環條件,不滿足則跳出循環
③具體執行的語句
④循環后,循環條件所涉及變量的變化情況
public static void main(String[] args) {//定義變量從0開始,循環條件為<10for(int x = 0; x < 10; x++) {System.out.println("HelloWorld"+x);} } 循環練習:使用循環,計算1-100之間的偶數和 public static void main(String[] args) {//1.定義一個初始化變量,記錄累加求和,初始值為0int sum = 0;//2.利用for循環獲取1‐100之間的數字for (int i = 1; i <= 100; i++) {//3.判斷獲取的數組是奇數還是偶數if(i % 2==0){//4.如果是偶數就累加求和sum += i;}}//5.循環結束之后,打印累加結果System.out.println("sum:"+sum); }do.......while循環表達式
初始化表達式① do{ 循環體③ 步進表達式④ }while(布爾表達式②);輸出10次HelloWorld public static void main(String[] args) {int x=1;do {System.out.println("HelloWorld");x++;}while(x<=10); }do...while循環的特點:無條件執行一次循環體,即使我們將循環條件直接寫成false,也依然會循環一次。這樣的 循環具有一定的風險性,因此初學者不建議使用do...while循環。
跳出語句
break : 終止swtich或者循環
public static void main(String[] args) {for (int i = 1; i<=10; i++) {//需求:打印完兩次HelloWorld之后結束循環if(i == 3){break;}System.out.println("HelloWorld"+i);}}continue : 結束本次循環, 繼續下一次的循環
public static void main(String[] args) {for (int i = 1; i <= 10; i++) {//需求:不打印第三次HelloWorldif(i == 3){continue;}System.out.println("HelloWorld"+i);} }死循環 : 也就是循環中的條件永遠為true,死循環的是永不結束的循環。例如:while(true){}
嵌套循環 所謂嵌套循環,是指一個循環的循環體是另一個循環。比如for循環里面還有一個for循環,就是嵌套循環。總共的循環次數=外循環次數*內循環次數
外循環一次, 內循環多次
for(初始化表達式①; 循環條件②; 步進表達式⑦) {for(初始化表達式③; 循環條件④; 步進表達式⑥) {執行語句⑤;} }11 開發工具 Intellij IDEA
IDEA是一個專門針對java的集成開發工具(IDE), 由java語言編寫, 所以, 需要有JRE運行環境并配置好環境變量; 他可以極大的提升我們的開發效率, 可以自動編譯, 檢查錯誤
項目Project --> 模塊Module --> 包 Packpage
IDE的 HelloWorld 在模塊的src目錄下 新建 java class,寫上 psvm 快捷生成 main()
IDE的基本設置 : 更改自動補全為 Alt+/
IDEA常用快捷鍵
| 快捷鍵 | 功能 | | -------------------- | -------------------------------------- | | Alt+Enter | 導入包, 自動修正代碼 | | Ctrl+Y | 刪除光標所在行 | | Ctrl+D | 復制光標所在行的內容, 插入光標位置下面 | | Ctrl+Alt+L | 格式化代碼 | | Ctrl+/ | 單行注釋, 再按取消注釋 | | cTRL+Shift+/ | 選中代碼注釋, 多行注釋, 再按取消注釋 | | Alt+Ins | 自動生成代碼, toString, get, set等方法 | | Alt+Shift+上下箭頭 | 移動當前代碼行 |
刪除模塊: 選中模塊delete, 或者右鍵Remove Module
導入模塊 : File --> Project Structure --> + -->import Module --> 選擇對應的目錄-->一直next,next
12 方法
定義 : 就是將一個功能抽取出來, 把代碼單獨定義在一個大括號內, 形成一個單獨的功能;當我們需要這個功能的時候,就可以去調用, 這樣既實現了代碼的復用性, 也解決了代碼冗余的現象
定義格式 :
修飾符 返回值類型 方法名 (參數列表) {代碼 ...return ; }public static void main (String[] args) {方法體 ...return 返回值; }解釋 :
- 修飾符 : 目前固定寫法 public static
- 返回值類型 : 目前固定寫法 void, 其他返回值會在后面接觸
- 方法名: 我們定義的方法名 : 滿足標識符的規范, 用來調用方法
- 參數列表 :方法在運算過程中的未知數據, 調用者調用方法時傳遞
- return : 將方法執行后的結果數據帶給調用者,方法執行到 return ,整體方法運行結束
- 結果 : 方法的返回值
注意事項 :
- 方法的定義位置在類中,在main()外面, 在 main中調用,先后順序無所謂,和調用順序有關
- 返回值類型, 必須要和 return語句返回的類型相同, 否則編譯失敗
- 不能用輸出語句調用 void 類型的方法; 因為方法執行后沒得結果,也不打印出任何內容
- 一個方法中可以有多個return語句,但是只能保證同時只能有一個被執行, return不能連寫
方法的調用方式:
- 單獨調用, 方法名稱(參數);
- 打印調用, System.out.println(Sum(3,5));
- 賦值調用, 數據類型 變量名稱 = Sum(3,5);
方法的有無參數:
有參數: 小括號當中有內容, 當一個方法需要一些數據條件,才能完成任務的時候,就是有參數 例如兩數相加, 必須知道兩個數字各自是多少, 才能相加無參數: 小括號當中留空, 一個方法不需要任何數據條件, 自己就能獨立完成任務,就是無參數 例如定義一個方法, 打印10次Helloworld有無返回值
package cn.itcast.day04.demo02;public class Demo04Return {public static void main(String[] args) {int num = getSum(10,20);System.out.println("返回值"+ num);System.out.println("=============");printSum(2,3);}public static int getSum(int a, int b){int res = a + b;return res;}public static void printSum(int a,int b){int res = a + b;System.out.println(res);}}getSum就是有返回值的方法; printSum就是無返回值的方法
練習 1 : 定義一個方法, 用來判斷兩個數字是否相同
public class Demo01MethodSame(){public static void main(String[] args) {System.out.println(isSame(10,20)) // false}public static boolean isSame(int a,int b){boolean same;if (a == b){same = true;}else{same = fasle;}boolean same = a = b?true:fasle;boolean same = a==breturn same;return a == b; }}練習2 : 定義一個方法, 永安里打印指定次數的HelloWorld
public class Demo03MethodPrint {public static void main(String[] args) {printCount(8);}/*三要素返回值類型 : void方法名 : printCount參數列表 : 到底打印多少次, 告訴我幾次,就打印幾次 次數 int :num*/public static void printCount(int num){for (int i = 0; i < num; i++) {System.out.println("HelloWorld" + (i+方法1));}} }方法定義的三要素 : 返回值類型, 方法名, 參數列表 [返回值類型必須與return返回的類型相同]
方法重載
定義 : 同一個類中, 允許重載一個以上的同名方法, 只要他們的參數列表不同即可, 與修飾符和返回值類型無關
參數列表 : 個數不同, 數據類型不同, 順序不同
重載方法調用 : JVM通過方法的參數列表, 調用不同的方法
13 數組
定義 : 是一種容器, 可以同時存放多個數據值
特點 :
數組的創建 , 也叫做數組的初始化
動態初始化數組的格式 : 數據類型[] 數組名稱 = new 數據類型[數組長度];
動態初始化時數組的元素會自動擁有一個默認值, 為 0; 根據數組的類型自動擁有
靜態初始化時數組的元素會其實也會自動擁有一個默認值, 為 0; 只不過系統馬上將默認值替換為了大括號當中的具體數值
解析含義 :
左側數據類型 : 也就是數組當中保存的數據, 全都是統一的什么類型
左側中的括號 : 代表我是一個數組
左側的數組名稱 : 給數組取一個名字
右側中的new : 代表創建數組的動作
右側數據類型 : 必須和左邊的數據類型保持一致
右側括號中的長度 : 也就是數組當中, 到底可以保存多少個數據, 是一個int數字
靜態初始化數組的格式 : 數據類型[] 數組名稱 = new 數據類型[]{元素1,元素2,元素3};
省略初始化數組的格式 : 數據類型[] 數組名稱 = {元素1,元素2,元素3};
// 直接打印數組名稱, 得到的是數組對應的, 內存地址的哈希值int[] array = {10,20,30} System.out.println(array); // [I@75412c2f 十六進制數組的訪問
索引 : 每一個存儲到數組的元素,都會自動的擁有一個編號,從0開始,到length-1結束, 這個自動編號稱為數組索引(index),可以通過數組的索引訪問到數組中的元素。
格式 : 數組名[索引]
數組的賦值 : array[索引] = 具體的數值
Java的內存劃分
Java的內存需要劃分為五個部分:
1 棧(Stack) : 存放的都是方法中的局部變量, 方法的運行一定要在棧當中; 局部變量: 方法的參數,或者是方法{}內部的變量, 作用域: 一旦超過作用域, 立刻從棧內存才能當中消失
2 堆(Heap) : 凡是 new 出來的東西,都在堆當中; 堆內存里面的東西都有一個地址值 : 16 進制, 堆內存里面的數據, 都有默認值; 整數 --> 默認為0; 浮點數 --> 默認為0.0; 字符 --> 默認為'u0000'; 布爾值 --> 默認為false; 引用類型 --> 默認為null
3 方法區(Method Area) : 存儲.class 相關信息, 包含方法的信息
4 本地方法棧(Native Method Stack) : 與操作系統相關
5 寄存器(pc Register) : 與CPU相關
一個數組的從無到有
兩個數組的內存圖
兩個引用指向同一個數組的問題
把 arrayB = arrayA 把arrayA的內存地址賦值給arrayB
public class Demo05ArraySame {public static void main(String[] args) {int[] arrayA = new int[3]; // 初始化一個數組System.out.println(arrayA); // 地址值System.out.println(arrayA[0]); // 0System.out.println(arrayA[1]); // 0System.out.println(arrayA[2]); // 0arrayA[1] = 20;arrayA[2] = 30;System.out.println(arrayA); // 地址值System.out.println(arrayA[0]); // 0System.out.println(arrayA[1]); // 20System.out.println(arrayA[2]); // 30int[] arrayB = arrayA;System.out.println(arrayB); // 地址值System.out.println(arrayB[0]); // 0System.out.println(arrayB[1]); // 0System.out.println(arrayB[2]); // 0arrayB[1] = 200;arrayB[2] = 300;System.out.println(arrayB); // 地址值System.out.println(arrayB[0]); // 0System.out.println(arrayB[1]); // 200System.out.println(arrayB[2]); // 300System.out.println("=================");System.out.println(arrayA[1]); // 200System.out.println(arrayA[2]); // 300} }操作 arrayA和arrayB, 他們倆其實就是一個數組
空指針異常
所有的引用類型變量, 都可以賦值為一個 null 值,但是代表其中什么都沒有
數組必須進行new初始化才能使用其中的元素
如果只是賦值了一個null,沒有進行new創建,那么將會發生空指針異常 NullPointerException
數組的長度屬性
每個數組都具有長度,而且是固定的,在程序運行期間不可變,Java中賦予了數組的一個屬性,可以獲取到數組的長度,語句為: 數組名.length ,屬性length的執行結果是數組的長度,int類型結果。由次可以推斷出,數組的最大索引值為 數組名.length-1 。
int[] arrayC = new int[3]; arrayC = new int[5]; System.out.println(arrayC) // 此時并沒有改變數組的長度,而是新創建了一個數組, 改變了arrayC的引用 --> 指向新的數組數組的遍歷輸出
public static void main(String[] args) {int[] arr = { 1, 2, 3, 4, 5 };for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);} }數組獲取最大值元素
public static void main(String[] args) {int[] arr = { 5, 15, 2000, 10000, 100, 4000 };//定義變量,保存數組中0索引的元素int max = arr[0];//遍歷數組,取出每個元素for (int i = 1; i < arr.length; i++) {//遍歷到的元素和變量max比較//如果數組元素大于maxif (arr[i] > max) {//max記錄住大值max = arr[i];}}System.out.println("數組最大值是: " + max); }數組反轉
blic static void main(String[] args) {int[] arr = { 1, 2, 3, 4, 5 };/*循環中定義變量min=0最小索引初始化語句 min=0最小索引,max=arr.length‐1最大索引條件判斷 min <= max步進表達式 min++,max‐‐*/for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {//利用第三方變量完成數組中的元素交換int temp = arr[min];arr[min] = arr[max];arr[max] = temp;}// 反轉后,遍歷數組for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);} }數組作為方法的參數傳遞
數組作為方法的參數傳遞, 傳遞的參數是數組的內存地址
public static void main(String[] args) {int[] arr = { 1, 3, 5, 7, 9 };//調用方法,傳遞數組printArray(arr); } /* 創建方法,方法接收數組類型的參數 進行數組的遍歷 */ public static void printArray(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);} }數組作為方法的返回值返回
數組作為方法的返回值返回, 返回的是數組的內存地址
一個方法可有0, 1, 多個參數,但是只能有0或者1個返回值, 不能有多個返回值
如果希望一個方法當中產生多個結果數據返回, 使用一個數組作為返回值類型即可
public static void main(String[] args) {//調用方法,接收數組的返回值//接收到的是數組的內存地址int[] res = cal(10,20,30);for (int i = 0; i < res.length; i++) {System.out.println("總和:"+ res[0]);System.out.println("平均數:"+ res[0]);} } /* 創建方法,返回值是數組類型 return返回數組的地址 */ public static int[] cal(int a,int b,int c) {int sum = a+b+c; // 總和int avg = sum /3; // 平均數int[] arr = {sum,avg};return arr; }方法的參數為基本數據類型時,傳遞的是數據值; 方法的參數為引用類型時, 傳遞的是地址值
同理, 引用類型作為方法的返回值時, 返回的也是地址值
總結
以上是生活随笔為你收集整理的java 左边补0_java基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多少个没收到会收敛_三分历史纪录2973
- 下一篇: 故障码123401_故障引导案例 | 宝