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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java --- 基础学习Ⅰ

發(fā)布時(shí)間:2023/12/10 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java --- 基础学习Ⅰ 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一章 開(kāi)發(fā)前言

位、字節(jié)

  • 位(bit): 一個(gè)數(shù)字0或一個(gè)數(shù)字1,代表一位

  • 字節(jié)(Byte): 每逢8位是一個(gè)字節(jié),這時(shí)數(shù)據(jù)存儲(chǔ)的最小單位

1 Byte = 8 bit

1 KB = 1024 Byte

1 MB = 1024 KB

1 GB = 1024 MB

1 TB = 1024 GB

1 PB = 1024 TB

MS-DOS(Microsoft Disk Operating System)

第二章 Java語(yǔ)言開(kāi)發(fā)環(huán)境搭建

2.1 Java虛擬機(jī)–JVM

  • JVM(Java Virtual Machine): Java虛擬機(jī),簡(jiǎn)稱(chēng)JVM,是運(yùn)行所有Java程序的假想計(jì)算機(jī),是Java程序的運(yùn)行環(huán)境,是Java最具吸引力的特性之一。我們編寫(xiě)的Java代碼, 都運(yùn)行在JVM之上
  • 跨平臺(tái): 任何軟件的運(yùn)行,都必須要運(yùn)行在操作系統(tǒng)之上,而我們使用Java編寫(xiě)的軟件可以運(yùn)行在任何的操作系統(tǒng)上,這個(gè)特性成為Java語(yǔ)言的跨平臺(tái)性。該特性是由JVM實(shí)現(xiàn)的,我們編寫(xiě)的程序運(yùn)行在JVM上,而JVM運(yùn)行在操作系統(tǒng)上
Java程序Windows下的JVMLinux下的JVMMac下的JVM

如圖所示,Java的虛擬機(jī)本身不具備跨平臺(tái)功能的,每個(gè)操作系統(tǒng)下都有不同版本的虛擬機(jī)

2.2 JRE和JDK

  • JRE(Java Runtime Environment): 是Java程序的運(yùn)行時(shí)環(huán)境,保護(hù)JVM和運(yùn)行時(shí)所需要的核心類(lèi)庫(kù)
  • JDK(Java Development Kit): 是Java程序開(kāi)發(fā)工具包,保護(hù)jre和開(kāi)發(fā)人員使用的工具

我們想運(yùn)行已有的Java程序,那么只需安裝JRE即可

我們想開(kāi)發(fā)一個(gè)全新的Java程序,那么必須安裝JDK

JRE = “運(yùn)行類(lèi)庫(kù)” + “JVM”

JDK = “編譯器等開(kāi)發(fā)工具” + JRE

2.3 安裝步驟

  • 下載Java JDK 11 Windows 11.0.5

2.4 目錄說(shuō)明

安裝好Java之后,在安裝路徑D:\develop\Java\會(huì)生成一些文件夾.下面說(shuō)明各個(gè)文件夾的作用:

  • bin: 存放了JDK的各種工具命令。(javac和java就放在這個(gè)目錄)
  • conf: 存放了JDK的相關(guān)配置文件
  • include: 存放了一些平臺(tái)特定的頭文件
  • jmods: 該路徑下存放了JDK的各種模塊
  • legal: 存放了JDK各模塊的授權(quán)文檔
  • lib: 存放路JDK工具的一些補(bǔ)充JAD包

第三章 常見(jiàn)語(yǔ)法

1 常用DOS命令

操作說(shuō)明
盤(pán)符名稱(chēng)盤(pán)符切換。 E: 回車(chē),表示切換到E盤(pán)
dir查看當(dāng)前路徑下的內(nèi)容
cd 目錄進(jìn)入單級(jí)目錄. cd marron
cd…回退到上一級(jí)
cd 目錄1\目錄2\ …進(jìn)入多級(jí)目錄: cd itheima\JavaSE
cls清屏幕
exit退出命令提示符窗口

2 path 環(huán)境變量的配置

開(kāi)發(fā)Java程序,需要使用JDK提供的開(kāi)發(fā)工具,而這些工具在JDK的安裝目錄的bin目錄下.

為了在開(kāi)發(fā)Java程序的時(shí)候,能夠方便的使用javac和java這些命令,我們需要配置Path環(huán)境變量

3. HelloWorld案例

3.1 Java程序開(kāi)發(fā)運(yùn)行流程

開(kāi)發(fā)Java程序,需要三個(gè)步驟: 編寫(xiě)程序,編譯程序,運(yùn)行程序

