日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 左边补0_java基础知识

發布時間:2025/4/5 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 HelloWorld

2 標識符的概念及規則

  • 標識符 : 在程序中,我們自己定義的內容; 比如類, 方法, 變量的 名字 都稱為標識符
  • 命名規則 : 硬性要求
    • 標識符可以包含英文字母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 |

注意事項 :

  • 字符串不是基本類型, 而是引用類型
  • 浮點型可能是一個近似值, 并非精確的值
  • 數據范圍與字節數不一定相關, 例如float數據范圍比long更加廣泛,但是float是4個字節,long是8個字節
  • 浮點數當中默認類型是double,如果一定要使用float類型, 需要加上一個后綴F, 推薦使用大寫字母后綴
  • 如果是整數, 默認是int類型, 如果一定要使用long類型, 需要加上一個后綴F, 推薦使用大寫字母后綴
  • 5 變量

    定義 : 在程序運行期間可以變化的量稱為變量

    Java中要求一個變量每次只能保存一個數據, 且必須要明確保存變量的數據類型

    變量定義的格式包括三個要素: 數據類型 、 變量名 、 數據值 。

    數據類型 變量名稱 = 數據值; // 創建了一個變量,并將數據值賦值給變量

    注意事項 :

  • 如果創建多個變量, 變量之間的名稱不可以重復
  • 對于float和long類型來說, 字母后綴F和L不要丟掉
  • 如果使用byte或者short類型的變量, 那么右側的數據值不能超過左側類型的范圍
  • 沒有進行賦值的變量, 不能直接使用; 一定要賦值之后, 才能使用
  • 變量的使用不能超過作用域的范圍[作用域: 從定義變量的一行開始, 一直到直接所屬的大括號為止]
  • 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("結束"); }

    執行流程 :

  • 首先判斷關系表達式看其結果是true還是false
  • 如果是true就執行語句體
  • 如果是false就不執行語句體
  • if.....else

    if(關系表達式) { 語句體1; }else { 語句體2; }

    執行流程 :

  • 首先判斷關系表達式看其結果是true還是false
  • 如果是true就執行語句體1
  • 如果是false就執行語句體2
  • if ....else if ...else

    if (判斷條件1) { 執行語句1; } else if (判斷條件2) { 執行語句2; } ... }else if (判斷條件n) { 執行語句n; } else { 執行語句n+1; }

    執行流程 :

  • 首先判斷關系表達式1看其結果是true還是false
  • 如果是true就執行語句體1
  • 如果是false就繼續判斷關系表達式2看其結果是true還是false
  • 如果是true就執行語句體2
  • 如果是false就繼續判斷關系表達式…看其結果是true還是false
  • 如果沒有任何關系表達式為true,就執行語句體n+1。
  • public static void main(String[] args) {// x和y的關系滿足如下:// x>=3 y = 2x + 1;//‐1<=x<3 y = 2x;// x<=‐1 y = 2x – 1;// 根據給定的x的值,計算出y的值并輸出。// 定義變量int x = 5;int y;if (x>= 3) {y = 2 * x + 1;} else if (x >= ‐1 && x < 3) {y = 2 * x;} else {y = 2 * x ‐ 1;}System.out.println("y的值是:"+y); }

    選擇語句

    switch(表達式) {case 常量值1:語句體1;break;case 常量值2:語句體2;break;...default:語句體n+1;break; }

    執行流程 :

  • 首先計算出表達式的值
  • 其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結 束。
  • 最后,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然后程序結束掉。
  • public static void main(String[] args) {//定義變量,判斷是星期幾int weekday = 6;//switch語句實現選擇switch(weekday) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("你輸入的數字有誤");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基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲一区二区伦理 | 超碰日日干 | 国语对白真实视频播放 | 欧美色图久久 | 污污免费视频 | 亚洲中文字幕无码一区二区三区 | 国产精品一级无码 | 一区二区三区免费视频观看 | 中文字幕亚洲色图 | 成人福利av| 亚洲中字幕 | 亚洲综合色站 | 麻豆av导航| 午夜色福利 | 国产在线青青草 | 夜夜草av | 国产成人专区 | 在线观看污视频网站 | 超碰成人网 | 国产高清免费在线观看 | 欧美精品四区 | 欧美日韩黄色大片 | 午夜美女网站 | 日韩精品久久久久久久的张开腿让 | 久久久久久久久久久久久女过产乱 | 婷婷色九月 | 欧美三日本三级少妇99 | 成人在线视频网址 | av精选| 欧美爱爱网址 | 精东传媒在线 | 草莓视频在线观看18 | 国产国产乱老熟女视频网站97 | 欧美伦理在线观看 | 91av一区 | 性饥渴的农村熟妇 | 中字av在线| 91视频二区 | 最近免费中文字幕中文高清百度 | 久久大奶 | av日日夜夜 | 熟女精品一区二区三区 | 找国产毛片看 | av一区二区三区在线 | 99精品免费在线观看 | 国产精品久久av无码一区二区 | 欧美久久久久久久 | 骚狐网站 | 久久伊人操 | 伊人影院视频 | 亚洲天天视频 | 粉色视频免费 | 户外露出一区二区三区 | 免费视频成人 | 欧美日韩在线播放视频 | 麻豆com| 国产精品免 | 亚洲精品97久久中文字幕无码 | 欧美岛国国产 | av香蕉| a国产精品 | 狠狠干狠狠插 | 日本少妇电影 | 大乳丰满人妻中文字幕日本 | 91亚洲欧美 | 在线高清免费观看 | 国产一区二区免费在线 | 亚洲aaa视频 | 精品69 | 一卡二卡三卡四卡 | 看黄色的网站 | 性色影院| 国产精品成人免费一区二区视频 | 91福利免费视频 | 欧美在线免费看 | 91丨porny丨露出 | av一级黄色片 | 啪视频在线 | 欧美一区二区免费视频 | 黄色小视频在线免费观看 | av网址在线看 | 国产乱论| 国产精品无码久久久久高潮 | 粗大的内捧猛烈进出 | 久久久久免费精品视频 | www婷婷av久久久影片 | 亚洲精品久久久久avwww潮水 | 日韩国产精品视频 | 亚洲一级免费毛片 | 国产一区二区三区在线播放无 | 激情xxxx| 欧美成人一区二区 | 亚洲av无码一区二区三区网址 | 懂色av蜜臂av粉嫩av | 极品少妇视频 | 激情全身裸吻胸 | 他趴在我两腿中间添得好爽在线看 | 精品人妻伦九区久久aaa片 | 日本手机看片 |