Java學(xué)習(xí)筆記(一)

Java學(xué)習(xí)筆記(一)

依據(jù)《寫給大忙人看的Java核心技術(shù)》所記筆記

【美】Cay S.Horstmann 著

楊謙 王巍 高偉斌 謝志強(qiáng) 譯

轉(zhuǎn)載請(qǐng)注明出處,勿用于商業(yè)用途

第一章 基本的編程結(jié)構(gòu)

一、第一個(gè)程序

  1. 在Java中,所有代碼都必須在類中定義

  2. main方法是程序運(yùn)行時(shí)調(diào)用的第一個(gè)方法,它被聲明為靜態(tài)的,表面該方法不是依賴于對(duì)象運(yùn)行的。

  3. 包(package)是一組相關(guān)類的集合,每個(gè)類都放入一個(gè)包中

  4. 三種注釋方法:

    //我是行注釋
    /*
     我是多行注釋
    */
    /**
     我是文檔注釋
    */
    
  5. javac 命令將Java源代碼編譯為中間代碼,也稱字節(jié)碼,并將它們保存到類文件中(即.class文件)

  6. System.out是對(duì)象,是PrintStream的實(shí)例

  7. 使用點(diǎn)符號(hào)調(diào)用對(duì)象上的實(shí)例方法

  8. 字符串是String類的實(shí)例,可以調(diào)用length方法返回字符串的長(zhǎng)度,即:"Hello World".length()

  9. Random類的對(duì)象可以產(chǎn)生隨機(jī)數(shù),可以使用new操作符構(gòu)建一個(gè)Random對(duì)象 new Random();

    類名之后是構(gòu)造函數(shù)的參數(shù)列表

    Random.nextInt()方法可以提供一個(gè)整數(shù),Random類聲明在java.util包中,使用需導(dǎo)入,即:import java.util.Random