3.2 Hello World案例的編寫(xiě)

  • 新建文本文檔文件,修改為HelloWorld.java
  • 用記事本打開(kāi)HelloWorld.java文件,書(shū)寫(xiě)程序內(nèi)容
  • public class HelloWorld{public static void main(String[] args){System.out.println('HelloWorld')} }
    • 編譯
    $ javac HelloWorld.java
    • 運(yùn)行
    $ java HelloWolrd

    4. 略

    5. Notepad軟件的安裝和使用(略)

    6. 注釋(略)

    • 單行注釋: //
    • 多行注釋: /**/
    • 文檔注釋: /** */

    7. 關(guān)鍵字

    • 關(guān)鍵字的特定:

      • 關(guān)鍵字的字母全部是小寫(xiě)

      • 常用的代碼編輯器,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記,非常直觀

        • public class HelloWolrd{/*這是main方法main方法是程序的入口方法,代碼的執(zhí)行是從main方法開(kāi)始的*/public static void main(String[] args){System.out.println('marron')} }

    8. 常量

    • 常量的概述: 在程序運(yùn)行過(guò)程中,其值不可以發(fā)生改變的量

    • 常量的分類(lèi):

      • 常量類(lèi)型說(shuō)明舉例
        字符串常用雙引號(hào)括起來(lái)的內(nèi)容“HelloWorld”
        整數(shù)常量不帶小數(shù)的數(shù)字666,-88
        小數(shù)常量帶小數(shù)的數(shù)字13.14,-5.21
        字符常量用單引號(hào)括起來(lái)的內(nèi)容‘A’,‘0’,’,‘我’
        布爾常量布爾值,表示真假只有兩個(gè)值: true, false
        空常量一個(gè)特殊的值,空值值是null

    9. 數(shù)據(jù)類(lèi)型

    • 計(jì)算機(jī)的存儲(chǔ)單元: 我們知道就算機(jī)是可以用來(lái)存儲(chǔ)數(shù)據(jù)的,但是無(wú)論是內(nèi)存還是硬盤(pán),計(jì)算機(jī)設(shè)備的最小信息單元叫"位(bit)",我們又稱(chēng)之為"比特位",通常用小寫(xiě)的字母"b"表示。而計(jì)算機(jī)中最小的存儲(chǔ)單元叫"字節(jié)(byte)",通常用大寫(xiě)字母"B"表示,字節(jié)是由連續(xù)的8個(gè)位組成

    • Java語(yǔ)言是強(qiáng)語(yǔ)言類(lèi)型,對(duì)于每一種數(shù)據(jù)都給出了明確的數(shù)據(jù)類(lèi)型,不同的數(shù)據(jù)類(lèi)型也分配了不同的內(nèi)存空間,所以它們表示的數(shù)據(jù)大小也是不一樣的.

      • 數(shù)據(jù)類(lèi)型:
        • 基本數(shù)據(jù)類(lèi)型:
          • 數(shù)值型:
            • 整數(shù)(byte,short,int,long)
            • 浮點(diǎn)數(shù)(float, double)
            • 字符(char)
          • 非數(shù)值型
        • 引用數(shù)據(jù)類(lèi)型:
          • 類(lèi)(class)
          • 接口(interface)
          • 數(shù)組([])
    • 數(shù)據(jù)類(lèi)型內(nèi)存占用和取值范圍

    數(shù)據(jù)類(lèi)型關(guān)鍵字內(nèi)存占用取值范圍
    整數(shù)byte1-128~127
    整數(shù)short2-32768~32767
    整數(shù)int4-2^31 ~ 2^31 -1
    整數(shù)long8-2^63 ~ 2^63 -1
    浮點(diǎn)數(shù)float4負(fù)數(shù): -3.402823E + 38 ~ -1.401298E -45; 正數(shù): 1.401298E - 45 到 3.402823E + 38
    浮點(diǎn)數(shù)double8負(fù)數(shù): -1.797693E + 308 ~ -4.9000000E - 324; 正數(shù): 4.900000000E - 324 到1797693E + 308
    字符char20~65535
    布爾boolean1true, false

    10. 變量

    • 變量: 在程序運(yùn)行過(guò)程中,其值可以發(fā)生改變的量。 從本質(zhì)上講: 變量是內(nèi)存中的一小塊區(qū)域

    • 格式: 數(shù)據(jù)類(lèi)型 變量名 = 變量值; (int a = 10)

    • 變量使用的注意事項(xiàng):

      • VariableDemo02.java:30: 錯(cuò)誤: 整數(shù)太大: 告訴計(jì)算機(jī)右邊的值是long類(lèi)型即可
    long l = 10000000000L;
    • VariableDemo02.java:35: 錯(cuò)誤: 不兼容的類(lèi)型: 從double轉(zhuǎn)換到float可能會(huì)有損失: 告訴計(jì)算機(jī)右邊的是float類(lèi)型即可
    float f = 13.14F; System.out.println(f);

    11. 標(biāo)識(shí)符

    • 標(biāo)識(shí)符: 就是給類(lèi),方法,變量等起名字的符號(hào)
    • 標(biāo)識(shí)符定義規(guī)則:
      • 數(shù)字、字母、下劃線(_)和美元符($)組成
      • 不能以數(shù)字開(kāi)頭
      • 不能是關(guān)鍵字
      • 區(qū)分關(guān)鍵字
    • 常見(jiàn)命名約定:
      • 小駝峰命名法:
        • 標(biāo)識(shí)符是一個(gè)單詞的時(shí)候,首字母開(kāi)頭小寫(xiě), name
        • 標(biāo)識(shí)符是多個(gè)單詞時(shí),第一個(gè)字母開(kāi)頭小寫(xiě),其他單詞首字母大寫(xiě), firstName
      • 大駝峰命名法:
        • 標(biāo)識(shí)符是一個(gè)單詞的時(shí)候,首字母開(kāi)頭大寫(xiě), Student
        • 標(biāo)識(shí)符是多個(gè)單詞時(shí),每個(gè)單詞首字母大寫(xiě), GoodStudent

    12. 類(lèi)型轉(zhuǎn)換

    • 自帶類(lèi)型轉(zhuǎn)換:
      • 把一個(gè)數(shù)據(jù)范圍小的數(shù)值或者變量賦值給另一個(gè)表示數(shù)據(jù)范圍大的變量: double d = 10
      • 下面是表示數(shù)據(jù)范圍從小到大圖
    byteshortcharintlongfloatdouble
    • 常見(jiàn)報(bào)錯(cuò):

      • ConversionDemo.java:15: 錯(cuò)誤: 不兼容的類(lèi)型: 從byte轉(zhuǎn)換到char可能會(huì)有損失: byte無(wú)法轉(zhuǎn)換位char
    • 強(qiáng)制類(lèi)型轉(zhuǎn)換: 把一個(gè)表示數(shù)據(jù)范圍大的數(shù)值或者變量賦值給另一個(gè)表示數(shù)據(jù)范圍小的變量

      • 格式: 目標(biāo)數(shù)據(jù)類(lèi)型 變量名 = (目標(biāo)數(shù)據(jù)類(lèi)型)值或者變量
        • int k = (int)88.88
        • ConversionDemo.java:18: 錯(cuò)誤: 不兼容的類(lèi)型: 從double轉(zhuǎn)換到int可能會(huì)有損失: int k = 88.88

    13. 運(yùn)算符

    • 運(yùn)算符: 對(duì)常量或者變量進(jìn)行操作的符號(hào)

    • 表達(dá)式: 用運(yùn)算符把常量或者變量連接起來(lái)符合java語(yǔ)法的式子就可以成為表達(dá)式.不同運(yùn)算符連接的表達(dá)式體現(xiàn)的是不同類(lèi)型的表達(dá)式.

    • 舉例子:

      • int a = 10; int b = 20; int c = a + b;
      • +: 是運(yùn)算符,并且是算數(shù)運(yùn)算符

      • a+b: 是表達(dá)式,由于+是算術(shù)運(yùn)算符,所以這個(gè)表達(dá)式叫算數(shù)表達(dá)式

    字符的"+"操作

    拿字符在計(jì)算機(jī)底層對(duì)應(yīng)的數(shù)值來(lái)進(jìn)行計(jì)算的

    • ‘A’ -> 65 (A-Z是連續(xù)的)
    • ‘a(chǎn)’ -> 97 (a-z是連續(xù)的)
    • ‘0’ -> 48 (0-9是連續(xù)的)

    算數(shù)表達(dá)式中包含多個(gè)基本數(shù)據(jù)類(lèi)型的值的時(shí)候,整個(gè)算數(shù)表達(dá)式的類(lèi)型會(huì)自動(dòng)進(jìn)行提升,提升規(guī)則:

    • byte類(lèi)型,short類(lèi)型和char類(lèi)型將被提升到int類(lèi)型
    • 整個(gè)表達(dá)式的類(lèi)型自動(dòng)提升到表達(dá)式中最高等級(jí)操作數(shù)同樣的類(lèi)型,
      • 等級(jí)順序: byte,short,char -> int -> ling -> float -> double

    [報(bào)錯(cuò)]:

    OperatorDemo02.java:13: 錯(cuò)誤: 不兼容的類(lèi)型: 從int轉(zhuǎn)換到char可能會(huì)有損失:

    public class OperatorDemo02{public static void main(String[] args){int i = 10;char c = 'A';char ch = i + c;System.out.println(ch)} }

    字符串的"+"操作

    public class OperatorDemo03{public static void main(String[] args){System.out.println("Marron" + "Hao"); // MarronHaoSystem.out.println("Marron" + 666); // Marron666System.out.println(666 + "Marron"); // 666MarronSystem.out.println("Marron" + 6 + 66); // Marron666System.out.println(1+ 99 + "年Marron"); // 100年Marron} }

    當(dāng)"+“操作中出現(xiàn)字符串時(shí),這個(gè)”+"是字符串連接符,而不是算數(shù)運(yùn)算符

    賦值運(yùn)算符

    符號(hào)作用說(shuō)明
    =賦值a=10, 將10賦值給變量a
    +=加后賦值a+=b, 將a+b的值給a
    -=減后賦值a+=b, 將a-b的值給a
    *=乘后賦值a*=b, 將a*b的值給a
    /=除后賦值a/=b, 將a?b的商給a
    %=取余后賦值a%=b, 將a?b的余數(shù)給a
    public class OperatorDemo{public static void main(String[] args){// 把10賦值給int類(lèi)型的變量i;int i = 10;System.out.println("i: " + i);// += 把左邊和右邊的數(shù)據(jù)做加法操作,結(jié)果賦值給左邊i += 20;System.out.println("i: " + i);// 注意: 擴(kuò)展的賦值運(yùn)算符底層隱含了強(qiáng)制類(lèi)型轉(zhuǎn)換short s = 10;s += 20;System.out.println("s: " + s);} }

    擴(kuò)展的賦值運(yùn)算符,隱含了強(qiáng)制類(lèi)型轉(zhuǎn)換

    自增自減運(yùn)算符

    符號(hào)作用說(shuō)明
    ++自增變量的值加1
    自減變量的值減1
    public class OperatorDemo{public static void main(String[] args){// 定義變量int i = 10;System.out.println("i: " + i); // 10i++;System.out.println("i: " + i); // 11} }

    關(guān)系運(yùn)算符

    符號(hào)說(shuō)明
    ==a==b, 判斷a和b的值是否相等,成立為true,不成立為false
    !=a!=b, 判斷a和b的值是否不相等,成立為true,不成立為false
    >a>b, 判斷a是否大于b,成立為true,不成立為false
    >=a>=b, 判斷a是否大于或等于b,成立為true,不成立為false
    <a<b, 判斷a是否小于b,成立為true,不成立為false
    <=a<=b, 判斷a是否小于或等于b,成立為true,不成立為false

    邏輯運(yùn)算符

    符號(hào)作用說(shuō)明
    &邏輯與a&b, a和b都是true,結(jié)果為true,否則為false
    |邏輯或a|b, a和b都是false,結(jié)果為false,否則為true
    ^邏輯異或a^b, a和b不同為true,否則為false
    !邏輯非!a, a為true時(shí),結(jié)果為false;a為false時(shí),結(jié)果為true
    /*邏輯運(yùn)算符 */ public class OperatorDemo01{public static void main(String[] args){// 定義變量int i = 10;int j = 20;int k = 30;// & 有false則falseSystem.out.println( (i>j) & (i>k)); // false & false} }

    [短路邏輯運(yùn)算符]

    符號(hào)作用說(shuō)明
    &&短路與作用與&相同,但有短路效果
    ||短路或作用與|相同,但有短路效果

    注意事項(xiàng):

    • 邏輯運(yùn)算符,左右兩邊必然執(zhí)行
    • 短路運(yùn)算符,只有當(dāng)前提條件滿足了后面的才執(zhí)行.

    三元運(yùn)算符

    • 格式: 關(guān)系表達(dá)式? 表達(dá)式1 : 表達(dá)式2

    【案例1】: 動(dòng)物園里有兩只老虎,已知兩只老虎的體重分別為180kg、200kg,請(qǐng)用程序?qū)崿F(xiàn)判斷兩只老虎的體重是否相同.

    public class OperatorTest01{public static void main(String[] args){int weight = 180;int weight = 200;boolean b = weight1 == weight2? true: false;System.out.println("b: " + b);} }

    【案例2】: 一座寺廟里住著三個(gè)和尚,已知他們的身高分別為150cm、210cm、165cm,請(qǐng)用程序?qū)崿F(xiàn)獲取者三個(gè)和尚的最高身高

    public class OperatorTest02{public static void main(String[] args){int height1 = 150;int height2 = 210;int height3 = 165;int max1 = height1 > height2 ? height1 : height2;int max = max1 > height3 ? max1 : height3;System.out.println("max: " + max);} }

    14. 數(shù)據(jù)輸入

    scanner使用的基本步驟

    import java.util.Scanner;public class ScannerDemo{public static void main (String[] args){// 創(chuàng)建對(duì)象Scanner sc = new Scanner(System.in);// 接收數(shù)據(jù)int x = sc.nextInt();System.out.println("x: " + x);} }

    【栗子1】: 一個(gè)寺廟住著三個(gè)和尚,他們的身高必須經(jīng)過(guò)測(cè)量得出,請(qǐng)用程序?qū)崿F(xiàn)獲取這三個(gè)和尚的最高身高

    import java.util.Scanner;public class ScannerTest{public static void main(String[] args){Scanner sc = new Scanner(System.in);int height1 = sc.nextInt();int height2 = sc.nextInt();int height3 = sc.nextInt();int tmpHeight = height1 > height2 ? height1 : height2;int maxHeight = tmpHeight > height3 ? tmpHeight : height3;System.out.println("maxHeight: " + maxHeight);} }

    15. 分支語(yǔ)句

    順序結(jié)構(gòu)

    順序結(jié)構(gòu): 是程序中最簡(jiǎn)單最基本的流程控制,沒(méi)有特定的語(yǔ)法結(jié)構(gòu),按照代碼的先后順序,依次執(zhí)行,程序中大多數(shù)的代碼都是這樣執(zhí)行的

    /*順序結(jié)構(gòu) */ public class OrderDemo {public static void main(String[] args){System.out.println("開(kāi)始");System.out.println("語(yǔ)句A");System.out.println("語(yǔ)句B");System.out.println("語(yǔ)句C");System.out.println("結(jié)束");} }

    if 語(yǔ)句

    • if語(yǔ)句格式1:
    /*格式:if(關(guān)系表達(dá)式){語(yǔ)句體;} */

    執(zhí)行流程:

  • 首先巨酸關(guān)系表達(dá)式的值
  • 如果關(guān)系表達(dá)式的值為true就執(zhí)行語(yǔ)句體
  • 如果關(guān)系表達(dá)式的值為false就不執(zhí)行語(yǔ)句體
  • 繼續(xù)執(zhí)行后面的語(yǔ)句內(nèi)容
  • public class IfDemo{public static void main(String[] args){System.out.println("開(kāi)始");// 定義兩個(gè)變量int a = 10;int b = 20;// 需求: 判斷a和b的值是否相等,如果相等,就在控制臺(tái)輸出: a等于b if(a == b){System.out.println("a等于b");}// 需求: 判斷a和c的值是否相等,如果相等,就在控制臺(tái)輸出: a等于cif(a == c) {System.out.println("a等于c");}System.out.println("結(jié)束");} }
    • if語(yǔ)句格式2:
    /*格式:if(關(guān)系表達(dá)式){語(yǔ)句體1;} else {語(yǔ)句體2;} */

    需求: 判斷輸入的a是否大于b.是在控制臺(tái)輸出"a大于b",否則輸出"a不大于b"

    import java.util.Scanner; public class IfDemo02{public static void main (String[] args){System.out.println("開(kāi)始");Scanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();if(a > b){System.out.println("a大于b")} else {System.out.println("a不大于b")}System.out.println("結(jié)束");} }

    需求: 任意給出一個(gè)整數(shù),請(qǐng)用程序?qū)崿F(xiàn)判斷該整數(shù)是奇數(shù)還是偶數(shù),并在控制臺(tái)輸出該整數(shù)是奇數(shù)還是偶數(shù).

    import java.util.Scanner; public class IfDemo03{public static void main(String[] args){System.out.println("開(kāi)始");Scanner sc = new Scanner(System.in);int num = sc.nextInt();if(num % 2 == 0){System.out.println("您輸入的是偶數(shù)");} else {System.out.println("您輸入的是奇數(shù)");}System.out.println("結(jié)束"); } }
    • if語(yǔ)句格式2:
    /*格式:if(關(guān)系表達(dá)式1){語(yǔ)句體1;} else if(關(guān)系表達(dá)式2){語(yǔ)句體2;}...else {語(yǔ)句體n+1;} */

    需求: 輸入整數(shù)17,輸出星期一星期天

    import java.util.Scanner; public class IfDemo04{public static void main(String[] args){System.out.println("開(kāi)始");Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入一個(gè)星期數(shù)(1-7)");int day = sc.nextInt();if(day == 1){System.out.println("星期一");} else if (day == 2) {System.out.println("星期二");} else if (day == 3) {System.out.println("星期三");} else if (day == 4) {System.out.println("星期四");} else if (day == 5) {System.out.println("星期五");} else if (day == 6) {System.out.println("星期六");} else if (day == 7) {System.out.println("星期天");}System.out.println("結(jié)束");} }

    switch語(yǔ)句

    /*格式switch(表達(dá)式){case 值1:語(yǔ)句體1;break;case 值2:語(yǔ)句體2;break;...default:語(yǔ)句體n+1;[break;]} */

    需求: 一年有12個(gè)月,分別屬于春夏秋冬4個(gè)季節(jié),鍵盤(pán)錄入一個(gè)月份,請(qǐng)用程序?qū)崿F(xiàn)判斷該月份屬于哪個(gè)季節(jié),并輸出

    import java.util.Scanner; public class SwitchTest{public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入一個(gè)月份: ");int month = sc.nextInt();switch(month){case 12:case 1:case 2:System.out.println("冬季");break;case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;default:System.out.println("您輸入的月份錯(cuò)誤");break;}} }

    16. 循環(huán)語(yǔ)句

    for 循環(huán)語(yǔ)句

    /*格式;for(初始化語(yǔ)句; 條件判斷語(yǔ)句; 條件控制語(yǔ)句){循環(huán)體語(yǔ)句;} */

    需求1: 輸出5次"HelloWorld"

    public class ForDemo{public static void main(String[] args){for(int i = 0; i < 5; i++){System.out.println("HelloWorld");}} }

    需求2: 在控制臺(tái)輸出所有的"水仙花數(shù)"

    public class ForTest{public static void main (String[] args){for(int i = 100; i <=999; i++){// 個(gè)位int units = i % 10;// 十位int tens = (i /10) % 10;// 百位int hundreds = i / 10/10 % 10;if(i == units * units * units + tens * tens * tens + hundreds * hundreds *hundreds ){System.out.println(i);}} } }

    while 循環(huán)語(yǔ)句

    /*格式:while(條件判斷語(yǔ)句){循環(huán)體語(yǔ)句;條件控制語(yǔ)句;} */

    需求: 世界最高山峰珠穆朗瑪峰(8844.43米 = 8844430毫米), 假如我有一張足夠大的紙,它的初始厚度是0.1毫米.請(qǐng)問(wèn),折疊多少次,可以超過(guò)珠穆朗瑪峰的高度?

    public class whileTest{public static void main(String[] args){double maxHeight = 8844430;double tmpHeight = 0.1;int count = 0;while(tmpHeight < maxHeight && count < 9999){tmpHeight *= 2;count++;}System.out.println("折疊: " + count + "次后,高度為: " + tmpHeight);} }

    do…while循環(huán)語(yǔ)句

    /*基本格式:do{循環(huán)體語(yǔ)句;} while(條件判斷語(yǔ)句); */

    17. 跳轉(zhuǎn)控制語(yǔ)句

    • continue: 用在循環(huán)中,基于條件控制,跳過(guò)某次循環(huán)體內(nèi)容的執(zhí)行,繼續(xù)下次一的執(zhí)行
    • break: 用在循環(huán)體中,基于條件控制,終止循環(huán)體內(nèi)容的執(zhí)行,也就是說(shuō)結(jié)束當(dāng)前的整個(gè)循環(huán)
    public class ControlDemo{public static void main(String[] args){for(int i = 1; i<=5; i++){if(i%2 == 0){continue;// break;}System.out.println(i);}} }

    18. 循環(huán)嵌套

    public class ForForDemo{public static void main(String[] args){for(int hour = 0; hour<24; hour++){for(int minute = 0; minute<60; minute++){System.out.println(hour + "時(shí)" + minute + "分");}System.out.println("---------------");}} }

    19. Random

    用于產(chǎn)生一個(gè)隨機(jī)數(shù)

    import java.util.Random; Random r = new Random(); int number = r.nextInt(10); /*產(chǎn)生10個(gè)隨機(jī)數(shù) */ import java.util.Random; public class RandomDemo{public static void main(String[] args){Random r = new Random();for(int i = 0; i< 10; i++){int number = r.nextInt(10);System.out.println("number: " + number);}// 生成一個(gè) 0~100之間的隨機(jī)數(shù)(包含0, 不包含100)int x = r.nextInt(100);} }

    【栗子】: 猜數(shù)字: 使用Random函數(shù)生成一個(gè)1~100之間的數(shù),然后等待玩家輸入數(shù)字.若比生成的大則提示猜大了,若小則提示猜小,否則提示"bingo"

    import java.util.Random; import java.util.Scanner; public class RandomTest{public static void main(String[] args){Random r = new Random();Scanner sc = new Scanner(System.in);// 生成隨機(jī)數(shù)int num = r.nextInt(100) + 1;while(true){System.out.println("請(qǐng)輸入1~100");int guess = sc.nextInt();if(guess > num) {System.out.println("猜大了");} else if (guess < num){System.out.println("猜小了");} else {System.out.println("恭喜你猜中了");break;}}} }

    第四章 IDEA概述和安裝

    IDEA全稱(chēng)IntelliJ IDEA是Java語(yǔ)言開(kāi)發(fā)的集成環(huán)境,它是業(yè)界公認(rèn)的目前用于Java程序開(kāi)發(fā)最好的工具.

    • 集成環(huán)境: 把代碼編寫(xiě),編譯,執(zhí)行,調(diào)試等多種功能綜合到一起的開(kāi)發(fā)工具

    • IDEA的下載和安裝:

      • 下載: https://www.jetbrains.com/idea/
      • 安裝: 傻瓜式安裝,建議修改安裝路徑

    IDEA中創(chuàng)建一個(gè)項(xiàng)目

  • 創(chuàng)建一個(gè)空項(xiàng)目(JavaSE_Code)
  • 創(chuàng)建一個(gè)新模塊(idea_test)
  • 在idea_test模塊下的src中創(chuàng)建一個(gè)包(com.marron)
  • 在com.marron包下新建一個(gè)類(lèi)(HelloWorld)
  • 在HelloWorld類(lèi)中編寫(xiě)代碼
  • 在idea中執(zhí)行程序
  • IDEA中的項(xiàng)目結(jié)構(gòu)

    • 在IDEA中是以項(xiàng)目為單位管理應(yīng)用程序的.
    • 一個(gè)項(xiàng)目包含多個(gè)模塊
    • 一個(gè)模塊包含多個(gè)包
    • 一個(gè)包包含多個(gè)類(lèi)
    項(xiàng)目Project模塊1模塊2模塊3包1包2XxxDemo01.javaXxxDemo02.java

    IDEA中常用的快捷鍵

    • 格式化: ‘Ctrl + alt + L’
    • 注釋: ‘ctrl + /’
    • 行移動(dòng): ‘a(chǎn)lt + shift + 上下箭頭’
    • 復(fù)制行: ‘ctrl + D’

    IDEA中模塊操作

    • 新建模塊:

      • File -> Project Structure -> New Module -> +號(hào) -> New Module ->選則JDK -> 修改模塊名
    • 刪除模塊:

      • 選擇需要?jiǎng)h除的模塊 -> Remove Module
      • 以上刪除,模塊只是在IDEA中不顯示,在硬盤(pán)上還是存在的.需要到模塊對(duì)應(yīng)的目錄刪除
    • 導(dǎo)入模塊:

      • File -> Project Structor -> +號(hào) -> Import Module ->

    第五章 數(shù)組

    數(shù)組的定義格式

    數(shù)組: 是一種用于存儲(chǔ)多個(gè)相同類(lèi)型數(shù)據(jù)的存儲(chǔ)模型

    /*格式1:數(shù)據(jù)類(lèi)型[] 變量名int[] arr解讀: 定義了一個(gè)int類(lèi)型的數(shù)據(jù),數(shù)組名是arr */ /*格式2:數(shù)據(jù)類(lèi)型 變量名[]int arr[]解讀: 定義了一個(gè)int類(lèi)型的變量,變量名是arr數(shù)組 */

    數(shù)組初始化之動(dòng)態(tài)初始化

    Java中的數(shù)組必須先初始化,然后才能使用

    所謂初始化: 就是為數(shù)組中的數(shù)組元素分配內(nèi)存空間,并為每個(gè)數(shù)組元素賦值

    動(dòng)態(tài)初始化

    初始化時(shí)只指定數(shù)組長(zhǎng)度,由系統(tǒng)為數(shù)組分配初始值

    • 格式: 數(shù)據(jù)類(lèi)型[] 變量名 = new 數(shù)組類(lèi)型[數(shù)組長(zhǎng)度]
    • 范例: int[] arr = new int[3]
    public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];// 輸出數(shù)組名System.out.println(arr); // [I@58ceff1System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);} }

    內(nèi)存分配

    Java程序在運(yùn)行時(shí),需要在內(nèi)存中分配空間。為了提高運(yùn)算效率,就對(duì)空間進(jìn)行了不同區(qū)域的劃分,因?yàn)槊恳黄瑓^(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存管理方式.看下面一段代碼:

    int[] arr = new int[3]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);

    【棧內(nèi)存】: 存儲(chǔ)局部變量定義在方法中的變量,例如arr使用完畢,立即消失

    【堆內(nèi)存】: 存儲(chǔ)new出來(lái)的內(nèi)容(實(shí)體、對(duì)象)

    數(shù)組在初始化時(shí),會(huì)為存儲(chǔ)空間添加默認(rèn)值:

    • 整數(shù): 默認(rèn)值0
    • 浮點(diǎn)數(shù): 默認(rèn)值0.0
    • 布爾值: 默認(rèn)值是false
    • 字符: 默認(rèn)值是空字符
    • 引用數(shù)據(jù)類(lèi)型: 默認(rèn)值是null

    每一個(gè)new出來(lái)的東西都有一個(gè)地址值,使用完畢,會(huì)在垃圾回收器空閑時(shí)被回收

    數(shù)組內(nèi)存圖(單個(gè)數(shù)組)

    public class ArrarTest01{public static void main(String[] args){// 定義一個(gè)數(shù)組int[] arr = new int[3];// 輸出數(shù)組名及元素System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);// 給數(shù)組中的元素賦值arr[0] = 100;arr[2] = 200;// 再次輸出數(shù)組名及元素System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);} }

    數(shù)組內(nèi)存圖(多個(gè)數(shù)組)

    public class ArrayTest02{public static void main(String[] args){// 定義兩個(gè)數(shù)組int[] arr = new int[2];int[] arr2 = new int[3];// 分別輸出數(shù)組名及元素System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr2);System.out.println(arr[0]);System.out.println(arr[2]);// 然后分別給數(shù)組中的元素賦值arr[0] = 100;arr2[0] = 200;arr2[2] = 300;// 分別再次輸出System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr2);System.out.println(arr[0]);System.out.println(arr[2]);} }

    數(shù)組內(nèi)存圖(多個(gè)數(shù)組指向相同)

    public class ArrayTest03{public static void main(String[] args){// 定義一個(gè)數(shù)組int[] arr = new int[3];arr[0] = 100;arr[1] = 200;arr[2] = 300;System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);// 定義第二個(gè)數(shù)組指向第一個(gè)數(shù)組int[] arr2 = arr;arr2[0] = 111;arr2[1] = 222;arr2[2] = 333;// 輸出兩個(gè)數(shù)組的名及元素System.out.println(arr);System.out.println(arr[0]);System.out.println(arr2);System.out.println(arr2[0]);} }

    數(shù)組初始化之靜態(tài)初始化

    靜態(tài)初始化: 初始化時(shí)指定每個(gè)數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長(zhǎng)度

    int[] arr= new int[]{1,2,3};// 簡(jiǎn)寫(xiě) int[] arr= {1,2,3};

    數(shù)組操作的兩個(gè)常見(jiàn)小問(wèn)題

    索引越界

    訪問(wèn)了數(shù)組中不存在的索引對(duì)應(yīng)的元素,造成索引越界問(wèn)題

    int[] arr = new int[3]; System.out.println(arr[3]); // 數(shù)組越界

    空指針異常

    訪問(wèn)的數(shù)組已經(jīng)不再指向堆內(nèi)存的數(shù)據(jù),造成空指針異常

    int[] arr = new int[3]; arr = null; System.out.println(arr[0]);

    數(shù)組常見(jiàn)操作

    遍歷

    public class ArrayTest01{public static void main(String[] args){int[] arr = {11, 22, 33, 44, 55};for(int i = 0;i < arr.length; i++){System.out.println(arr[i]);}} }

    獲取最值

    public class ArrayTest02{public static void main(String[] args){int[] arr = {12, 45, 98, 73, 60};int max = arr[0];for(int i = 1; i< arr.length; i++){if(arr[i] > max){max = arr[i];} }System.out.println(max);} }

    第六章 方法

    什么是方法

    方法是將具有獨(dú)立功能的代碼塊組織成為一個(gè)整體,使其具有特殊功能的代碼集

    注意:

    • 方法必須先創(chuàng)建才可以使用,該過(guò)程成為方法定義
    • 方法創(chuàng)建后并不是直接運(yùn)行的,需要手動(dòng)使用后才執(zhí)行,該過(guò)程成為方法調(diào)用.

    方法的定義和調(diào)用

    public class MethodDemo{public static void main(String[] args){isEvenNumber();}// 需求: 定義一個(gè)方法,在方法中定義一個(gè)變量,判斷該數(shù)據(jù)是否是偶數(shù)public static void isEvenNumber(){// 定義變量int number = 10;if(number %2 == 0){System.out.println("true")} else {System.out.println("false");}} }

    流程梳理:

    • 首先會(huì)加載main方法中的代碼塊
    • 當(dāng)遇到isEventNumber時(shí),會(huì)去尋找isEvenNumber方法,并進(jìn)入到該方法
    • 執(zhí)行完isEventNumber之后,會(huì)返回執(zhí)行環(huán)境給main函數(shù)

    【栗子】: 設(shè)計(jì)一個(gè)方法,用于打印兩個(gè)數(shù)中的較大數(shù)

    public class MethodTest{public static void main(String[] args){printMax(10, 20);}public static void printMax(int x, int y){if(x > y){System.out.println(x);} else {System.out.println(y);}} }

    帶參數(shù)方法的定義和調(diào)用

    方法定義時(shí),注意:

    • 參數(shù)中的數(shù)據(jù)類(lèi)型與變量名都不能缺少,缺少任意一個(gè)程序?qū)?bào)錯(cuò)
    • 多個(gè)參數(shù)之間使用逗號(hào)分隔.

    【栗子】: 定義一個(gè)方法,接收一個(gè)參數(shù),判斷這個(gè)數(shù)是否為偶數(shù)

    public class MehtodTest01{public static void main(String[] args){isEvent(15);}public static void isEvent(int x){if(x % 2 == 0){System.out.println(true);} else {System.out.println(false);}} }

    方法的注意事項(xiàng)

    • 方法不能嵌套定義
    // 錯(cuò)誤的演示 public static void methodOne(){// 代碼塊1public static void methodTwo(){// 代碼塊2} }// 正確的定義 public static void methodOne(){// 代碼塊1 } public static void methodTwo(){// 代碼塊2 }
    • void表示無(wú)返回值,可以省略return,也可以單獨(dú)的書(shū)寫(xiě)return,后面不加數(shù)據(jù)
    public static void methodDemo{// 代碼片段,省略return }// 或 public static void methodDemo{// 代碼片段return; }

    方法的通用格式

    /*public static 返回值類(lèi)型 方法名(參數(shù)){方法體;return 數(shù)據(jù);} */

    方法重載

    public class MethodDemo{public static int sum(int a, int b){return a + b;}public static int sum(int a, int b, int c) {return a + b + c;} }

    方法重載: 同一個(gè)類(lèi)中定義的多個(gè)方法之間的關(guān)系,滿足下列條件的多個(gè)方法相互構(gòu)成重載

    • 多個(gè)方法在同一個(gè)類(lèi)中
    • 多個(gè)方法具有相同的方法名
    • 多個(gè)方法的參數(shù)不同(數(shù)量或類(lèi)型不同)

    【方法重載的特點(diǎn)】

    • 重載僅對(duì)應(yīng)方法的定義,與方法的調(diào)用無(wú)關(guān),調(diào)用方式參照標(biāo)準(zhǔn)格式
    • 重載僅針對(duì)同一個(gè)類(lèi)中方法的名稱(chēng)與參數(shù)進(jìn)行識(shí)別,與返回值無(wú)關(guān),換句話說(shuō)不能通過(guò)返回值來(lái)判定兩個(gè)方法是否相互構(gòu)成重載.
    // 以下兩個(gè)未構(gòu)成重載 public class MethodDemo{public static void fn(int a) {// 方法體}public static int fn(int a) {// 方法體} }

    【栗子】: 使用方法重載的思想,設(shè)計(jì)比較兩個(gè)整數(shù)是否相同的方法,兼容全整數(shù)類(lèi)型(byte, short, int, long)

    public class MethodTest01{public static void main(String[] args){System.out.println(compare(10, 20));System.out.println(compare((byte) 10, (byte) 20));System.out.println(compare((short) 10,(short) 20));System.out.println(compare(10L, 20L));}public static boolean compare(int a, int b){return a == b;}public static boolean compare(byte a, byte b){return a == b;}public static boolean compare(short a, short b){return a == b;}public static boolean compare(long a, long b){return a == b;} }

    方法的參數(shù)傳遞

    基本類(lèi)型

    public class ArgsDemo01{public static void main(String[] args){int number = 100;System.out.println('調(diào)用change方法前:' + number);change(number);System.out.println('調(diào)用change方法后:' + number);}public static void change(int number){number = 200;} }

    對(duì)于基本數(shù)據(jù)類(lèi)型的參數(shù),形式參數(shù)的改變,不影響實(shí)際參數(shù)的值

    引用類(lèi)型

    public class ArgsDemo02{public static void main(String[] args){int[] arr = {10, 20, 30};System.out.println('調(diào)用change方法前:' + arr[1]);change(arr);System.out.println('調(diào)用change方法后:' + arr[1]);}public static void change(int[] arr) {arr[1] = 200;} }

    對(duì)于引用類(lèi)型的參數(shù),形式參數(shù)的改變,影響實(shí)際參數(shù)的值

    【栗子1】: 設(shè)計(jì)一個(gè)方法用于數(shù)組遍歷,要求遍歷的結(jié)果是在一行上的。例如:[11, 22, 33, 44, 55]

    System.out.prinln(): 輸出內(nèi)容換行

    System.out.print(): 輸出內(nèi)容不換行

    public class MethodTest01 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};printArray(arr);}public static void printArray(int[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length - 1) {System.out.print(arr[i] + ", ");} else {System.out.print(arr[i]);}}System.out.print("]");} }

    【栗子2】: 設(shè)計(jì)一個(gè)方法用于獲取數(shù)組中元素的最大值,調(diào)用方法并輸出結(jié)果

    public class MethodTest02 {public static void main(String[] args) {int[] arr = {1, 3, 5, 4, 2, 8, 9};System.out.println(getMax(arr));}public static int getMax(int[] arr) {int max = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;} }

    【栗子3】: 輸入星期數(shù),顯示今天的減肥活動(dòng)(周一: 跑步, 周二: 游泳, 周三: 慢走, 周四: 動(dòng)感單車(chē), 周五: 拳擊, 周六: 爬山, 周日: 好好吃一頓)

    public class Test01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入星期數(shù): ");int day = sc.nextInt();while (day < 1 || day > 7) {System.out.println("請(qǐng)輸入整數(shù) 1~7");day = sc.nextInt();}if (day == 1) {System.out.println("跑步");}if (day == 2) {System.out.println("游泳");}if (day == 3) {System.out.println("慢走");}if (day == 4) {System.out.println("動(dòng)感單車(chē)");}if (day == 5) {System.out.println("拳擊");}if (day == 6) {System.out.println("爬山");}if (day == 7) {System.out.println("好好吃一頓");}} }

    【栗子4】: 朋友聚會(huì)的時(shí)候可能會(huì)玩一個(gè)游戲: 逢七過(guò)。規(guī)則是: 從任意一個(gè)數(shù)字開(kāi)始報(bào)數(shù),當(dāng)你要報(bào)的數(shù)字包含7或者是7的倍數(shù)時(shí)都要說(shuō): 過(guò).為了幫助大家更好的玩這個(gè)游戲,這里我們直接在控制臺(tái)打印1~100之間的滿足逢七過(guò)規(guī)則的數(shù)據(jù).

    public class Test02 {public static void main(String[] args) {for (int i = 1; i < 100; i++) {if (i % 7 == 0 || i / 10 % 10 == 7 || i % 10 == 7) {System.out.println(i);}}} }

    【栗子5】: 有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第3個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)第二十個(gè)月的兔子對(duì)數(shù)為多少?

    思路:

    第1個(gè)月兔子對(duì)數(shù)為 1 對(duì)

    第2個(gè)月兔子對(duì)數(shù)為 1 對(duì)

    第3個(gè)月兔子對(duì)數(shù)為 2 對(duì)

    第4個(gè)月兔子對(duì)數(shù)為 3 對(duì)

    第5個(gè)月兔子對(duì)數(shù)為 5 對(duì)

    即 a[n] = a[n-1] + a[n-2];用動(dòng)態(tài)規(guī)劃

    public class Test03 {public static void main(String[] args) {int[] arr = new int[20];arr[0] = 1;arr[1] = 1;for (int i = 2; i < 20; i++) {arr[i] = arr[i - 1] + arr[i - 2];}System.out.println(arr[19]);} }

    【栗子6】: 我國(guó)古代數(shù)學(xué)家張丘建在《算經(jīng)》一書(shū)中提出的數(shù)學(xué)問(wèn)題: 雞翁一值錢(qián)五,雞母一值錢(qián)三,雞雌三值錢(qián)一。問(wèn)雞翁、雞母、雞雌各幾何?

    思路:

    假設(shè) 雞翁、雞母、雞雌 的數(shù)量各為 x , y, z 有以下等式成立

    x + y + z = 100

    5x + 3y + z/3 = 100

    0<= x <= 20

    0<=y <= 33

    0<= z <= 100

    循環(huán)遍歷 x和y, 讓 z = 100 - x - y; 然后z要能整除3 以及 滿足等式 5x + 3y + z/3 = 100

    public class Test04 {public static void main(String[] args) {for (int x = 0; x <= 20; x++) {for (int y = 0; y <= 33; y++) {int z = 100 - x - y;if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {System.out.println(x + " " + y + " " + z);}}}} }

    第七章 類(lèi)和對(duì)象

    萬(wàn)物皆對(duì)象,客觀存在的事物皆稱(chēng)為對(duì)象

    什么是類(lèi)

    類(lèi): 是對(duì)現(xiàn)實(shí)生活中一類(lèi)具有共同屬性和行為的事物的抽象

    類(lèi)的特點(diǎn):

    • 類(lèi)是對(duì)象的數(shù)據(jù)類(lèi)型
    • 類(lèi)是具有相同屬性和行為的一組對(duì)象的集合

    對(duì)象: 是能夠看得見(jiàn)摸得著的真實(shí)存在的實(shí)體

    對(duì)象的屬性: 對(duì)象具有各種特征,每個(gè)對(duì)象的每個(gè)屬性都有特定的值

    對(duì)象的行為: 對(duì)象能夠執(zhí)行的操作

    類(lèi)的定義

    類(lèi)的重要性: 是Java程序的基本組成單位

    • 類(lèi)的組成: 屬性和行為
      • 屬性: 在類(lèi)中通過(guò)成員變量來(lái)體現(xiàn)(類(lèi)中方法外的變量)
      • 行為: 在類(lèi)中通過(guò)成員方法來(lái)體現(xiàn)(和前面的方法相比去掉static關(guān)鍵字即可)
    /*模板 public class 類(lèi)型{// 成員變量變量1的數(shù)據(jù)類(lèi)型 變量1;變量2的數(shù)據(jù)類(lèi)型 變量2;...// 成員方法方法1;方法2;... }*/// 栗子如下 public class Phone {// 成員變量String brand;int price;// 成員方法public void call() {System.out.println("打電話");}public void sendMessage() {System.out.println("發(fā)短信");} }

    對(duì)象的使用

    • 創(chuàng)建對(duì)象:
      • 格式: 類(lèi)名 對(duì)象名 = new 類(lèi)名();
      • 范例: Phone p = new Phone();
    • 使用對(duì)象:
      • 使用成員變量:
        • 格式: 對(duì)象名.變量名
        • 范例:p.brand
      • 使用成員方法:
        • 格式: 對(duì)象名.方法名()
        • 范例: p.call()
    public class PhoneDemo {public static void main(String[] args) {// 創(chuàng)建對(duì)象Phone p = new Phone();// 使用成員變量System.out.println(p.brand);System.out.println(p.price);p.brand = "華為";p.price = 2999;System.out.println(p.brand);System.out.println(p.price);// 使用成員方法p.call();} }

    【栗子】: 首先定義一個(gè)學(xué)生類(lèi),然后定義一個(gè)學(xué)生測(cè)試類(lèi),在學(xué)生測(cè)試類(lèi)中通過(guò)對(duì)象完成成員變量和成員方法的使用

    // Student.java public class Student{// 成員變量String name;int age;// 成員方法public void study(){Syste.out.println("好好學(xué)習(xí),天天向上");}public void doHomework(){System.out.println("代碼敲爛,月薪過(guò)萬(wàn)");} } // StudentDemo.java public class StudentDemo{public static void main(String[] args){Student s = new Student();System.out.println(s.name + "," + s.age);s.name="林青霞";s.age = 30;System.out.println(s.name + "," + s.age);s.study();s.doHomework();} }

    多個(gè)對(duì)象指向相同

    public class StudentTest03{public static void main(String[] args){Student s1 = new Student();s1.name = "林青霞";s1.age = 30;System.out.println(s1.name + "," + s1.age);Student s2 = s1;s2.name = "張曼玉";s2.age = 28;System.out.println(s1.name + "," + s1.age);System.out.println(s2.name + "," + s2.age);} }

    成員變量和局部變量

    public class Student {String name;public void study(){int i = 0;System.out.println("好好學(xué)習(xí)");}public void doHomework(){System.out.println("多做練習(xí)");int j = 0;}int age; }

    成員變量: 類(lèi)中方法外的變量

    局部變量: 方法中的變量

    區(qū)別成員變量局部變量
    類(lèi)中位置不同類(lèi)中方法外方法內(nèi)或者方法聲明上
    內(nèi)存中位置不同堆內(nèi)存棧內(nèi)存
    生命周期不同隨著對(duì)象的存在而存在,隨著對(duì)象的消失而消失隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
    初始值不同有默認(rèn)的初始化值沒(méi)有默認(rèn)的初始化值,必須先定義,賦值,才能使用

    封裝

    private

    • 是一個(gè)權(quán)限修飾符
    • 可以修飾成員(成員變量和成員方法)
    • 作用是保護(hù)成員不被別的類(lèi)使用,被private修飾的成員只能在本類(lèi)中才能訪問(wèn)

    針對(duì)private修飾的成員變量,如果需要被其他類(lèi)使用,提供相應(yīng)的操作

    • 提供"get變量名()"方法,用于獲取成員變量的值,方法用public修飾
    • 提供"set變量名(參數(shù))"方法,用于設(shè)置成員變量的值,方法用public修飾

    【栗子】:

    // Student.java public class Student{String name;int age;public void show(){System.out.println(name + "," + age);} }// 使用private關(guān)鍵字 public class Student {String name;private int age;// 提供get/set方法public void setAge(int a){if(a < 0 || a > 180){System.out.println("您給的年齡有誤");} else {age = a;}}public int getAge(){return age;}public void show(){System.out.println(name + "," + age);} }

    this

    public class Student {private String name;public void setName(String name){this.name = name;}public void show(){System.out.println(this.name);} }public class StudentDemo{public static void main(String[] args){Student s = new Student();s.setNmae("Marron");s.show();} }
    • this修飾的變量用于指代成員變量

      • 方法的形參與成員變量同名,不帶this修飾的變量指的是形參,而不是成員變量

      • public class Student{private String name;public String getName(){return name;}public void setName(String name){// 此處name指向形參,this.name執(zhí)行成員變量this.name = name;} }
      • 方法的形參沒(méi)有與成員變量同名,不帶this修飾的變量指的是成員變量

    小結(jié)

  • 封裝概述
  • 面向?qū)ο笕筇卣髦?封裝、繼承、多態(tài))

    是面向?qū)ο缶幊陶Z(yǔ)言堆客觀世界的模擬,客觀世界成員變量都是隱藏在對(duì)象內(nèi)部的,外界無(wú)法直接操作的

  • 封裝原則
  • 將類(lèi)的某些信息隱藏在類(lèi)內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類(lèi)提供的方法來(lái)實(shí)現(xiàn)堆隱藏信息的操作和訪問(wèn)成員變量private,提供對(duì)應(yīng)的getXxx()/setXxx()方法

    public class Student{private String name;public String getName(){return name;}public void setNamee(String name) {this.name = name;} }
  • 封裝的好處
  • 通過(guò)方法來(lái)控制成員變量的操作,提高了代碼的安全性

    把代碼用方法進(jìn)行封裝,提高了代碼的復(fù)用性

    構(gòu)造方法

    構(gòu)造方法是一種特殊的方法,其作用是用來(lái)創(chuàng)建對(duì)象

    /*格式:public class 類(lèi)名{修飾符 類(lèi)名(參數(shù)) {...}} */

    功能: 主要是完成對(duì)象數(shù)據(jù)的初始化

    public class Student {private String name;private int age;// 構(gòu)造方法public Student(){System.out.println("無(wú)參構(gòu)造方法");}public void show() {System.out.println(name + "," + age);} }
    • 下面使用重載和封裝的思想定義一個(gè)Student類(lèi)
    public class Student {private String name;private int age;public Student() {}public Student(String name) {this.name = name;}public Student(int age) {this.age = age;}public Student(String name, int age) {this.name = name;this.age = age;}public void show() {System.out.println(name + "," + age);} }

    標(biāo)準(zhǔn)類(lèi)制作

    • 成員變量: 使用private修飾
    • 構(gòu)造方法: 提供一個(gè)無(wú)參構(gòu)造方法,提供一個(gè)帶多個(gè)參數(shù)的構(gòu)造方法
    • 成員方法:
      • 提供每一個(gè)成員變量對(duì)應(yīng)的setXxx()/getXxx()
      • 提供一個(gè)顯示對(duì)象信息的show()
    • 創(chuàng)建對(duì)象并為其成員變量賦值的兩種方式
      • 無(wú)參構(gòu)造方法創(chuàng)建后使用setXxx()賦值
      • 使用帶參數(shù)構(gòu)造方法直接創(chuàng)建帶有屬性值得對(duì)象

    第八章 字符串

    API

    API(application programing interface): 應(yīng)用程序編程接口

    編寫(xiě)一個(gè)機(jī)器人程序去控制機(jī)器人踢足球,程序需要向機(jī)器人發(fā)出向前跑、向后跑、射門(mén)、搶球等各種命令。機(jī)器人廠商提供一些用于控制機(jī)器人的接口類(lèi),這些類(lèi)中定義好了操作機(jī)器人的各種動(dòng)作的方法。其實(shí),這些接口類(lèi)就是機(jī)器人廠商提供給應(yīng)用程序編程的接口,大家把這些類(lèi)稱(chēng)為API

    Java API: 指的就是JDK中提供的各種功能的Java類(lèi)

    String

    String類(lèi)代表字符串,Java程序中的所有字符串文字(例如"abc")都被視為此類(lèi)的實(shí)例。也就是說(shuō),Java程序中所有的雙引號(hào)字符串,都是String類(lèi)的對(duì)象

    字符串的特點(diǎn):

    • 字符串不可變,它們的值在創(chuàng)建后不能被更改

    • 雖然String的值是不可改變的,但是它們可以被共享

    • 字符串效果上相當(dāng)于字符數(shù)組(char[]),但是底層原理是字節(jié)數(shù)組(byte[])

    String構(gòu)造方法(常用)

    方法名說(shuō)明
    public String()創(chuàng)建一個(gè)空白字符串對(duì)象,不含有任何內(nèi)容
    public String(char[] chs)根據(jù)字符數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象
    public String(byte[] bys)根據(jù)字節(jié)數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象
    String s = “abc”;直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc
    public class StringDemo01 {public static void main(String[] args) {String s1 = new String();System.out.println("s1: " + s1);char[] chs = {'a', 'b', 'c'};String s2 = new String(chs);System.out.println("s2: " + s2);byte[] bys = {97, 98, 99};String s3 = new String(bys);System.out.println("s3: " + s3);String s4 = "abc";System.out.println("s4: " + s4);} }

    String對(duì)象的特點(diǎn)

    • 通過(guò)new創(chuàng)建字符串對(duì)象,每一次new都會(huì)申請(qǐng)一個(gè)內(nèi)存空間,雖然內(nèi)容相同,但是地址值不同
    char[] chs = {'a', 'b', 'c'}; String s1 = new String(chs); String s2 = new String(chs); System.out.println(s1 == s2);
    • 以 ”“方式給出的字符串,只要字符序列相同(順序和大小),無(wú)論在程序代碼中出現(xiàn)幾次,JVM只會(huì)建立一個(gè)String對(duì)象,并在字符串池中維護(hù)
    String s3 = "abc"; String s4 = "abc"; System.out.println(s3 == s4); /*在以上代碼中,針對(duì)第一行代碼,JVM會(huì)建立一個(gè)String對(duì)象放在字符串池中,并給s3參考;第二行則讓s4直接參考字符串池中的String對(duì)象,也就是說(shuō)它們本質(zhì)上是同一個(gè)對(duì)象 */

    字符串的比較

    使用==做比較

    • 基本類(lèi)型: 比較的是數(shù)據(jù)值是否相同
    • 引用類(lèi)型: 比較的是地址值是否相同

    字符串是對(duì)象,它比較內(nèi)容是否相同,是通過(guò)一個(gè)方法來(lái)實(shí)現(xiàn)的,這個(gè)方法叫: equals()

    • public boolean equals(Object anObject): 將此字符串與指定對(duì)象進(jìn)行比較。由于我們比較的是字符串對(duì)象,所以參數(shù)直接傳遞一個(gè)字符串
    public class StringDemo02{public static void main(String[] args){// 構(gòu)造方法的方式得到對(duì)象char[] chs = {'a', 'b', 'c'};String s1 = new String(chs);String s2 = new String(chs);// 直接賦值的方式得到對(duì)象String s3 = "abc";String s4 = "abc";// 比較字符串是否相同System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s1.equals(s4));} }

    幾個(gè)小栗子

    【栗子1】: 簡(jiǎn)單登錄比較

    已知用戶名和密碼,請(qǐng)用程序?qū)崿F(xiàn)模擬用戶登錄。總共給三次機(jī)會(huì),登錄之后會(huì),給出相應(yīng)的提示

    public class StringTest01 {public static void main(String[] args) {// 已知用戶名和密碼,定義兩個(gè)字符串即可String username = "marron";String password = "lzhhc";for (int i = 3; i > 0; i--) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入用戶名: ");String name = sc.nextLine();System.out.println("請(qǐng)輸入密碼: ");String pwd = sc.nextLine();if (name.equals(username) && pwd.equals(password)) {System.out.println("登錄成功");break;} else {if (i - 1 == 0) {System.out.println("登錄失敗");} else {System.out.printf("登錄失敗,你還有" + (i - 1) + "次機(jī)會(huì)");}}}} }

    【栗子2】: 遍歷字符串

    public class StringTest02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入字符串: ");String line = sc.nextLine();for (int i = 0; i < line.length(); i++) {System.out.println(line.charAt(i));}} }

    【栗子3】: 統(tǒng)計(jì)字符次數(shù)

    需求: 鍵盤(pán)錄入一個(gè)字符串,統(tǒng)計(jì)該字符串中大寫(xiě)字母字符,小寫(xiě)字母字符,數(shù)字字符出現(xiàn)的次數(shù)(不考慮其他字符)

    public class StringTest03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入字符串");String print = sc.nextLine();int upper = 0;int lower = 0;int number = 0;for (int i = 0; i < print.length(); i++) {char ch = print.charAt(i);if ('0' <= ch && ch <= '9') {number++;}if ('a' <= ch && ch <= 'z') {lower++;}if ('A' <= ch && ch <= 'Z') {upper++;}}System.out.println("大寫(xiě)字母?jìng)€(gè)數(shù)為: " + upper);System.out.println("小寫(xiě)字母?jìng)€(gè)數(shù)為: " + lower);System.out.println("數(shù)字個(gè)數(shù)為: " + number);} }

    【栗子4】: 拼接字符串

    需求: 定義一個(gè)方法,把int數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串返回,調(diào)用該方法,并在控制臺(tái)輸出結(jié)果。

    例如: 數(shù)組為 int[] arr = {1, 2, 3}, 執(zhí)行方法后的輸出結(jié)果為: [1, 2, 3];

    public class StringTest04 {public static void main(String[] args) {int[] arr = {1, 2, 3};System.out.println(arr2String(arr));}public static String arr2String(int[] arr) {String str = "";str += "[";for (int i = 0; i < arr.length; i++) {if (i != arr.length - 1) {str += arr[i] + ", ";} else {str += arr[i];}}str += "]";return str;} }

    【栗子5】: 字符串反轉(zhuǎn)

    需求: 定義一個(gè)方法,實(shí)現(xiàn)字符串反轉(zhuǎn)。鍵盤(pán)錄入一個(gè)字符串,調(diào)用該方法后,再控制臺(tái)輸出結(jié)果.

    例如,鍵盤(pán)錄入abc,輸出結(jié)果cba

    public class StringTest05 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入一個(gè)字符串");String str = sc.nextLine();System.out.printf(reverseStr(str));}public static String reverseStr(String s) {String tmpS = "";for (int i = s.length() - 1; i >= 0; i--) {tmpS += s.charAt(i);}return tmpS;} }

    String常用方法

    方法說(shuō)明
    public boolean equals(Object anObject)比較字符串的內(nèi)容,嚴(yán)格區(qū)分大小寫(xiě)(用戶名和密碼)
    public char charAt(int index)返回指定索引處的char值
    public int length()返回此字符串的長(zhǎng)度

    StringBuilder

    Public static void main(String[] args){String s = "hello";s += "world";System.out.println(s); }

    首先在棧內(nèi)存中加載方法: main

    然后執(zhí)行 String s = "hello".

    • 會(huì)在堆內(nèi)存的常量池創(chuàng)建一個(gè)"hello",編號(hào)為001
    • 將001賦值給s

    然后執(zhí)行 s += "world"

    • 會(huì)在堆內(nèi)存的常量池創(chuàng)建一個(gè)"world",編號(hào)為002
    • 在堆內(nèi)存的常量池創(chuàng)建一個(gè)"helloworld",編號(hào)003
    • 將003賦值給s

    最后執(zhí)行"System.out.println(s)"

    • 輸出s時(shí),會(huì)根據(jù)003找到"helloworld",然后輸出

    如果堆字符串進(jìn)行拼接操作,每次拼接,都會(huì)構(gòu)建一個(gè)新的String對(duì)象,既耗時(shí),又浪費(fèi)內(nèi)存空間,而這種操作還不可避免。可以使用Java提供的 StringBuilder類(lèi)來(lái)解決這個(gè)問(wèn)題。

    StringBuilder是一個(gè)可變的字符串類(lèi),我們可以把它看成是一個(gè)容器,這里的可變指的是StringBuilder對(duì)象中的內(nèi)容是可變的

    方法名說(shuō)明
    public String Builder()創(chuàng)建一個(gè)空白可變字符串對(duì)象,不含又任何內(nèi)容
    public StringBuilder(String str)根據(jù)字符串的內(nèi)容,來(lái)創(chuàng)建可變字符串對(duì)象
    public class StringBuilderDemo01{public static void main(String[] args){StringBuilder sb = new StringBuilder();System.out.println("sb: " + sb); // System.out.println("sb.length(): " + sb.length()); // 0StringBuilder sb2 = new StringBuilder("hello");System.out.println("sb2: " + sb2); // "hello"System.out.println("sb2.length(): " + sb2.length()); // 5} } 方法名說(shuō)明
    public StringBuilder append(任意類(lèi)型)添加數(shù)據(jù),并返回對(duì)象本身
    public StringBuilder reverse()返回相反的字符序列
    public class StringBuilderDemo01{public static void main(String[] args){// 創(chuàng)建對(duì)象StringBuilder sb = new StringBuilder();StringBuilder sb2 = sb.append("hello");System.out.println("sb: " + sb); // "hello"System.out.println("sb2: " + sb2); // "hello"System.out.prtinln(sb == sb2); // truesb.append("hello");sb.append("world");sb.append("java");sb.append(100);/* 鏈?zhǔn)骄幊蘳b.append("hello").append("world").append("java").append(100);*/System.out.println("sb: " + sb); // helloworldjava100sb.reverse();System.out.println("sb: " + sb); // 001avajdlrowolleh} }

    StringBuilder和String相互轉(zhuǎn)換

    StringBuilder轉(zhuǎn)換為String:

    • public String toString(): 通過(guò)toString()就可以實(shí)現(xiàn)把StringBuilder轉(zhuǎn)換為String

    String轉(zhuǎn)換為StringBuilder

    • public StringBuilder(String s): 通過(guò)構(gòu)造方法就可以實(shí)現(xiàn)把String轉(zhuǎn)換為StringBuilder
    public class StringBuilderDemo02{public static void main(String[] args){StringBuilder sb = new StringBuilder();sb.append("hello");// StringBuilder轉(zhuǎn)換為StringString s = sb.toString();System.out.println(s);// String轉(zhuǎn)換為StringBuilderString s = "hello";StringBuilder sb = new StringBuilder(s);System.out.println(sb);} }

    StringBuildr小栗子

    【栗子1】: 拼接字符串

    需求: 定義一個(gè)方法,把int數(shù)組中的數(shù)據(jù)按照指定的格式拼接成一個(gè)字符串返回,調(diào)用該方法,并在控制臺(tái)輸出結(jié)果.

    例如: 數(shù)組為int[] arr = {1, 2, 3}; 執(zhí)行方法后的輸出結(jié)果為: [1, 2, 3]

    public class StringBuilderTest01 {public static void main(String[] args) {int[] arr = {1, 2, 3};System.out.printf(arr2String(arr));}public static String arr2String(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length - 1) {sb.append(arr[i]);sb.append(", ");} else {sb.append(arr[i]);}}sb.append("]");String str = sb.toString();return str;} }

    【栗子2】: 字符串反轉(zhuǎn)

    需求: 定義一個(gè)方法,實(shí)現(xiàn)字符串反轉(zhuǎn)。鍵盤(pán)錄入一個(gè)字符串,調(diào)用該方法后,在控制臺(tái)輸出結(jié)果

    例如: 鍵盤(pán)錄入abc,輸出結(jié)果cba

    public class StringBuilderTest02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入字符串: ");String str = sc.nextLine();System.out.println(reverseStr(str));}public static String reverseStr(String s){StringBuilder sb = new StringBuilder(s);return sb.reverse().toString();} }

    第九章 集合之ArrayList

    編程的時(shí)候如果要存儲(chǔ)多個(gè)數(shù)據(jù),使用長(zhǎng)度固定的數(shù)組存儲(chǔ)格式,不一定能滿足我們的需求,更適應(yīng)不了變化的需求,那么,此時(shí)該如何選擇呢?

    集合概述: 集合類(lèi)的特點(diǎn)是,提供了一種存儲(chǔ)空間可變的存儲(chǔ)模型,存儲(chǔ)的數(shù)據(jù)容量可以發(fā)生改變.下面主要學(xué)習(xí)ArrayList

    ArrayList:

    • 可調(diào)整大小的數(shù)組實(shí)現(xiàn)
    • : 是一種特殊的數(shù)據(jù)類(lèi)型,泛型。

    ArrayList構(gòu)造方法和添加方法

    方法名說(shuō)明
    public ArrayList()創(chuàng)建一個(gè)空的集合對(duì)象
    public boolean add(E e)將指定的元素追加到此集合的末尾
    public void add(int index, E element)此集合中的指定位置插入指定的元素
    import java.util.ArrayList;public class ArrayListDemo01 {public static void main(String[] args) {// 創(chuàng)建一個(gè)空集合對(duì)象ArrayList<String> array = new ArrayList<>();// 輸出集合System.out.println("array: " + array);// 添加元素array.add("hello");array.add("world");array.add("java");System.out.println("array: " + array);// 在指定位置添加元素array.add(1, "javaSE");System.out.println("array: " + array);} }

    ArrayList集合常用方法

    方法名說(shuō)明
    public boolean remove(Object o)刪除指定的元素,返回刪除是否成功
    public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
    public E set(int index, E element)修改指定索引處的元素,返回被修改的元素
    public E get(int index)返回指定索引處的元素
    public int size()返回集合中的元素的個(gè)數(shù)
    import java.util.ArrayList;public class ArrayListDemo02 {public static void main(String[] args) {ArrayList<String> array = new ArrayList<>();array.add("hello");array.add("world");array.add("java");// 輸出集合 // System.out.println("array: " + array);// 刪除 // array.remove("world"); // System.out.println("array: " + array);// 刪除: 按索引 // array.remove(0); // System.out.println("array: " + array);// 修改:指定索引處 // array.set(2, "javaSE"); // System.out.println("array: " + array);// 查詢: 索引處的元素 // System.out.println(array.get(2)); // System.out.println("array: " + array);// 集合長(zhǎng)度System.out.println(array.size());} }

    【小栗子】: 遍歷集合

    需求: 創(chuàng)建一個(gè)存儲(chǔ)字符串的集合,存儲(chǔ)3個(gè)字符串元素,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該集合

    import java.util.ArrayList;public class ArrayListTest02 {public static void main(String[] args) {// 創(chuàng)建集合對(duì)象ArrayList<String> array = new ArrayList<>();// 在集合中添加字符串對(duì)象array.add("Marron");array.add("Mar");array.add("lzhhc");// 遍歷集合for (int i = 0; i < array.size(); i++) {System.out.println(array.get(i));}} }

    【小栗子】: 存儲(chǔ)學(xué)生對(duì)象并遍歷

    需求: 創(chuàng)建一個(gè)存儲(chǔ)學(xué)生對(duì)象的集合,存儲(chǔ)3個(gè)學(xué)生對(duì)象,使用程序?qū)崿F(xiàn)在控制臺(tái)遍歷該集合

    • 學(xué)生類(lèi)如下:
    // Student.java public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;} } import java.util.ArrayList;public class ArrayListTest02 {public static void main(String[] args) {// 創(chuàng)建集合對(duì)象ArrayList<Student> StudentList = new ArrayList<>();// 創(chuàng)建學(xué)生對(duì)象Student s1 = new Student("Marron", 18);Student s2 = new Student("Mar", 17);Student s3 = new Student("lzhhc", 19);// 添加元素到集合中StudentList.add(s1);StudentList.add(s2);StudentList.add(s3);for (int i = 0; i < StudentList.size(); i++) {Student tmpStu = StudentList.get(i);System.out.println(tmpStu.getName() + "今年" + tmpStu.getAge() + "歲");}} }

    【小栗子】: 存儲(chǔ)學(xué)生對(duì)象并遍歷(帶輸入)

    需求: 創(chuàng)建一個(gè)存儲(chǔ)學(xué)生對(duì)象的集合,存儲(chǔ)3個(gè)學(xué)生對(duì)象,使用程序在控制臺(tái)實(shí)現(xiàn)遍歷該集合學(xué)生的姓名和年齡來(lái)自鍵盤(pán)錄入

    import java.util.ArrayList; import java.util.Scanner;public class ArrayListTest03 {public static void main(String[] args) {ArrayList<Student> array = new ArrayList();addStudent(array);addStudent(array);addStudent(array);for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getName() + "," + s.getAge());}}public static void addStudent(ArrayList<Student> array) {Scanner sc = new Scanner(System.in);System.out.println("請(qǐng)輸入學(xué)生姓名");String name = sc.nextLine();System.out.println("請(qǐng)輸入學(xué)生年齡");int age = sc.nextInt();Student s = new Student();s.setName(name);s.setAge(age);array.add(s);} }

    總結(jié)

    以上是生活随笔為你收集整理的Java --- 基础学习Ⅰ的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。