二、基本類型

  1. 整型(沒(méi)有小數(shù),允許為負(fù))

    int(4字節(jié))long(8字節(jié))short(2字節(jié))byte(1字節(jié))

    如果long類型還不夠用時(shí),使用BigInteger類

  2. 使用long類型時(shí)帶上L后綴,byte和short型采用強(qiáng)制轉(zhuǎn)換

  3. 十六進(jìn)制使用0x前綴,二進(jìn)制使用0b前綴,八進(jìn)制使用0前綴

  4. 可以給數(shù)字添加下劃線方便閱讀,Java編譯器會(huì)自動(dòng)刪除它們。如:1_000_000表示100萬(wàn)

  5. 浮點(diǎn)類型

    float(4字節(jié)) double(8字節(jié))

    float類型有F后綴,沒(méi)有F默認(rèn)為double類型,也可使用D作為Double類型后綴

  6. 十六進(jìn)制指數(shù)使用p

  7. Double.POSITIVE_INFINITY代表正無(wú)窮

    Double.NEGATIVE_INFINITY代表負(fù)無(wú)窮

    Double.NaN代表“非數(shù)值”,如0.0/0.0或負(fù)數(shù)平方根

  8. 所有的“非數(shù)值”都彼此不同,不能使用x==Double.NaN檢查

    可以調(diào)用Double.isNaNDouble.isInfinite進(jìn)行檢查,Double.isFinite可以檢查既不是無(wú)窮也不是NaN

  9. 浮點(diǎn)數(shù)不適合金融計(jì)算,因?yàn)榇嬖谡`差,若要準(zhǔn)確無(wú)誤差的數(shù)學(xué)計(jì)算可以使用BigDecimal

  10. 布爾型

有兩種數(shù)值,falsetrue,Java中布爾類型不是數(shù)字類型,與0和1沒(méi)有關(guān)系

三、變量

  1. Java是強(qiáng)類型語(yǔ)言,變量值只能是某個(gè)具體類型的值

  2. Java對(duì)字母大小寫敏感

    變量和方法的名稱以小寫字母開始,類的名稱的第一個(gè)字母大寫

    駝峰式大小寫:當(dāng)名稱由多個(gè)單詞組成時(shí),單詞首字母大寫,如:countOfInvalidInputs

  3. 在使用變量前必須初始化變量

  4. 允許在方法中的任何地方聲明變量,盡可能晚地聲明變量,剛好在首次需要變量的前一刻聲明

    變量聲明在它的初始值剛有了的那一刻

  5. final關(guān)鍵字表示一個(gè)值,一旦賦值后就不能改變了(常量)

    常量的名稱使用大寫字母,如:final int DAYS_PER_WEEK=7;

    可以在方法外,使用static關(guān)鍵字聲明常量,如:public static final int DAYS=7;

  6. 在類內(nèi)部可以直接使用常量,在其他類中使用需要在前面加上類名

  7. System類中聲明了一個(gè)常量:public static final PrintStream out;

  8. 延遲final變量的初始化也可以,只要在首次使用前只初始化一次就好。

    final變量一旦被賦值,就是最終的值,永遠(yuǎn)無(wú)法改變

四、算術(shù)操作

  1. 基本運(yùn)算

    1. /操作符,如兩個(gè)操作數(shù)都是整型,代表整除;如有小數(shù)會(huì)產(chǎn)生小數(shù)
    2. 整數(shù)除以零會(huì)導(dǎo)致異常,如果沒(méi)有捕獲異常,程序會(huì)終止
    3. 浮點(diǎn)數(shù)除以零會(huì)產(chǎn)生無(wú)限值或NaN,不會(huì)導(dǎo)致異常
    4. 當(dāng)n為奇數(shù)時(shí),若n為正,n%2的結(jié)果為1,若n為負(fù),n%2的結(jié)果為-1
  2. 數(shù)學(xué)方法

    1. 靜態(tài)方法不用在對(duì)象上調(diào)用,如靜態(tài)常量一樣,只需要在前面加上靜態(tài)常量的類名即可
    2. Math.pow(x,y) 產(chǎn)生x的y次方,Math.sqrt(x) 計(jì)算x的平方根
    3. 計(jì)算兩個(gè)值哪個(gè)小或大,Math.minMath.max
    4. Math 類提供三角函數(shù)和對(duì)數(shù)方法,以及常量Math.PIMath.E
  3. 數(shù)字類型轉(zhuǎn)換

    • 合法轉(zhuǎn)換
      • byte-->short\int\long\double
      • short\char-->int\long\double
      • int-->long\double
    • 合法但損失信息
      • int-->float
      • long-->float\double
  4. 大數(shù)

    java.math 中的BigIntegerBigDecimal 類可實(shí)現(xiàn)任意精度計(jì)算

    Java不允許對(duì)象使用操作符,操作大數(shù)時(shí)必須使用方法調(diào)用

五、字符串

  1. 字符串連接

    使用操作符+可以將兩個(gè)字符串連接起來(lái),將一個(gè)字符串和另外一個(gè)值連接起來(lái)時(shí)轉(zhuǎn)換為字符串

  2. 子字符串

    要將字符串分開,使用substring方法

    substring方法的第一個(gè)參數(shù)是提取子字符串中的起始位置,第二個(gè)參數(shù)是子字符串不包含的終止位置

    split方法分割由字符串分割的所有字符串

    分隔符也可以是正則表達(dá)式

  3. 字符串比較

    檢查字符串是否相等,使用equals方法

    string變量可以是null,表明該變量根本沒(méi)有引用任何對(duì)象

    在null上調(diào)用任何方法都會(huì)導(dǎo)致空指針異常

    不考慮大小寫比較兩個(gè)字符串,可使用equalsIgnorelase()

  4. 數(shù)字字符串轉(zhuǎn)換

    整數(shù)轉(zhuǎn)換為字符串可調(diào)用靜態(tài)的Integer.toString()

    字符串轉(zhuǎn)整數(shù),使用Integer.parseInt()

    對(duì)于浮點(diǎn)數(shù),使用Double.toStringDouble.parseDouble

  5. String類API

    在Java中,String類是不變的(immutable),即任何String方法不能修改自己的字符串

六、輸入與輸出

  1. 讀取輸入

    要讀取字符串和數(shù)字,構(gòu)造一個(gè)依附到System.inScanner

    Scanner in = new Scanner(System.in);
    

    Scanner 對(duì)象的nextLine方法從輸入讀取一行

    nextInt() 讀取整數(shù),nextDouble() 讀取浮點(diǎn)數(shù)

    Scanner類位于java.util包中

  2. 格式化輸出

    print方法不會(huì)在輸出中新起一行,常用來(lái)提示輸入

    使用printf和%來(lái)格式化輸出

    使用String.format 方法創(chuàng)建不打印輸出的格式化字符串

七、控制流

  1. 分支:

    if、else、else if、switch case

  2. 循環(huán)

    while、do while、for

  3. 跳出循環(huán)

    break、continue

    break+標(biāo)簽可以跳出多個(gè)循環(huán)

  4. 局部變量作用域

八、數(shù)組和數(shù)組列表

  1. 使用數(shù)組

    新建數(shù)組:int[] nums

    數(shù)組初始化:nums =new int[10];nums = int[] {1,2,3,4};y

  2. 構(gòu)造數(shù)組

    也可以直接構(gòu)造數(shù)組:int [] nums = {1,2,3,4};

    數(shù)組長(zhǎng)度為0和空指針null不同

  3. 數(shù)組列表

    構(gòu)造數(shù)組時(shí),必須指定長(zhǎng)度,一旦構(gòu)造好,數(shù)組的長(zhǎng)度不能再變

    使用java.util包中的ArrayList類來(lái)管理數(shù)組

    ? 聲明變量:ArrayList<String> friends =new ArrayList<>();

    聲明之后結(jié)果為一個(gè)大小為0的數(shù)組列表,可以用add方法給末尾加元素

    訪問(wèn)元素要使用get方法,不能用[]直接訪問(wèn)

    size方法可返回當(dāng)前列表大小

  4. 基本類型包裝類

    泛型類不能使用基本類型作為類型參數(shù),可以使用包裝類

    每一種基本類型都有對(duì)應(yīng)的包裝類

    Integer、Byte、Short、Long、Character、Float、Double和Boolean

    ==和!=操作符比較引用對(duì)象而不是對(duì)象的內(nèi)容

  5. 增強(qiáng)的for循環(huán)

    for(int n:numbers){}

    其中的n不是索引值,而是被賦值為numbers[0]、numbers[1]等

  6. 數(shù)組與數(shù)組列表的復(fù)制

    數(shù)組直接等于的復(fù)制是引用直接指向同一個(gè)數(shù)組

    若真正復(fù)制數(shù)組需要使用靜態(tài)方法Array.copyOf

    int[] copiedPrimes = Arrays.copyOf(primes,primes.length);

    該方法構(gòu)造一個(gè)期望長(zhǎng)度的新數(shù)組,并將原數(shù)組的元素復(fù)制進(jìn)去

  7. 數(shù)組算法

    Arrays(數(shù)組)類 Collections(集合)類

    對(duì)數(shù)組或數(shù)組列表排序,使用sort方法

    Arrays.sort(names)Collections.sort(friends)

    toString() 產(chǎn)生一個(gè)數(shù)組的字符串表示

  8. 命令行參數(shù)

    當(dāng)用命令行執(zhí)行程序時(shí),命令行中的指定參數(shù)就賦值給main函數(shù)中的args

  9. 多維數(shù)組

    Java中的多維數(shù)組是通過(guò)數(shù)組的數(shù)組來(lái)實(shí)現(xiàn)

    int[][] square =new int[4][4];

九、功能分解

靜態(tài)方法,即static修飾的方法可在main中直接調(diào)用

變長(zhǎng)參數(shù)必須是方法中的最后一個(gè)參數(shù),用修飾符... 修飾

public static double max(double first,double ... rest);

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 3,143評(píng)論 2 9
  • 1.Java跨平臺(tái)的原理: 1)編譯之后會(huì)生成與平臺(tái)無(wú)關(guān)的字節(jié)碼文件2)得依賴不同平臺(tái)的虛擬機(jī)(JVM)JVM是不...
    寒橋閱讀 414評(píng)論 0 1
  • 一、Java 原型數(shù)據(jù)有8種 1. 整型 int 32 位 4字節(jié) 2. 短整型 short 16位 2 字節(jié) ...
    姜海濤閱讀 181評(píng)論 0 0
  • 面向?qū)ο笾饕槍?duì)面向過(guò)程。 面向過(guò)程的基本單元是函數(shù)。 什么是對(duì)象:EVERYTHING IS OBJECT(萬(wàn)物...
    sinpi閱讀 1,220評(píng)論 0 4
  • Win7下如何打開DOS控制臺(tái)? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,708評(píng)論 4 12

友情鏈接更多精彩內(nèi)容