Java基礎學習

計算機的基礎知識

1:計算機概述(了解)

(1)計算機
(2)計算機硬件
(3)計算機軟件
    系統(tǒng)軟件:window,linux,mac
    應用軟件:qq,yy,飛秋
(4)軟件開發(fā)(理解)
    軟件:是由數(shù)據(jù)和指令組成的你弦。(計算器)
    開發(fā):就是把軟件做出來县钥。
    如何實現(xiàn)軟件開發(fā)呢?
        就是使用開發(fā)工具和計算機語言做出東西來
(5)語言
    自然語言:人與人交流溝通的
    計算機語言:人與計算機交流溝通的
        C,C++,C#,Java
(6)人機交換
    圖形界面:操作方便只管
    DOS命令:需要記憶一些常見的命令

2:鍵盤功能鍵的認識和快捷鍵(掌握)

(1)功能鍵的認識
    tab
    shift
    ctrl
    alt
    windos
    空格
    上下左右
    回車
    截圖
(2)快捷鍵
    全選  Ctrl+A
    復制  Ctrl+C
    粘貼  Ctrl+V
    剪切  Ctrl+X
    撤銷  Ctrl+Z
    保存  Ctrl+S

3:常見的DOS命令(掌握)

(1)常見的如下
    盤符的切換
        d:回車
    目錄的進入
        cd javase
        cd javase\day01\code
    目錄的回退
        cd..
        cd\
    清屏
        cls
    退出
        exit
(2)其他的幾個(了解)
    創(chuàng)建目錄
        mkdir
    刪除目錄
        rmdir
    創(chuàng)建文件
        edit
    刪除文件
        del
    顯示目錄下的內(nèi)容
        dir
    刪除帶內(nèi)容的目錄
        rd /s/q

4:Java語言概述(了解)

(1)Java語言的發(fā)展史
    Java之父
    JDK1.4.2
    JDK5
    JDK7
(2)Java語言的特點
    有很多小特點隙畜,重點有兩個開源螺捐,跨平臺
(3)Java語言是跨平臺的灰殴,請問是如何保證的呢?(理解)
    我們是通過翻譯的案例講解的脖阵。
    
    針對不同的操作系統(tǒng)拇派,提供不同的jvm來實現(xiàn)的拍屑。
(4)Java語言的平臺
    JavaSE
    JavaME--Android
    JavaEE

5:JDK,JRE,JVM的作用及關系(掌握)

(1)作用
    JVM:保證Java語言跨平臺
    JRE:Java程序的運行環(huán)境
    JDK:Java程序的開發(fā)環(huán)境
(2)關系
    JDK:JRE+工具
    JRE:JVM+類庫

6:JDK的下載,安裝,卸載(掌握)

(1)下載到官網(wǎng)途戒。
    A:也可以到百度搜索即可。
    B:我給你僵驰。
(2)安裝
    A:綠色版   解壓就可以使用
    B:安裝版   必須一步一步的安裝喷斋,一般只要會點擊下一步即可
    
    注意:
        建議所有跟開發(fā)相關的軟件都不要安裝在有中文或者空格的目錄下。
(3)卸載
    A:綠色版   直接刪除文件夾
    B:安裝版   
        a:控制面板 -- 添加刪除程序
        b:通過專業(yè)的軟件卸載工具矢渊。(比如360的軟件管家卸載)

7:第一個程序:HelloWorld案例(掌握)

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("HelloWorld");
    }
}
(1)程序解釋:
    A:Java程序的最基本單位是類继准,所以我們要定義一個類。
        格式:class 類名
        舉例:class HelloWorld
    B:在類中寫內(nèi)容的時候矮男,用大括號括起來移必。
    C:Java程序要想執(zhí)行,必須有main方法毡鉴。
        格式:public static void main(String[] args)
    D:要指向哪些東西呢崔泵,也用大括號括起來。
    E:你要做什么呢?今天我們僅僅做了一個簡單的輸出
        格式:System.out.println("HelloWorld");
        注意:""里面的內(nèi)容是可以改動的猪瞬。

(2)Java程序的開發(fā)執(zhí)行流程:
    A:編寫java源程序(.java)
    B:通過javac命令編譯生成.class文件
    C:通過java命令運行.class文件

8:常見的問題(掌握)

(1)擴展名被隱藏
    如何找到:工具--文件夾選項--查看--去除隱藏擴展名的那個勾勾
(2)我要求文件名稱和類名一致憎瘸。
    實際上不這樣做也是可以的。
    但是陈瘦,注意:
        javac后面跟的是文件名+擴展名
        java后面跟的類名不帶擴展名
(3)Java語言嚴格區(qū)分大小寫幌甘,請注意。
     還有就是單詞不要寫錯了痊项。
(4)見到非法字符: \65307肯定是中文問題锅风。
    我們寫程序要求標點符號必須全部是英文狀態(tài)。
(5)括號的配對問題鞍泉。
    一般來說皱埠,括號都是成對出現(xiàn)的。
(6)遇到
    在類 HelloWorld 中找不到主方法, 請將主方法定義為
    public static void main(String[] args)
    肯定是主方法的格式問題咖驮。

9:path環(huán)境變量(掌握)

(1)path環(huán)境變量的作用
    保證javac命令可以在任意目錄下運行边器。
    同理可以配置qq等
(2)path配置的兩種方案:
    A:方案1(了解)
    B:方案2
        找到環(huán)境變量的位置训枢,在系統(tǒng)變量里面
        新建:
            變量名:JAVA_HOME
            變量值:D:\develop\Java\jdk1.7.0_60
        修改:
            變量名:Path
            變量值:%JAVA_HOME%\bin;以前的內(nèi)容

10:classpath環(huán)境變量(理解)

(1)classpath環(huán)境變量的作用
    保證class文件可以在任意目錄下運行
(2)classpath環(huán)境變量的配置
    找到環(huán)境變量的位置,在系統(tǒng)變量里面
    新建:
        變量名:classpath
        變量值:E:\JavaSE\day01\code\HelloWorld案例

Java語言基礎

1:關鍵字(掌握)

(1)被Java語言賦予特定含義的單詞
(2)特點:
    全部小寫忘巧。
(3)注意事項:
    A:goto和const作為保留字存在恒界。
    B:類似于Notepad++這樣的高級記事本會對關鍵字有特殊顏色標記

2:標識符(掌握)

(1)就是給類,接口砚嘴,方法仗处,變量等起名字的字符序列
(2)組成規(guī)則:
    A:英文大小寫字母
    B:數(shù)字
    C:$和_
(3)注意事項:
    A:不能以數(shù)字開頭
    B:不能是java中的關鍵字
    C:區(qū)分大小寫
(4)常見的命名規(guī)則(見名知意)
    A:包 全部小寫
        單級包:小寫
            舉例:liuyi,com
        多級包:小寫娜汁,并用.隔開
            舉例:cn.itcast,com.baidu              
    B:類或者接口
        一個單詞:首字母大寫
            舉例:Student,Demo
        多個單詞:每個單詞首字母大寫
            舉例:HelloWorld,StudentName
    C:方法或者變量
        一個單詞:首字母小寫
            舉例:name,main
        多個單詞:從第二個單詞開始趴拧,每個單詞首字母大寫
            舉例:studentAge,showAllNames()
    D:常量
        全部大寫
        一個單詞:大寫
            舉例:PI
        多個單詞:大寫,并用_隔開
            舉例:STUDENT_MAX_AGE

3:注釋(掌握)

(1)就是對程序進行解釋說明的文字
(2)分類:
    A:單行注釋  //
    B:多行注釋  /**/
    C:文檔注釋(后面講) /** */
(3)把HelloWorld案例寫了一個帶注釋的版本羹饰。
    后面我們要寫一個程序的過程也颤。
    需求:
    分析:
    實現(xiàn):
    代碼體現(xiàn):
(4)注釋的作用
    A:解釋說明程序洋幻,提高了代碼的閱讀性。
    B:可以幫助我們調(diào)試程序翅娶。
        后面我們會講解一個更高端的一個調(diào)試工具

4:常量(掌握)

(1)在程序執(zhí)行的過程中文留,其值不發(fā)生改變的量
(2)分類:
    A:字面值常量
    B:自定義常量(后面講)
(3)字面值常量
    A:字符串常量 "hello"
    B:整數(shù)常量  12,23
    C:小數(shù)常量  12.345
    D:字符常量  'a','A','0'
    E:布爾常量  true,false
    F:空常量   null(后面講)
(4)在Java中針對整數(shù)常量提供了四種表現(xiàn)形式
    A:二進制   由0,1組成竭沫。以0b開頭燥翅。
    B:八進制   由0,1蜕提,...7組成森书。以0開頭。
    C:十進制   由0谎势,1凛膏,...9組成。整數(shù)默認是十進制脏榆。
    D:十六進制  由0猖毫,1,...9,a,b,c,d,e,f(大小寫均可)組成须喂。以0x開頭吁断。

5:進制轉(zhuǎn)換(了解)

(1)其他進制到十進制
    系數(shù):就是每一個位上的數(shù)值
    基數(shù):x進制的基數(shù)就是x
    權(quán):對每一個位上的數(shù)據(jù),從右坞生,并且從0開始編號仔役,對應的編號就是該數(shù)據(jù)的權(quán)。
    
    結(jié)果:系數(shù)*基數(shù)^權(quán)次冪之和恨胚。
(2)十進制到其他進制
    除基取余骂因,直到商為0炎咖,余數(shù)反轉(zhuǎn)赃泡。
(3)進制轉(zhuǎn)換的快速轉(zhuǎn)換法
    A:十進制和二進制間的轉(zhuǎn)換
        8421碼寒波。
    B:二進制到八進制,十六進制的轉(zhuǎn)換

6:變量(掌握)

(1)在程序的執(zhí)行過程中升熊,其值在某個范圍內(nèi)可以發(fā)生改變的量
(2)變量的定義格式:
    A:數(shù)據(jù)類型 變量名 = 初始化值;
    B:數(shù)據(jù)類型 變量名;
      變量名 = 初始化值;

7:數(shù)據(jù)類型(掌握)

(1)Java是一種強類型語言俄烁,針對每種數(shù)據(jù)都提供了對應的數(shù)據(jù)類型。
(2)分類:
    A:基本數(shù)據(jù)類型:4類8種
    B:引用數(shù)據(jù)類型:類级野,接口页屠,數(shù)組。
(3)基本數(shù)據(jù)類型
    A:整數(shù)            占用字節(jié)數(shù)
        byte            1
        short           2
        int             4
        long            8
    B:浮點數(shù)
        float           4
        double          8
    C:字符
        char            2
    D:布爾
        boolean         1
        
    注意:
        整數(shù)默認是int類型蓖柔,浮點數(shù)默認是double辰企。
        
        長整數(shù)要加L或者l。
        單精度的浮點數(shù)要加F或者f况鸣。

8:數(shù)據(jù)類型轉(zhuǎn)換(掌握)

(1)boolean類型不參與轉(zhuǎn)換
(2)默認轉(zhuǎn)換
    A:從小到大
    B:byte,short,char -- int -- long -- float -- double
    C:byte,short,char之間不相互轉(zhuǎn)換牢贸,直接轉(zhuǎn)成int類型參與運算。
(3)強制轉(zhuǎn)換
    A:從大到小
    B:可能會有精度的損失镐捧,一般不建議這樣使用潜索。
    C:格式:
        目標數(shù)據(jù)類型 變量名 = (目標數(shù)據(jù)類型) (被轉(zhuǎn)換的數(shù)據(jù));
(4)思考題和面試題:
    A:下面兩種方式有區(qū)別嗎?
        
        float f1 = 12.345f;//本來就是float
        float f2 = (float)12.345;//double轉(zhuǎn)float

    B:下面的程序有問題嗎,如果有懂酱,在哪里呢?
        
        byte b1 = 3;
        byte b2 = 4;
        byte b3 = b1 + b2;//b1+b2是int,需要強轉(zhuǎn)(byte)(b1 + b2)
        byte b4 = 3 + 4;//會先判斷3+4的值是否在byte區(qū)間內(nèi),區(qū)間內(nèi)就沒問題

    C:下面的操作結(jié)果是什么呢?
        byte b = (byte)130;//-126
        
    D:字符參與運算
        是查找ASCII里面的值
        'a'     97
        'A'     65
        '0'     48

        System.out.println('a');//a
        System.out.println('a' + 1);//98

    E:字符串參與運算
        這里其實是字符串的連接     

        System.out.println("hello"+'a'+1);//helloa1
        System.out.println('a'+1+"hello");//98hello
        System.out.println("5+5="+5+5);//5+5=55
        System.out.println(5+5+"=5+5");//10=5+5

1:運算符(掌握)

(1)算術運算符
    A:+,-,*,/,%,++,--
    B:+的用法
        a:加法
        b:正號
        c:字符串連接符
    C:/和%的區(qū)別
        數(shù)據(jù)做除法操作的時候竹习,/取得是商,%取得是余數(shù)
    D:++和--的用法
        a:他們的作用是自增或者自減
        b:使用
            **單獨使用
                放在操作數(shù)據(jù)的前面和后面效果一樣列牺。
                a++或者++a效果一樣整陌。
            **參與操作使用
                放在操作數(shù)的前面:先自增或者自減,再參與操作
                    int a = 10;
                    int b = ++a;
                放在操作數(shù)的后面:先參與操作瞎领,再自增或者自減
                    int a = 10;
                    int b = a++;
(2)賦值運算符
    A:=,+=,-=,*=,/=,%=等
    B:=叫做賦值運算符蔓榄,也是最基本的賦值運算符
        int x = 10; 把10賦值給int類型的變量x。
    C:擴展的賦值運算符的特點
        隱含了自動強制轉(zhuǎn)換默刚。
        
面試題:

short s = 1;
s = s + 1;//有問題,需要強轉(zhuǎn)(short)(s + 1)

short s = 1;
s += 1;//沒問題,隱含了自動強制轉(zhuǎn)換

請問上面的代碼哪個有問題?

(3)比較運算符
    A:==,!=,>,>=,<,<=
    B:無論運算符兩端簡單還是復雜最終結(jié)果是boolean類型甥郑。
    C:千萬不要把==寫成了=
(4)邏輯運算符
    A:&,|,^,!,&&,||
    B:邏輯運算符用于連接boolean類型的式子
    C:結(jié)論
        &:有false則false
        |:有true則true
        ^:相同則false,不同則true荤西。
            情侶關系澜搅。
        !:非true則false,非false則true
        
        &&:結(jié)果和&是一樣的邪锌,只不過有短路效果勉躺。左邊是false,右邊不執(zhí)行觅丰。
        ||:結(jié)果和|是一樣的饵溅,只不過有短路效果。左邊是true妇萄,右邊不執(zhí)行蜕企。
(5)位運算符(了解)
    A:^的特殊用法
        一個數(shù)據(jù)針對另一個數(shù)據(jù)位異或兩次咬荷,該數(shù)不變
    B:面試題
        a:請實現(xiàn)兩個變量的交換
            **采用第三方變量
            **用位異或運算符
                左邊a,b,a
                右邊a^b
        b:請用最有效率的方式計算出2乘以8的結(jié)果
            2<<3
(6)三元運算符
    A:格式
        比較表達式?表達式1:表達式2;
    B:執(zhí)行流程:
        首先計算比較表達式的值,看是true還是false轻掩。
        如果是true幸乒,表達式1就是結(jié)果。
        如果是false唇牧,表達式2就是結(jié)果罕扎。
    C:案例:
        a:比較兩個數(shù)據(jù)是否相等
            System.out.println(a == b ? true : false);
        b:獲取兩個數(shù)據(jù)中的最大值
            System.out.println(a > b ? a : b);
        c:獲取三個數(shù)據(jù)中的最大值
            System.out.println((a>b?a:b)>c?(a>b?a:b):c);

2:鍵盤錄入(掌握)

(1)實際開發(fā)中,數(shù)據(jù)是變化的丐重,為了提高程序的靈活性腔召,我們加入鍵盤錄入數(shù)據(jù)。
(2)如何實現(xiàn)呢?目前就記住
    A:導包
        import java.util.Scanner;
        位置:在class的上邊
    B:創(chuàng)建對象
        Scanner sc = new Scanner(System.in);
    C:獲取數(shù)據(jù)
        int x = sc.nextInt();
(3)把三元運算符的案例加入鍵盤錄入改進扮惦。
    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt();
    int b = sc.nextInt();
    System.out.println(a > b ? a : b);

3:流程控制語句

(1)順序結(jié)構(gòu) 從上往下宴咧,依次執(zhí)行
(2)選擇結(jié)構(gòu) 按照不同的選擇,執(zhí)行不同的代碼
(3)循環(huán)結(jié)構(gòu) 做一些重復的代碼

4:if語句(掌握)

(1)三種格式
    A:格式1
        if(比較表達式) {
            語句體;
        }
        
        執(zhí)行流程:
            判斷比較表達式的值径缅,看是true還是false
            如果是true掺栅,就執(zhí)行語句體
            如果是false,就不執(zhí)行語句體
    
    B:格式2
        if(比較表達式) {
            語句體1;
        }else {
            語句體2;
        }
        
        執(zhí)行流程:
            判斷比較表達式的值纳猪,看是true還是false
            如果是true氧卧,就執(zhí)行語句體1
            如果是false,就執(zhí)行語句體2
            
    C:格式3
        if(比較表達式1) {
            語句體1;
        }else if(比較表達式2){
            語句體2;
        }
        ...
        else {
            語句體n+1;
        }
        
        執(zhí)行流程:
            判斷比較表達式1的值氏堤,看是true還是false
            如果是true沙绝,就執(zhí)行語句體1
            如果是false,就繼續(xù)判斷比較表達式2的值鼠锈,看是true還是false
            如果是true闪檬,就執(zhí)行語句體2
            如果是false,就繼續(xù)判斷比較表達式3的值购笆,看是true還是false
            ...
            如果都不滿足粗悯,就執(zhí)行語句體n+1
(2)注意事項
    A:比較表達式無論簡單還是復雜,結(jié)果是boolean類型
    B:if語句控制的語句體如果是一條語句同欠,是可以省略大括號的样傍;如果是多條,不能省略铺遂。
        建議:永遠不要省略衫哥。
    C:一般來說,有左大括號襟锐,就沒有分號撤逢,有分號,就沒有左大括號。
    D:else后面如果沒有if蚊荣,是不會出現(xiàn)比較表達式的初狰。
    E:三種if語句其實都是一個語句,只要有一個執(zhí)行妇押,其他的就不再執(zhí)行。
(3)案例:
    A:比較兩個數(shù)是否相等
        
        if (a == b) {
            System.out.println("a == b");
        }

    B:獲取兩個數(shù)中的最大值
        
        if (a > b) {
            System.out.println(a);
        } else if (a < b) {
            System.out.println(b);
        }

    C:獲取三個數(shù)中的最大值(if語句的嵌套)
        if (a > b) {
            if (a > c) {
                System.out.println(a);
            } else if (c > a) {
                System.out.println(c);
            } else if (b > a) {
                if (b > c) {
                    System.out.println(b);
                } else if (c > b) {
                    System.out.println(c);
                }
            }

    D:根據(jù)成績輸出對應的等級
        if (score > 0 && score < 60) {
            System.out.println("不及格");
        } else if (score >= 60 && score < 90) {
            System.out.println("合格");
        } else if (score >= 90 && score <= 100) {
            System.out.println("優(yōu)秀");
        }
    E:根據(jù)月份姓迅,輸出對應的季節(jié)
    F:根據(jù)x計算對應y的值并輸出
(4)三元運算符和if語句第二種格式的關系
    所有的三元運算符能夠?qū)崿F(xiàn)的敲霍,if語句的第二種格式都能實現(xiàn)。
    反之不成立丁存。
    
    如果if語句第二種格式控制的語句體是輸出語句肩杈,就不可以。
    因為三元運算符是一個運算符解寝,必須要有一個結(jié)果返回扩然,不能是一個輸出語句。

1:switch語句(掌握)

(1)格式:
    switch(表達式) {
        case 值1:
            語句體1;
            break;
        case 值2:
            語句體2;
            break;
        ...
        default:
            語句體n+1;
            break;
    }
    
    格式解釋說明:
        switch:說明這是switch語句聋伦。
        表達式:可以是byte,short,int,char
            JDK5以后可以是枚舉
            JDK7以后可以是字符串
        case:后面的值就是要和表達式進行比較的值
        break:表示程序到這里中斷夫偶,跳出switch語句
        default:如果所有的情況都不匹配,就執(zhí)行這里,相當于if語句中的else
(2)面試題
    switch語句的表達式可以是byte嗎?可以是long嗎?可以是String嗎?
        可以,不可以,JDK7以后可以
(3)執(zhí)行流程:
    A:首先計算表達式的值
    B:和每一個case進行匹配,如果有就執(zhí)行對應的語句體觉增,看到break就結(jié)束兵拢。
    C:如果沒有匹配,就執(zhí)行default的語句體n+1逾礁。
(4)注意事項:
    A:case后面只能是常量说铃,不能是變量,而且嘹履,多個case后面的值不能出現(xiàn)相同的
    B:default可以省略嗎?
        可以省略腻扇,但是不建議,因為它的作用是對不正確的情況給出提示砾嫉。
        特殊情況:
            case就可以把值固定幼苛。
            A,B,C,D
    C:break可以省略嗎?
        可以省略,但是結(jié)果可能不是我們想要的焕刮。
        會出現(xiàn)一個現(xiàn)象:case穿透蚓峦。
        最終我們建議不要省略
    D:default一定要在最后嗎?
        不是,可以在任意位置济锄。但是建議在最后暑椰。
    E:switch語句的結(jié)束條件
        a:遇到break就結(jié)束了
        b:執(zhí)行到末尾就結(jié)束了
(5)案例:
    A:鍵盤錄入一個數(shù)字(1-7),輸出對應的星期幾。
        Scanner sc = new Scanner(System.in);

            switch (sc.nextInt()) {
            case 1:
                System.out.println("Monday");
                break;
            case 2:
                System.out.println("Tuesday");
                break;
            case 3:
                System.out.println("Wednesday");
                break;
            case 4:
                System.out.println("Thursday");
                break;
            case 5:
                System.out.println("Friday");
                break;
            case 6:
                System.out.println("Saturday");
                break;
            case 7:
                System.out.println("Sunday");
                break;
            default:
                System.out.println("wrong");
        }
    B:單項選擇題
    C:鍵盤錄入一個字符串的問題
        String s = sc.nextLine();
    D:根據(jù)給定的月份,輸出對應的季節(jié)
(6)if語句和switch語句各自的場景
    A:if
        針對boolean類型的判斷
        針對一個范圍的判斷
        針對幾個常量的判斷
    B:switch
        針對幾個常量的判斷

2:循環(huán)語句(掌握)

(1)有三種:for,while,do...while
(2)for循環(huán)語句
    A:格式
        for(初始化語句;判斷條件語句;控制條件語句){
            循環(huán)體語句;
        }
        
        執(zhí)行流程:
            a:執(zhí)行初始化語句
            b:執(zhí)行判斷條件語句
                如果這里是true荐绝,就繼續(xù)
                如果這里是false一汽,循環(huán)就結(jié)束
            c:執(zhí)行循環(huán)體語句
            d:執(zhí)行控制條件語句
            e:回到b
    B:注意事項
        a:判斷條件語句無論簡單還是復雜,結(jié)果是boolean類型
        b:循環(huán)體語句如果是一條,可以省略大括號召夹,但是不建議
        c:有分號就沒有左大括號岩喷,有左大括號就沒有分號
    C:案例
        a:輸出10次HelloWorld
            for (int i = 0; i < 10; i++) {
                System.out.println("HelloWorld");
            }
        b:輸出1-10的數(shù)據(jù)
            for (int i = 1; i < 11; i++) {
                System.out.println(i);
            }
        c:輸出10-1的數(shù)據(jù)
            for (int i = 10; i > 0; i--) {
                System.out.println(i);
            }
        d:求1-10的和
            int sum = 0;
            for (int i = 1; i < 11; i++) {
                sum += i;
            }
            System.out.println(sum);
        e:求1-100的和,求1-100的偶數(shù)和,求1-100的奇數(shù)和
            int sum = 0;
            int oddSum = 0;
            int evenSum = 0;
    
            for (int i = 1; i < 101; i++) {
                sum += i;
            }
            System.out.println("sum:" + sum);
    
            for (int i = 1; i < 101; i+=2) {
                oddSum += i;
            }
            System.out.println("oddSum:" + oddSum);
    
            for (int i = 2; i < 101; i+=2) {
                evenSum += i;
            }
            System.out.println("evenSum:" + evenSum);
        f:求5的階乘
            int sum = 1;
            for (int i = 5; i > 0; i--) {
                sum *= i;
            }
            System.out.println(sum);
        g:在控制臺打印水仙花數(shù)(個位,十位,百位的立方和等于該數(shù))
            for (int i = 100; i < 1000; i++) {
                int ge = i % 10;
                int shi = i / 10 % 10;
                int bai = i / 100 % 10;     
                if (Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3) == i) {
                    System.out.println(i);
                }
            }
        h:統(tǒng)計水仙花個數(shù)
            int flag = 0;
            for (int i = 100; i < 1000; i++) {
                int ge = i % 10;
                int shi = i / 10 % 10;
                int bai = i / 100 % 10;
                if (Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3) == i) {
                    flag++;
                }
            }
            System.out.println(flag);
        i:改進版的回文數(shù)
            一個五位數(shù)
            個位 = 萬位
            十位 = 千位
            個位 + 十位 + 千位 + 萬位 = 百位
            for (int i = 10000; i < 100000; i++) {
                int ge = i % 10;
                int shi = i / 10 %10;
                int bai = i / 100 % 10;
                int qian = i /1000 % 10;
                int wan = i / 10000 % 10;
                if (ge == wan && shi == qian && (ge + shi + qian + wan) == bai) {
                    System.out.println(i);
                }
            }
        j:統(tǒng)計1-1000之間同時滿足如下條件的數(shù)據(jù)有多少個
            x%3==2
            x%5==3
            x%7==2
            int flag = 0;
            for (int i = 1; i < 1001; i++) {
                if (i % 3 == 2 && i % 5 == 3 && i % 7 == 2) {
                    flag++;
                }
            }
            System.out.println(flag);
(3)while循環(huán)
    A:基本格式
        while(判斷條件語句) {
            循環(huán)體語句;
        }
        
        擴展格式:
        初始化語句;
        while(判斷條件語句){
            循環(huán)體語句;
            控制條件語句;
        }
        
        通過查看這個格式,我們就知道while循環(huán)可以和for循環(huán)等價轉(zhuǎn)換监憎。
    B:while的練習
        把for語句的練習用while改進
    C:for和while的區(qū)別
        a:使用上的區(qū)別
            for語句的那個控制條件變量,在循環(huán)結(jié)束后不能在使用了纱意。
            而while的可以繼續(xù)使用。
        b:理解上的區(qū)別
            for適合于一個范圍的判斷
            while適合次數(shù)不明確的
                舉例:吃葡萄
    D:案例:
        a:珠穆朗瑪峰問題
        b:小芳存錢問題(break以后才能做)
(4)do...while循環(huán)
    A:基本格式
        do {
            循環(huán)體語句;
        }while(判斷條件語句);
        
        擴展格式:
        初始化語句;
        do {
            循環(huán)體語句;
            控制條件語句;
        }while(判斷條件語句);
        
        通過查看格式鲸阔,我們就可以看出其實三種循環(huán)的格式可以是統(tǒng)一的偷霉。
    B:三種循環(huán)的區(qū)別
        a:do...while循環(huán)至少執(zhí)行一次循環(huán)體
        b:for和while必須先判斷條件是否是true,然后后才能決定是否執(zhí)行循環(huán)體
(5)循環(huán)使用的注意事項(死循環(huán))
    A:一定要注意修改控制條件,否則容易出現(xiàn)死循環(huán)褐筛。
    B:最簡單的死循環(huán)格式
        a:while(true){...}
        
        b:for(;;){}

3:控制跳轉(zhuǎn)語句(掌握)

(1)break:中斷的意思
    A:用在循環(huán)和switch語句中类少,離開此應用場景無意義。
    B:作用
        a:跳出單層循環(huán)
        b:跳出多層循環(huán)渔扎,需要標簽語句的配合
(2)continue:繼續(xù)
    A:用在循環(huán)中硫狞,離開此應用場景無意義。
    B:作用
        a:跳出單層循環(huán)的一次晃痴,可以繼續(xù)下一次
    C:填空題
        for(int x=1; x<=10; x++) {
            if(x%3 == 0) {
                //補齊代碼
            }
            System.out.println("Java基礎班");
        }
        如何讓控制臺輸出2次:Java基礎班
            break;
        如何讓控制臺輸出7次:Java基礎班
            continue;
        如何讓控制臺輸出13次:Java基礎班
            System.out.println("Java基礎班");
(3)return:返回
    A:用于結(jié)束方法的残吩,后面還會在繼續(xù)講解和使用。
    B:一旦遇到return,程序就不會在繼續(xù)往后執(zhí)行倘核。

1:方法(掌握)

(1)方法:就是完成特定功能的代碼塊世剖。
    注意:在很多語言里面有函數(shù)的定義,而在Java中笤虫,函數(shù)被稱為方法旁瘫。
(2)格式:
    修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2...) {
        方法體語句;
        return 返回值;
    }


    修飾符:目前就用 public static。后面再詳細講解其他修飾符
    返回值類型:就是功能結(jié)果的數(shù)據(jù)類型
    方法名:就是起了一個名字琼蚯,方便我們調(diào)用該方法酬凳。
    參數(shù)類型:就是參數(shù)的數(shù)據(jù)類型
    參數(shù)名:就是變量
    參數(shù)分類:
        實參:實際參與運算的數(shù)據(jù)
        形參:方法上定義的,用于接收實際參數(shù)的變量
    方法體語句:就是完成功能的代碼塊
    return:結(jié)束方法
    返回值:就是功能的結(jié)果遭庶,由return帶給調(diào)用者宁仔。
(3)兩個明確:
    返回值類型:結(jié)果的數(shù)據(jù)類型
    參數(shù)列表:參數(shù)的個數(shù)及對應的數(shù)據(jù)類型
(4)方法調(diào)用
    A:有明確返回值的方法
        a:單獨調(diào)用,沒有意義
        b:輸出調(diào)用峦睡,不是很好翎苫,因為我可能需要不結(jié)果進行進一步的操作。但是講課一般我就用了榨了。
        c:賦值調(diào)用煎谍,推薦方案
    B:void類型修飾的方法
        a:單獨調(diào)用
(5)案例:
    A:求和方案
        public static void sum(int a, int b) {
            System.out.println("a + b = " + (a + b));
        }
    B:獲取兩個數(shù)中的較大值
        public static void max(int a, int b) {
            if (a > b) {
                System.out.println(a);
            } else if (b > a) {
                System.out.println(b);
            }
        }
    C:比較兩個數(shù)據(jù)是否相同
        public static void isEquals(int a, int b) {
            if (a == b) {
                System.out.println("a == b");
            }
        }
    D:獲取三個數(shù)中的最大值
        public static void max(int a, int b, int c) {
            if (a > b) {
                if (a > c) {
                    System.out.println(a);
                } else if (c > a) {
                    System.out.println(c);
                }
            } else if (b > a) {
                if (b > c) {
                    System.out.println(b);
                } else if (c > b) {
                    System.out.println(c);
                }
            }
        }
    E:輸出m行n列的星形
        public static void printStar(int row, int column) {
            for (int m = 0; m < row; m++) {
                String star = "";
                for (int n = 0; n < column; n++) {
                    star += "*";
                }
                System.out.println(star);
            }
            System.out.println("--------------");
            for (int m = 0; m < row; m++) {
                String star = "";
                for (int n = 0; n <= m; n++) {
                    star += "*";
                }
                System.out.println(star);
            }
            System.out.println("---------------");
            for (int m = row; m > 0; m--) {
                String star = "";
                for (int n = 0; n < m; n++) {
                    star += "*";
                }
                System.out.println(star);
            }
        }
    F:輸出nn乘法表
        public static void chengfabiao(int n) {
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= i; j++) {
                    System.out.print(j + " * " + i + " = " + (j * i) + "\t");
                }
                System.out.println();
            }
        }
(6)方法的注意事項
    A:方法不調(diào)用不執(zhí)行
    B:方法之間是平級關系,不能嵌套定義
    C:方法定義的時候龙屉,參數(shù)是用呐粘,隔開的
    D:方法在調(diào)用的時候满俗,不用在傳遞數(shù)據(jù)類型
    E:如果方法有明確的返回值類型,就必須有return語句返回作岖。
(7)方法重載
    在同一個類中唆垃,方法名相同,參數(shù)列表不同痘儡。與返回值無關辕万。
    
    參數(shù)列表不同:
        參數(shù)的個數(shù)不同。
        參數(shù)的對應的數(shù)據(jù)類型不同沉删。
(8)方法重載案例
    不同的類型的多個同名方法的比較渐尿。

2:數(shù)組(掌握)

(1)數(shù)組:存儲同一種數(shù)據(jù)類型的多個元素的容器。
(2)特點:每一個元素都有編號丑念,從0開始涡戳,最大編號是長度-1结蟋。
         編號的專業(yè)叫法:索引
(3)定義格式
    A:數(shù)據(jù)類型[] 數(shù)組名;
    B:數(shù)據(jù)類型 數(shù)組名[];
    
    推薦是用A方式脯倚,B方法就忘了吧。
    但是要能看懂
(4)數(shù)組的初始化
    A:動態(tài)初始化
        只給長度嵌屎,系統(tǒng)給出默認值
        
        舉例:int[] arr = new int[3];
    B:靜態(tài)初始化
        給出值推正,系統(tǒng)決定長度
        
        舉例:int[] arr = new int[]{1,2,3};
        簡化版:int[] arr = {1,2,3};
(5)Java的內(nèi)存分配
    A:棧 存儲局部變量
    B:堆 存儲所有new出來的
    C:方法區(qū)(面向?qū)ο蟛糠衷敿氈v解)
    D:本地方法區(qū)(系統(tǒng)相關)
    E:寄存器(CPU使用)
    
    注意:
        a:局部變量 在方法定義中或者方法聲明上定義的變量。
        b:棧內(nèi)存和堆內(nèi)存的區(qū)別
            棧:數(shù)據(jù)使用完畢宝惰,就消失植榕。
            堆:每一個new出來的東西都有地址
                每一個變量都有默認值
                    byte,short,int,long 0
                    float,double 0.0
                    char '\u0000'
                    boolean false
                    引用類型 null
                數(shù)據(jù)使用完畢后,在垃圾回收器空閑的時候回收尼夺。
(6)數(shù)組內(nèi)存圖
    A:一個數(shù)組
    B:二個數(shù)組
    C:三個數(shù)組(兩個棧變量指向同一個堆內(nèi)存)
(7)數(shù)組的常見操作
    A:遍歷
        方式1:
            public static void printArray(int[] arr) {
                for(int x=0; x<arr.length; x++) {
                    System.out.println(arr[x]);
                }
            }
            
        方式2:
            public static void printArray(int[] arr) {
                System.out.print("[");
                for(int x=0; x<arr.length; x++) {
                    if(x == arr.length-1) {
                        System.out.println(arr[x]+"]");
                    }else {
                        System.out.println(arr[x]+", ");
                    }
                }
            }
    B:最值
        最大值:
            public static int getMax(int[] arr) {
                int max = arr[0];
                
                for(int x=1; x<arr.length; x++) {
                    if(arr[x] > max) {
                        max = arr[x];
                    }
                }
                
                return max;
            }
            
        最小值:
            public static int getMin(int[] arr) {
                int min = arr[0];
                
                for(int x=1; x<arr.length; x++) {
                    if(arr[x] < min) {
                        min = arr[x];
                    }
                }
                
                return min;
            }
    C:逆序
        方式1:
            public static void reverse(int[] arr) {
                for(int x=0; x<arr.length/2; x++) {
                    int temp = arr[x];
                    arr[x] = arr[arr.length-1-x];
                    arr[arr.length-1-x] = temp;
                }
            }
            
        方式2:
            public static void reverse(int[] arr) {
                for(int start=0,end=arr.length-1; start<=end; start++,end--) {
                    int temp = arr[start];
                    arr[start] = arr[end];
                    arr[end] = temp;
                }
            }
    D:查表
            public static String getString(String[] strArray,int index) {
                return strArray[index];
            }
    E:基本查找
        方式1:
            public static int getIndex(int[] arr,int value) {
                for(int x=0; x<arr.length; x++) {
                    if(arr[x] == value) {
                        return x;
                    }
                }
                
                return -1;
            }
            
        方式2:
            public static int getIndex(int[] arr,int value) {
                int index = -1;
            
                for(int x=0; x<arr.length; x++) {
                    if(arr[x] == value) {
                        index = x;
                        break;
                    }
                }
                
                return index;
            }

Java面向?qū)ο?/h2>

1:成員變量和局部變量的區(qū)別(理解)

(1)在類中的位置不同
    成員變量:類中方法外
    局部變量:方法定義中或者方法聲明上
(2)在內(nèi)存中的位置不同
    成員變量:在堆中
    局部變量:在棧中
(3)生命周期不同
    成員變量:隨著對象的創(chuàng)建而存在尊残,隨著對象的消失而消失
    局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
(4)初始化值不同
    成員變量:有默認值
    局部變量:沒有默認值淤堵,必須定義寝衫,賦值,然后才能使用

2:類作為形式參數(shù)的問題?(理解)

(1)如果你看到一個方法需要的參數(shù)是一個類名拐邪,就應該知道這里實際需要的是一個具體的對象慰毅。

3:匿名對象(理解)

(1)沒有名字的對象
(2)應用場景
    A:調(diào)用方法,僅僅只調(diào)用一次的時候扎阶。
    b:可以作為實際參數(shù)傳遞汹胃。

4:封裝(理解)

(1)隱藏實現(xiàn)細節(jié),提供公共的訪問方式
(2)好處:
    A:隱藏實現(xiàn)細節(jié)东臀,提供公共的訪問方式
    B:提高代碼的復用性
    C:提高代碼的安全性
(3)設計原則
    把不想讓外界知道的實現(xiàn)細節(jié)給隱藏起來着饥,提供公共的訪問方式
(4)private是封裝的一種體現(xiàn)。
    封裝:類惰赋,方法贱勃,private修飾成員變量

5:private關鍵字(掌握)

(1)私有的意義,可以修飾成員變量和成員方法
(2)特點:
    被private修飾的后的成員只能在本類中被訪問
(3)private的應用:
    以后再寫一個類的時候:
        把所有的成員變量給private了
        提供對應的getXxx()/setXxx()方法

6:this關鍵字(掌握)

(1)代表當前類的引用對象
    記住:哪個對象調(diào)用方法贵扰,該方法內(nèi)部的this就代表那個對象
(2)this的應用場景:
    A:解決了局部變量隱藏成員變量的問題
    B:其實this還有其他的應用仇穗,明天講解。

7:構(gòu)造方法(掌握)

(1)作用:用于對對象的數(shù)據(jù)進行初始化
(2)格式:
    A:方法名和類名相同
    B:沒有返回值類型戚绕,連void都不能有
    C:沒有返回值
    
    思考題:構(gòu)造方法中可不可以有return語句呢?
    可以纹坐。只要我們寫成這個樣子就OK了:return;
    其實,在任何的void類型的方法的最后你都可以寫上:return;
(3)構(gòu)造方法的注意事項
    A:如果我們沒寫構(gòu)造方法舞丛,系統(tǒng)將提供一個默認的無參構(gòu)造方法
    B:如果我們給出了構(gòu)造方法耘子,系統(tǒng)將不再提供默認構(gòu)造方法
        如果這個時候,我們要使用無參構(gòu)造方法球切,就必須自己給出谷誓。
        推薦:永遠手動自己給出無參構(gòu)造方法。
(4)給成員變量賦值的方式
    A:setXxx()
    B:帶參構(gòu)造方法
(5)標準案例
    class Student {
        private String name;
        private int age;
        
        public Student(){}
        
        public Student(String name,int age) {
            this.name = name;
            this.age = age;
        }
        
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        public int getAge() {
            return age;
        }
        
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    測試:
    class StudentDemo {
        public static void main(String[] args) {
            //方式1
            Student s1 = new Student();
            s1.setName("林青霞");
            s1.setAge(27);
            System.out.println(s1.getName()+"---"+s1.getAge());
            
            //方式2
            Student s2 = new Student("劉意",30);
            System.out.println(s2.getName()+"---"+s2.getAge());
        }
    }

8:代碼:Student s = new Student();做了哪些事情?(理解)

(1)把Student.class文件加載到內(nèi)存
(2)在棧內(nèi)存為s開辟空間
(3)在堆內(nèi)存為學生對象申請空間
(4)給學生的成員變量進行默認初始化吨凑。null,0
(5)給學生的成員變量進行顯示初始化捍歪。林青霞,27
(6)通過構(gòu)造方法給成員變量進行初始化。劉意,30
(7)對象構(gòu)造完畢鸵钝,把地址賦值給s變量

9:面向?qū)ο蟮木毩曨}(掌握)

(1)標準的手機類的定義和測試
(2)Demo類有求和方法糙臼,Test類進行測試。
    什么時候定義成員變量?
    當該變量是用來描述一個類的時候恩商。
(3)長方形案例
(4)員工案例
(5)MyMath案例(自己提供加減乘除并測試)
    public class MyMath {
        public MyMath() {
        }
    
        public static void add(int a, int b) {
            System.out.println("add" + (a + b));
        }
    
        public static void subtract(int a, int b) {
            System.out.println("subtract" + (a - b));
        }
    
        public static void multiply(int a, int b) {
            System.out.println("multiply" + (a * b));
        }
    
        public static void divide(int a, int b) {
            System.out.println("divide" + (a / b));
        }
    }

10:static關鍵字(理解)

(1)靜態(tài)的意思变逃。可以修飾成員變量和成員方法怠堪。
(2)靜態(tài)的特點:
    A:隨著類的加載而加載
    B:優(yōu)先于對象存在
    C:被類的所有對象共享
        這其實也是我們判斷該不該使用靜態(tài)的依據(jù)揽乱。
        舉例:飲水機和水杯的問題思考
    D:可以通過類名調(diào)用
        既可以通過對象名調(diào)用,也可以通過類名調(diào)用粟矿,建議通過類名調(diào)用凰棉。
(3)靜態(tài)的內(nèi)存圖
    靜態(tài)的內(nèi)容在方法區(qū)的靜態(tài)區(qū)
(4)靜態(tài)的注意事項;
    A:在靜態(tài)方法中沒有this對象
    B:靜態(tài)只能訪問靜態(tài)(代碼測試過)
(5)靜態(tài)變量和成員變量的區(qū)別
    A:所屬不同
        靜態(tài)變量:屬于類嚷炉,類變量
        成員變量:屬于對象渊啰,對象變量,實例變量
    B:內(nèi)存位置不同
        靜態(tài)變量:方法區(qū)的靜態(tài)區(qū)
        成員變量:堆內(nèi)存
    C:生命周期不同
        靜態(tài)變量:靜態(tài)變量是隨著類的加載而加載申屹,隨著類的消失而消失
        成員變量:成員變量是隨著對象的創(chuàng)建而存在绘证,隨著對象的消失而消失
    D:調(diào)用不同
        靜態(tài)變量:可以通過對象名調(diào)用,也可以通過類名調(diào)用
        成員變量:只能通過對象名調(diào)用
(6)main方法是靜態(tài)的
    public:權(quán)限最大
    static:不用創(chuàng)建對象調(diào)用
    void:返回值給jvm沒有意義
    main:就是一個常見的名稱哗讥。
    String[] args:可以接收數(shù)據(jù)拌牲,提供程序的靈活性
        格式:java MainDemo hello world java
              java MainDemo 10 20 30

1:如何制作幫助文檔(了解)

(1)寫一個類
(2)加入文檔注釋
(3)通過javadoc工具生成即可
    javadoc -d 目錄 -author -version ArrayTool.java

2:通過JDK提供的API學習了Math類(掌握)

(1)API(Application Programming Interface)
    應用程序編程接口(幫助文檔)
(2)如何使用呢?
    請參照
        day08\code\02_如何使用JDK提供的幫助文檔\如何使用幫助文檔.txt
(3)Math類
    A:是針對數(shù)學進行操作的類
    B:沒有構(gòu)造方法氯檐,因為它的成員都是靜態(tài)的
    C:產(chǎn)生隨機數(shù)
        public static double random(): [0.0,1.0)
    D:如何產(chǎn)生一個1-100之間的隨機數(shù)
        int number = (int)(Math.random()*100)+1;
    E:猜數(shù)字小游戲

3:代碼塊(理解)

(1)用{}括起來的代碼德谅。
(2)分類:
    A:局部代碼塊
        用于限定變量的生命周期,及早釋放腐泻,提高內(nèi)存利用率。
    B:構(gòu)造代碼塊
        把多個構(gòu)造方法中相同的代碼可以放到這里队询,每個構(gòu)造方法執(zhí)行前派桩,首先執(zhí)行構(gòu)造代碼塊。
    C:靜態(tài)代碼塊
        對類的數(shù)據(jù)進行初始化蚌斩,僅僅只執(zhí)行一次铆惑。
(3)靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法的順序問題?
    靜態(tài)代碼塊 > 構(gòu)造代碼塊 > 構(gòu)造方法

4:繼承(掌握)

(1)把多個類中相同的成員給提取出來定義到一個獨立的類中。然后讓這多個類和該獨立的類產(chǎn)生一個關系员魏,
   這多個類就具備了這些內(nèi)容砰盐。這個關系叫繼承列疗。
(2)Java中如何表示繼承呢?格式是什么呢?
    A:用關鍵字extends表示
    B:格式:
        class 子類名 extends 父類名 {}
(3)繼承的好處:
    A:提高了代碼的復用性
    B:提高了代碼的維護性
    C:讓類與類產(chǎn)生了一個關系,是多態(tài)的前提
(4)繼承的弊端:
    A:讓類的耦合性增強。這樣某個類的改變,就會影響其他和該類相關的類栽烂。
        原則:低耦合躏仇,高內(nèi)聚。
        耦合:類與類的關系
        內(nèi)聚:自己完成某件事情的能力
    B:打破了封裝性
(5)Java中繼承的特點
    A:Java中類只支持單繼承
    B:Java中可以多層(重)繼承(繼承體系)
(6)繼承的注意事項:
    A:子類不能繼承父類的私有成員
    B:子類不能繼承父類的構(gòu)造方法腺办,但是可以通過super去訪問
    C:不要為了部分功能而去繼承
(7)什么時候使用繼承呢?
    A:繼承體現(xiàn)的是:is a的關系焰手。
    B:采用假設法
(8)Java繼承中的成員關系
    A:成員變量
        a:子類的成員變量名稱和父類中的成員變量名稱不一樣,這個太簡單
        b:子類的成員變量名稱和父類中的成員變量名稱一樣怀喉,這個怎么訪問呢?
            子類的方法訪問變量的查找順序:
                在子類方法的局部范圍找书妻,有就使用。
                在子類的成員范圍找躬拢,有就使用躲履。
                在父類的成員范圍找,有就使用聊闯。
                找不到工猜,就報錯。
    B:構(gòu)造方法
        a:子類的構(gòu)造方法默認會去訪問父類的無參構(gòu)造方法
            是為了子類訪問父類數(shù)據(jù)的初始化
        b:父類中如果沒有無參構(gòu)造方法菱蔬,怎么辦?
            子類通過super去明確調(diào)用帶參構(gòu)造
            子類通過this調(diào)用本身的其他構(gòu)造篷帅,但是一定會有一個去訪問了父類的構(gòu)造
            讓父類提供無參構(gòu)造
    C:成員方法
        a:子類的成員方法和父類中的成員方法名稱不一樣,這個太簡單
        b:子類的成員方法和父類中的成員方法名稱一樣拴泌,這個怎么訪問呢?
            通過子類對象訪問一個方法的查找順序:
                在子類中找魏身,有就使用
                在父類中找,有就使用
                找不到弛针,就報錯
(9)兩個面試題:
    A:Override和Overload的區(qū)別?Overload是否可以改變返回值類型?
    B:this和super的區(qū)別和各自的作用?
(10)數(shù)據(jù)初始化的面試題
    A:一個類的初始化過程
    B:子父類的構(gòu)造執(zhí)行過程
    C:分層初始化
(11)案例:
    A:學生和老師案例
        繼承前
        繼承后
    B:貓狗案例的分析和實現(xiàn)

1:final關鍵字(掌握)

(1)是最終的意思叠骑,可以修飾類,方法削茁,變量宙枷。
(2)特點:
    A:它修飾的類掉房,不能被繼承。
    B:它修飾的方法慰丛,不能被重寫卓囚。
    C:它修飾的變量,是一個常量诅病。
(3)面試相關:
    A:局部變量
        a:基本類型 值不能發(fā)生改變
        b:引用類型 地址值不能發(fā)生改變哪亿,但是對象的內(nèi)容是可以改變的
    B:初始化時機
        a:只能初始化一次。
        b:常見的給值
            定義的時候贤笆。(推薦)
            構(gòu)造方法中蝇棉。

2:多態(tài)(掌握)

(1)同一個對象在不同時刻體現(xiàn)出來的不同狀態(tài)。
(2)多態(tài)的前提:
    A:有繼承或者實現(xiàn)關系芥永。
    B:有方法重寫篡殷。
    C:有父類或者父接口引用指向子類對象。
    
    多態(tài)的分類:
        a:具體類多態(tài)
            class Fu {}
            class Zi extends Fu {}
            
            Fu f = new Zi();
        b:抽象類多態(tài)
            abstract class Fu {}
            class Zi extends Fu {}
            
            Fu f = new Zi();
        c:接口多態(tài)
            interface Fu {}
            class Zi implements Fu {}
            
            Fu f = new Zi();
(3)多態(tài)中的成員訪問特點
    A:成員變量
        編譯看左邊埋涧,運行看左邊
    B:構(gòu)造方法
        子類的構(gòu)造都會默認訪問父類構(gòu)造
    C:成員方法
        編譯看左邊板辽,運行看右邊
    D:靜態(tài)方法
        編譯看左邊,運行看左邊
        
    為什么?
        因為成員方法有重寫棘催。
(4)多態(tài)的好處:
    A:提高代碼的維護性(繼承體現(xiàn))
    B:提高代碼的擴展性(多態(tài)體現(xiàn))
(5)多態(tài)的弊端:
    父不能使用子的特有功能劲弦。
    
    現(xiàn)象:
        子可以當作父使用,父不能當作子使用醇坝。
(6)多態(tài)中的轉(zhuǎn)型
    A:向上轉(zhuǎn)型
        從子到父
    B:向下轉(zhuǎn)型
        從父到子
(7)孔子裝爹的案例幫助大家理解多態(tài)
(8)多態(tài)的練習
    A:貓狗案例
    B:老師和學生案例

3:抽象類(掌握)

(1)把多個共性的東西提取到一個類中邑跪,這是繼承的做法。
   但是呢纲仍,這多個共性的東西呀袱,在有些時候贸毕,方法聲明一樣郑叠,但是方法體。
   也就是說明棍,方法聲明一樣乡革,但是每個具體的對象在具體實現(xiàn)的時候內(nèi)容不一樣。
   所以摊腋,我們在定義這些共性的方法的時候沸版,就不能給出具體的方法體。
   而一個沒有具體的方法體的方法是抽象的方法兴蒸。
   在一個類中如果有抽象方法视粮,該類必須定義為抽象類。
(2)抽象類的特點
    A:抽象類和抽象方法必須用關鍵字abstract修飾
    B:抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類
    C:抽象類不能實例化
    D:抽象類的子類
        a:是一個抽象類橙凳。
        b:是一個具體類蕾殴。這個類必須重寫抽象類中的所有抽象方法笑撞。
(3)抽象類的成員特點:
    A:成員變量
        有變量,有常量
    B:構(gòu)造方法
        有構(gòu)造方法
    C:成員方法
        有抽象钓觉,有非抽象
(4)抽象類的練習
    A:貓狗案例練習
    B:老師案例練習
    C:學生案例練習
    D:員工案例練習
(5)抽象類的幾個小問題
    A:抽象類有構(gòu)造方法茴肥,不能實例化,那么構(gòu)造方法有什么用?
        用于子類訪問父類數(shù)據(jù)的初始化
    B:一個類如果沒有抽象方法,卻定義為了抽象類荡灾,有什么用?
        為了不讓創(chuàng)建對象
    C:abstract不能和哪些關鍵字共存
        a:final 沖突
        b:private 沖突
        c:static 無意義

4:接口(掌握)

(1)回顧貓狗案例瓤狐,它們僅僅提供一些基本功能。
   比如:貓鉆火圈批幌,狗跳高等功能础锐,不是動物本身就具備的,
   是在后面的培養(yǎng)中訓練出來的荧缘,這種額外的功能郁稍,java提供了接口表示。
(2)接口的特點:
    A:接口用關鍵字interface修飾
        interface 接口名 {}
    B:類實現(xiàn)接口用implements修飾
        class 類名 implements 接口名 {}
    C:接口不能實例化
    D:接口的實現(xiàn)類
        a:是一個抽象類胜宇。
        b:是一個具體類耀怜,這個類必須重寫接口中的所有抽象方法。
(3)接口的成員特點:
    A:成員變量
        只能是常量
        默認修飾符:public static final
    B:構(gòu)造方法
        沒有構(gòu)造方法
    C:成員方法
        只能是抽象的
        默認修飾符:public abstract
(4)類與類,類與接口,接口與接口
    A:類與類
        繼承關系桐愉,只能單繼承财破,可以多層繼承
    B:類與接口
        實現(xiàn)關系,可以單實現(xiàn)从诲,也可以多實現(xiàn)左痢。
        還可以在繼承一個類的同時,實現(xiàn)多個接口
    C:接口與接口
        繼承關系系洛,可以單繼承俊性,也可以多繼承
(5)抽象類和接口的區(qū)別(自己補齊)?
    A:成員區(qū)別
        抽象類:可以是變量可以是常量
        接口:只能是常量
    B:關系區(qū)別:
        類與類:繼承
        類與接口:實現(xiàn)
        接口與接口:繼承
    C:設計理念不同
        抽象類:is a,抽象類中定義的是共性功能描扯。
        接口:like a定页,接口中定義的是擴展功能。
(6)練習:
    A:貓狗案例绽诚,加入跳高功能
    B:老師和學生案例典徊,加入抽煙功能0

1:形式參數(shù)和返回值的問題(理解)

(1)形式參數(shù):
    類名:需要該類的對象
    抽象類名:需要該類的子類對象
    接口名:需要該接口的實現(xiàn)類對象
(2)返回值類型:
    類名:返回的是該類的對象
    抽象類名:返回的是該類的子類對象
    接口名:返回的是該接口的實現(xiàn)類的對象
(3)鏈式編程
    對象.方法1().方法2().......方法n();
    
    這種用法:其實在方法1()調(diào)用完畢后,應該一個對象恩够;
              方法2()調(diào)用完畢后卒落,應該返回一個對象。
              方法n()調(diào)用完畢后蜂桶,可能是對象儡毕,也可以不是對象。

2:包(理解)

(1)其實就是文件夾
(2)作用:
    A:區(qū)分同名的類
    B:對類進行分類管理
        a:按照功能分
        b:按照模塊分
(3)包的定義(掌握)
    package 包名;
    多級包用.分開扑媚。
(4)注意事項:(掌握)
    A:package語句必須在文件中的第一條有效語句
    B:在一個java文件中腰湾,只能有一個package
    C:如果沒有package贾费,默認就是無包名
(5)帶包的編譯和運行
    A:手動式
    B:自動式(掌握)
        javac -d . HelloWorld.java

3:導包(掌握)

(1)我們多次使用一個帶包的類,非常的麻煩檐盟,這個時候褂萧,Java就提供了一個關鍵字import。
(2)格式:
    import 包名...類名;
    另一種:
        import 包名...*;(不建議)
(3)package,import,class的順序
    package > import > class

4:權(quán)限修飾符(掌握)

(1)權(quán)限修飾符
                本類  同一個包下   不同包下的子類 不同包下的無關類
    private     Y
        默認      Y       Y
    protected   Y       Y            Y
    public      Y       Y            Y                Y
(2)這四種權(quán)限修飾符在任意時刻只能出現(xiàn)一種葵萎。
    public class Demo {}        

5:常見的修飾符(理解)

(1)分類:
    權(quán)限修飾符:private,默認,protected,public
    狀態(tài)修飾符:static,final
    抽象修飾符:abstract
(2)常見的類及其組成的修飾
    類:
        默認,public,final,abstract
        常用的:public
    成員變量:
        private,默認,protected,public,static,final
        常用的:private
    構(gòu)造方法:
        private,默認,protected,public
        常用的:public
    成員方法:
        private,默認,protected,public,static,final,abstract
        常用的:public
(3)另外比較常見的:
    public static final int X = 10;
    public static void show() {}
    public final void show() {}
    public abstract void show();

6:內(nèi)部類(理解)

(1)把類定義在另一個類的內(nèi)部导犹,該類就被稱為內(nèi)部類。
    舉例:把類B定義在類A中羡忘,類B就被稱為內(nèi)部類谎痢。
(2)內(nèi)部類的訪問規(guī)則
    A:可以直接訪問外部類的成員,包括私有
    B:外部類要想訪問內(nèi)部類成員卷雕,必須創(chuàng)建對象
(3)內(nèi)部類的分類
    A:成員內(nèi)部類
    B:局部內(nèi)部類
(4)成員內(nèi)部類
    A:private 為了數(shù)據(jù)的安全性
    B:static 為了訪問的方便性       
成員內(nèi)部類不是靜態(tài)的:
    外部類名.內(nèi)部類名 對象名 = new 外部類名.new 內(nèi)部類名();
成員內(nèi)部類是靜態(tài)的:
    外部類名.內(nèi)部類名 對象名 = new 外部類名.內(nèi)部類名();

(5)成員內(nèi)部類的面試題(填空)

30,20,10
class Outer {
    public int num = 10;
        class Inner {
            public int num = 20;
            public viod show() {
            int num  = 30;
            System.out.println(num);
            System.out.println(this.num);
            System.out.println(Outer.this.num);
            }
        }
    }

(6)局部內(nèi)部類

A:局部內(nèi)部類訪問局部變量必須加final修飾节猿。
B:為什么呢?
    因為局部變量使用完畢就消失,而堆內(nèi)存的數(shù)據(jù)并不會立即消失漫雕。
    所以滨嘱,堆內(nèi)存還是用該變量,而改變量已經(jīng)沒有了浸间。
    為了讓該值還存在太雨,就加final修飾。
    通過反編譯工具我們看到了魁蒜,加入final后囊扳,堆內(nèi)存直接存儲的是值,而不是變量名兜看。

(7)匿名內(nèi)部類(掌握)

A:是局部內(nèi)部類的簡化形式
B:前提
    存在一個類或者接口
C:格式:
    new 類名或者接口名() {
        重寫方法;
    }
D:本質(zhì):
    其實是繼承該類或者實現(xiàn)接口的子類匿名對象

(8)匿名內(nèi)部類在開發(fā)中的使用

我們在開發(fā)的時候锥咸,會看到抽象類,或者接口作為參數(shù)细移。
而這個時候搏予,我們知道實際需要的是一個子類對象。
如果該方法僅僅調(diào)用一次葫哗,我們就可以使用匿名內(nèi)部類的格式簡化缔刹。

interface Person {
    public abstract void study();
}

class PersonDemo {
    public void method(Person p) {
        p.study();
    }
}

class PersonTest {
    public static void main(String[] args) {
        PersonDemo pd = new PersonDemo();
        pd.method(new Person() {
            public void study() {
                System.out.println("好好學習,天天向上");
            }
        });
    }
}

(9)匿名內(nèi)部類的面試題(補齊代碼)

interface Inter {
    void show();
}

class Outer {
    public static Inter method() {
        return new Inter() {
            public void show() {
                System.out.println("HelloWorld");
            }   
        };
    }
}

class OuterDemo {
    public static void main(String[] args) {
        Outer.method().show(); //"HelloWorld"
    }

}

Java開發(fā)工具

1:Eclipse的概述使用(掌握)
    請參照ppt和課堂練習.txt
    
2:API的概述(了解)
    (1)應用程序編程接口劣针。
    (2)就是JDK提供給我們的一些提高編程效率的java類。


3:Object類(掌握)
    (1)Object是類層次結(jié)構(gòu)的根類亿扁,所有的類都直接或者間接的繼承自Object類捺典。
    (2)Object類的構(gòu)造方法有一個,并且是無參構(gòu)造
        這其實就是理解當時我們說過从祝,子類構(gòu)造方法默認訪問父類的構(gòu)造是無參構(gòu)造
    (3)要掌握的方法:
        A:toString()
            返回對象的字符串表示襟己,默認是由類的全路徑+'@'+哈希值的十六進制表示引谜。
            這個表示其實是沒有意義的,一般子類都會重寫該方法擎浴。
            如何重寫呢?過程我也講解過了员咽,基本上就是要求信息簡單明了。
            但是最終還是自動生成贮预。
        B:equals()
            比較兩個對象是否相同贝室。默認情況下,比較的是地址值是否相同仿吞。
            而比較地址值是沒有意義的滑频,所以,一般子類也會重寫該方法唤冈。
            重寫過程峡迷,我也詳細的講解和分析了。
            但是最終還是自動生成你虹。
    (4)要了解的方法:
        A:hashCode() 返回對象的哈希值绘搞。不是實際地址值,可以理解為地址值傅物。
        B:getClass() 返回對象的字節(jié)碼文件對象看杭,反射中我們會詳細講解    
        C:finalize() 用于垃圾回收,在不確定的時間
        D:clone() 可以實現(xiàn)對象的克隆挟伙,包括成員變量的數(shù)據(jù)復制楼雹,但是它和兩個引用指向同一個對象是有區(qū)別的。
    (5)兩個注意問題尖阔;
        A:直接輸出一個對象名稱贮缅,其實默認調(diào)用了該對象的toString()方法。
        B:面試題 
            ==和equals()的區(qū)別?
            A:==
                基本類型:比較的是值是否相同
                引用類型:比較的是地址值是否相同
            B:equals()
                只能比較引用類型介却。默認情況下谴供,比較的是地址值是否相同。

            但是齿坷,我們可以根據(jù)自己的需要重寫該方法桂肌。

Java常見對象

1:Scanner的使用(了解)
    (1)在JDK5以后出現(xiàn)的用于鍵盤錄入數(shù)據(jù)的類。
    (2)構(gòu)造方法:
        A:講解了System.in這個東西永淌。
            它其實是標準的輸入流,對應于鍵盤錄入
        B:構(gòu)造方法
            InputStream is = System.in;
            Scanner(InputStream is)
        C:常用的格式
            Scanner sc = new Scanner(System.in);
(3)基本方法格式:
    A:hasNextXxx() 判斷是否是某種類型的
    B:nextXxx() 返回某種類型的元素
(4)要掌握的兩個方法
    A:public int nextInt()
    B:public String nextLine()
(5)需要注意的小問題
    A:同一個Scanner對象崎场,先獲取數(shù)值,再獲取字符串會出現(xiàn)一個小問題遂蛀。
    B:解決方案:
        a:重新定義一個Scanner對象
        b:把所有的數(shù)據(jù)都用字符串獲取谭跨,然后再進行相應的轉(zhuǎn)換

2:String類的概述和使用(掌握)

(1)多個字符組成的一串數(shù)據(jù)。
    其實它可以和字符數(shù)組進行相互轉(zhuǎn)換。
(2)構(gòu)造方法:
    A:public String()
    B:public String(byte[] bytes)
    C:public String(byte[] bytes,int offset,int length)
    D:public String(char[] value)
    E:public String(char[] value,int offset,int count)
    F:public String(String original)
    下面的這一個雖然不是構(gòu)造方法螃宙,但是結(jié)果也是一個字符串對象
    G:String s = "hello";
(3)字符串的特點
    A:字符串一旦被賦值蛮瞄,就不能改變。
        注意:這里指的是字符串的內(nèi)容不能改變谆扎,而不是引用不能改變挂捅。
    B:字面值作為字符串對象和通過構(gòu)造方法創(chuàng)建對象的不同
        String s = new String("hello");和String s = "hello"的區(qū)別?
        new String("hello")會在堆內(nèi)存開辟空間,另一種不會,但是最終的值都在字符串緩存區(qū).
(4)字符串的面試題(看程序?qū)懡Y(jié)果)
    A:==和equals()
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2);// false
        System.out.println(s1.equals(s2));// true


        String s3 = new String("hello");
        String s4 = "hello";
        System.out.println(s3 == s4);// false
        System.out.println(s3.equals(s4));// true


        String s5 = "hello";
        String s6 = "hello";
        System.out.println(s5 == s6);// true(常量會先去緩存區(qū)找,存在就不創(chuàng)建新的對象)
        System.out.println(s5.equals(s6));// true
    B:字符串的拼接
        String s1 = "hello";
        String s2 = "world";
        String s3 = "helloworld";
        System.out.println(s3 == s1 + s2);// false
        System.out.println(s3.equals((s1 + s2)));// true


        System.out.println(s3 == "hello" + "world");// false 這個我們錯了,應該是true
        System.out.println(s3.equals("hello" + "world"));// true
(5)字符串的功能(自己補齊方法中文意思)
    A:判斷功能
        boolean equals(Object obj)
        boolean equalsIgnoreCase(String str)
        boolean contains(String str)
        boolean startsWith(String str)
        boolean endsWith(String str)
        boolean isEmpty()
    B:獲取功能
        int length()
        char charAt(int index)
        int indexOf(int ch)
        int indexOf(String str)
        int indexOf(int ch,int fromIndex)
        int indexOf(String str,int fromIndex)
        String substring(int start)
        String substring(int start,int end)
    C:轉(zhuǎn)換功能
        byte[] getBytes()
        char[] toCharArray()
        static String valueOf(char[] chs)
        static String valueOf(int i)
        String toLowerCase()
        String toUpperCase()
        String concat(String str)
    D:其他功能
        a:替換功能 
            String replace(char old,char new)
            String replace(String old,String new)
        b:去空格功能
            String trim()
        c:按字典比較功能
            int compareTo(String str)
            int compareToIgnoreCase(String str) 
(6)字符串的案例
    A:模擬用戶登錄
        public static void login(String userName, String passwd) {
            if (userName == "Xmos" && passwd == "123") {
                System.out.println("login success");
            }
        }
    B:字符串遍歷
        public static void printString(String s) {
            char[] c = s.toCharArray();
            for (int i = 0; i < c.length; i++) {
                System.out.print(c[i]);
            }
        }
    C:統(tǒng)計字符串中大寫堂湖,小寫及數(shù)字字符的個數(shù)
        public static void method(String s) {
            char[] c = s.toCharArray();
            int lowerCaseNum = 0;
            int upperCaseNum = 0;
            int num = 0;
            for (char c1 : c) {
                if (c1 >= 'a' && c1 <= 'z') {
                    lowerCaseNum++;
                } else if (c1 >= 'A' && c1 <= 'Z') {
                    upperCaseNum++;
                } else if (c1 >= '0' && c1 <= '9') {
                    num++;
                }
            }
            
    D:把字符串的首字母轉(zhuǎn)成大寫闲先,其他小寫
        public static void method1(String s) {
            String s1 = s.substring(0, 1);
            String s2 = s.substring(1, s.length());
            String s3 = s1.toUpperCase() + s2.toLowerCase();
    
            System.out.println(s3);
        }       
    E:把int數(shù)組拼接成一個指定格式的字符串
        //方法一
        public static void method3(int[] i) {
            String s = Arrays.toString(i);
            System.out.println(s);
        }
        //方法二
        public static void method3(int[] i) {
                String s = "";
                for (int i1 : i) {
                    s += String.valueOf(i1);
                }
                System.out.println(s);
            }
    F:字符串反轉(zhuǎn)
        public static void revers(String s) {
            char[] c = s.toCharArray();
            for (int i = 0; i < c.length / 2; i++) {
                char tmp = c[i];
                c[i] = c[c.length - 1 - i];
                c[c.length - 1 - i] = tmp;
            }
            System.out.println(String.valueOf(c));
        }       
    G:統(tǒng)計大串中小串出現(xiàn)的次數(shù)

1:StringBuffer(掌握)

(1)用字符串做拼接,比較耗時并且也耗內(nèi)存苗缩,而這種拼接操作又是比較常見的饵蒂,為了解決這個問題,Java就提供了
   一個字符串緩沖區(qū)類酱讶。StringBuffer供我們使用退盯。
(2)StringBuffer的構(gòu)造方法
    A:StringBuffer()
    B:StringBuffer(int size)
    C:StringBuffer(String str)
(3)StringBuffer的常見功能(自己補齊方法的聲明和方法的解釋)
    A:添加功能
        appen();
    B:刪除功能
        delete();
    C:替換功能
        replace()
    D:反轉(zhuǎn)功能
        reverse()
    E:截取功能(注意這個返回值)
        String substring()
(4)StringBuffer的練習(做一遍)
    A:String和StringBuffer相互轉(zhuǎn)換
        String -- StringBuffer
            構(gòu)造方法
        StringBuffer -- String
            toString()方法
    B:字符串的拼接
        StringBuffer sb = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        
        StringBuffer sb3 = sb.append(sb2);
    C:把字符串反轉(zhuǎn)
        StringBuffer sb = new StringBuffer("abc");
        StringBuffer sb1 = sb.reverse();
    D:判斷一個字符串是否對稱
        public static void method(StringBuffer sb) {
            if (sb.toString().equals(sb.reverse().toString())) {
                System.out.println(true);
            } else {
                System.out.println(false);
            }
        }
        
(5)面試題
    小細節(jié):
        StringBuffer:同步的,數(shù)據(jù)安全泻肯,效率低渊迁。
        StringBuilder:不同步的,數(shù)據(jù)不安全灶挟,效率高琉朽。
    A:String,StringBuffer,StringBuilder的區(qū)別
        String 字符串常量
        StringBuffer 字符串變量(線程安全)
        StringBuilder 字符串變量(非線程安全)
    B:StringBuffer和數(shù)組的區(qū)別?
        StringBuffer : 可以存放任意類型的數(shù)據(jù)
        數(shù)組 : 只能存放同類型的數(shù)據(jù)
(6)注意的問題:
    String作為形式參數(shù),StringBuffer作為形式參數(shù)稚铣。
        String : 不會受影響
        StringBuffer : 除了=操作箱叁,其他操作會受影響

2:數(shù)組高級以及Arrays(掌握)
(1)排序
A:冒泡排序
相鄰元素兩兩比較,大的往后放惕医,第一次完畢耕漱,最大值出現(xiàn)在了最大索引處。同理抬伺,其他的元素就可以排好螟够。

        public static void bubbleSort(int[] arr) {
            for(int x=0; x<arr.length-1; x++) {
                for(int y=0; y<arr.length-1-x; y++) {
                    if(arr[y] > arr[y+1]) {
                        int temp = arr[y];
                        arr[y] = arr[y+1];
                        arr[y+1] = temp;
                    }
                }
            }
        }
        
    B:選擇排序
        把0索引的元素,和索引1以后的元素都進行比較峡钓,第一次完畢妓笙,最小值出現(xiàn)在了0索引。同理能岩,其他的元素就可以排好寞宫。
        
        public static void selectSort(int[] arr) {
            for(int x=0; x<arr.length-1; x++) {
                for(int y=x+1; y<arr.length; y++) {
                    if(arr[y] < arr[x]) {
                        int temp = arr[x];
                        arr[x] = arr[y];
                        arr[y] = temp;
                    }
                }
            }
        }
(2)查找
    A:基本查找
        針對數(shù)組無序的情況
        
        public static int getIndex(int[] arr,int value) {
            int index = -1;
            
            for(int x=0; x<arr.length; x++) {
                if(arr[x] == value) {
                    index = x;
                    break;
                }
            }
            
            return index;
        }
    B:二分查找(折半查找)
        針對數(shù)組有序的情況(千萬不要先排序,在查找)
        
        public static int binarySearch(int[] arr,int value) {
            int min = 0;
            int max = arr.length-1;
            int mid = (min+max)/2;
            
            while(arr[mid] != value) {
                if(arr[mid] > value) {
                    max = mid - 1;
                }else if(arr[mid] < value) {
                    min = mid + 1;
                }
                
                if(min > max) {
                    return -1;
                }
                
                mid = (min+max)/2;
            }
            
            return mid;
        }
(3)Arrays工具類
    A:是針對數(shù)組進行操作的工具類捧灰。包括排序和查找等功能淆九。
    B:要掌握的方法(自己補齊方法)
        把數(shù)組轉(zhuǎn)成字符串:
            Arrays.toString();
        排序:
            Arrays.sort();
        二分查找:
            Arrays.binarySearch();
(4)Arrays工具類的源碼解析
(5)把字符串中的字符進行排序
    舉例:
        "edacbgf"
        得到結(jié)果
        "abcdefg"
        String s = "edacbgf";
        char[] c = s.toCharArray();
        Arrays.sort(c);
        System.out.println(Arrays.toString(c));

3:Integer(掌握)

(1)為了讓基本類型的數(shù)據(jù)進行更多的操作统锤,Java就為每種基本類型提供了對應的包裝類類型
    byte        Byte
    short       Short
    int         Integer
    long        Long
    float       Float
    double      Double
    char        Character
    boolean     Boolean
(2)Integer的構(gòu)造方法
    A:Integer i = new Integer(100);
    B:Integer i = new Integer("100");
        注意:這里的字符串必須是由數(shù)字字符組成
(3)String和int的相互轉(zhuǎn)換
    A:String -- int
        Integer.parseInt("100");
    B:int -- String
        String.valueOf(100);
(4)其他的功能(了解)
    進制轉(zhuǎn)換
        Integer.toBinaryString();
        Integer.toHexString();
        Integer.toOctalString();
(5)JDK5的新特性
    自動裝箱    基本類型--引用類型
    自動拆箱    引用類型--基本類型
    
    把下面的這個代碼理解即可:
        Integer i = 100;
        i += 200;
(6)面試題
    -128到127之間的數(shù)據(jù)緩沖池問題

4:Character(了解)

(1)Character構(gòu)造方法    
    Character ch = new Character('a');
(2)要掌握的方法:(自己補齊)
    A:判斷給定的字符是否是大寫
        isUpperCase();
    B:判斷給定的字符是否是小寫
        isLowerCase();
    C:判斷給定的字符是否是數(shù)字字符
        isDigit();
    D:把給定的字符轉(zhuǎn)成大寫
        toUpperCase();
    E:把給定的字符轉(zhuǎn)成小寫
        toLowerCase();
(3)案例:

    統(tǒng)計字符串中大寫毛俏,小寫及數(shù)字字符出現(xiàn)的次數(shù)
        String s = "abcDEF123";
        char[] c = s.toCharArray();
        int lowerCaseNum = 0;
        int upperCaseNum = 0;
        int digitNum = 0;

        for (char c1 : c) {
            if (Character.isLowerCase(c1)) {
                lowerCaseNum++;
            } else if (Character.isUpperCase(c1)) {
                upperCaseNum++;
            } else if (Character.isDigit(c1)) {
                digitNum++;
            }
        }

        System.out.println("lowerCase:" + lowerCaseNum + "\t" + "upperCase:" + upperCaseNum + "\t" + "digit:" + digitNum);

1:正則表達式(理解)

(1)就是符合一定規(guī)則的字符串
(2)常見規(guī)則
    A:字符
        x 字符 x炭庙。舉例:'a'表示字符a
        \\ 反斜線字符。
        \n 新行(換行)符 ('\u000A') 
        \r 回車符 ('\u000D')
        
    B:字符類
        [abc] a煌寇、b 或 c(簡單類) 
        [^abc] 任何字符焕蹄,除了 a、b 或 c(否定) 
        [a-zA-Z] a到 z 或 A到 Z阀溶,兩頭的字母包括在內(nèi)(范圍) 
        [0-9] 0到9的字符都包括
        
    C:預定義字符類
        . 任何字符腻脏。我的就是.字符本身,怎么表示呢? \.
        \d 數(shù)字:[0-9]
        \w 單詞字符:[a-zA-Z_0-9]
            在正則表達式里面組成單詞的東西必須有這些東西組成
            
    D:邊界匹配器
        ^ 行的開頭 
        $ 行的結(jié)尾 
        \b 單詞邊界
            就是不是單詞字符的地方银锻。
            舉例:hello world?haha;xixi
        
    E:Greedy 數(shù)量詞 
        X? X永品,一次或一次也沒有
        X* X,零次或多次
        X+ X击纬,一次或多次
        X{n} X鼎姐,恰好 n 次 
        X{n,} X,至少 n 次 
        X{n,m} X更振,至少 n 次炕桨,但是不超過 m 次 
(3)常見功能:(分別用的是誰呢?)
    A:判斷功能
        String類的public boolean matches(String regex)
    B:分割功能
        String類的public String[] split(String regex)
    C:替換功能
        String類的public String replaceAll(String regex,String replacement)
    D:獲取功能
        Pattern和Matcher
            Pattern p = Pattern.compile("a*b");
            Matcher m = p.matcher("aaaaab");
            
            find():查找存不存在
            group():獲取剛才查找過的數(shù)據(jù)
(4)案例
    A:判斷電話號碼和郵箱
        //普安段郵箱
        public static boolean checkMail(String s){
            String regex = "\\d*\\w*@sina\\.com";
            return s.matches(regex);
        }
        //判斷電話號碼
        public static boolean checkPhoneNum(String s) {
            String regex = "\\d{11}";
            return s.matches(regex);
        }
    B:按照不同的規(guī)則分割數(shù)據(jù)
        public static String[] split(String s) {
            String regex = ",";
            String[] result = s.split(regex);
            return result;
        }
    C:把論壇中的數(shù)字替換為*
        //替換為和數(shù)字等量的*
        public static String replaceStar(String s) {
            String regex = "\\d";
            return s.replaceAll(regex, "*");
        }
        //所有相連數(shù)字替換為一個*
        public static String replaceStar(String s) {
            String regex = "\\d+";
            return s.replaceAll(regex, "*");
        }
    D:獲取字符串中由3個字符組成的單詞
        public static List<String> method(String s) {
            Pattern p = Pattern.compile("a\\d{3}b");
            Matcher m = p.matcher(s);
            List<String> result = new ArrayList<String>();
            
            while (m.find()) {
                result.add(m.group());
            }
            return  result;
        }

2:Math(掌握)

(1)針對數(shù)學運算進行操作的類
(2)常見方法(自己補齊)
    A:絕對值
        Math.abs();
    B:向上取整
        Math.ceil();
    C:向下取整
        Math.floor();
    D:兩個數(shù)據(jù)中的大值
        Math.max();
    E:a的b次冪
        Math.pow(a, b);
    F:隨機數(shù)
        Math.random();
    G:四舍五入
        Math.round();
    H:正平方根
        Math.sqrt();
(3)案例:
    A:猜數(shù)字小游戲
        Scanner sc = new Scanner(System.in);
        int i = (int)(Math.random() * 100) + 1;
        int answer;
        while ((answer = sc.nextInt()) != i) {
            if (answer > i) {
                System.out.println("bigger than result,go on");
            } else if (answer < i) {
                System.out.println("smaller than result,go on");
            }
        }
        System.out.println("you are right");
    B:獲取任意范圍的隨機數(shù)
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入起始:");
        int start = sc.nextInt();
        System.out.println("請輸入結(jié)束:");
        int end = sc.nextInt();

        int i = (int)(Math.random() * (end - start)) + start;
        System.out.println(i);

3:Random(理解)

(1)用于產(chǎn)生隨機數(shù)的類
(2)構(gòu)造方法:
    A:Random() 默認種子,每次產(chǎn)生的隨機數(shù)不同
    B:Random(long seed) 指定種子肯腕,每次種子相同献宫,隨機數(shù)就相同
(3)成員方法:
    A:int nextInt() 返回int范圍內(nèi)的隨機數(shù)
    B:int nextInt(int n) 返回[0,n)范圍內(nèi)的隨機數(shù)

4:System(掌握)

(1)系統(tǒng)類,提供了一些有用的字段和方法
(2)成員方法(自己補齊)
    A:運行垃圾回收器
        System.gc();
    B:退出jvm
        System.exit(0);
    C:獲取當前時間的毫秒值
        System.currentTimemillis();
    D:數(shù)組復制
        System.arraycopy();

5:BigInteger(理解)

(1)針對大整數(shù)的運算
(2)構(gòu)造方法 
    A:BigInteger(String s)
(3)成員方法(自己補齊)
    A:加
        add();
    B:減
        subtract();
    C:乘
        multiply();
    D:除
        divide();
    E:商和余數(shù)
        divideAndRemainder();

6:BigDecimal(理解)

(1)浮點數(shù)據(jù)做運算,會丟失精度实撒。所以姊途,針對浮點數(shù)據(jù)的操作建議采用BigDecimal。(金融相關的項目)
(2)構(gòu)造方法
    A:BigDecimal(String s)
(3)成員方法:
    A:加
        add();
    B:減
        subtract();
    C:乘
        multiply();
    D:除
        divide();
    E:自己保留小數(shù)幾位
        setScale();

7:Date/DateFormat(掌握)

(1)Date是日期類知态,可以精確到毫秒捷兰。
    A:構(gòu)造方法
        Date()
        Date(long time)
    B:成員方法
        getTime()
        setTime(long time)
    C:日期和毫秒值的相互轉(zhuǎn)換
    案例:你來到這個世界多少天了?
(2)DateFormat針對日期進行格式化和針對字符串進行解析的類,但是是抽象類肴甸,所以使用其子類SimpleDateFormat
    A:SimpleDateFormat(String pattern) 給定模式
        yyyy-MM-dd HH:mm:ss
    B:日期和字符串的轉(zhuǎn)換
        a:Date -- String
            format()
            
        b:String -- Date
            parse()
    C:案例:
        制作了一個針對日期操作的工具類寂殉。
            Date d = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(d));

8:Calendar(掌握)

(1)日歷類,封裝了所有的日歷字段值原在,通過統(tǒng)一的方法根據(jù)傳入不同的日歷字段可以獲取值友扰。
(2)如何得到一個日歷對象呢?
    Calendar rightNow = Calendar.getInstance();
    本質(zhì)返回的是子類對象
(3)成員方法
    A:根據(jù)日歷字段得到對應的值
        Calendar c =Calendar.getInstance();
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH));
        System.out.println(c.get(Calendar.DAY_OF_MONTH));
    B:根據(jù)日歷字段和一個正負數(shù)確定是添加還是減去對應日歷字段的值
        add(Calendar.DAY_OF_MONTH, +3);
    C:設置日歷對象的年月日
        set(2018,5,30);
        set(Calendar.YEAR, 2018);
        set(Calendar.MONTH, 2018);
        set(Calendar.DAY_OF_MONTH, 2018);
(4)案例:
    計算任意一年的2月份有多少天?
        Scanner sc = new Scanner(System.in);
        Calendar c =Calendar.getInstance();

        c.set(Calendar.YEAR, sc.nextInt());
        System.out.println(c.get(Calendar.DAY_OF_MONTH));

Java集合框架

JavaIO流

1:異常(理解)

(1)程序出現(xiàn)的不正常的情況。
(2)異常的體系
    Throwable
        |--Error    嚴重問題庶柿,我們不處理村怪。
        |--Exception
            |--RuntimeException 運行期異常,我們需要修正代碼
            |--非RuntimeException 編譯期異常浮庐,必須處理的甚负,否則程序編譯不通過
(3)異常的處理:
    A:JVM的默認處理
        把異常的名稱,原因,位置等信息輸出在控制臺柬焕,但是程序不能繼續(xù)執(zhí)行了。
    B:自己處理
        a:try...catch...finally
            自己編寫處理代碼,后面的程序可以繼續(xù)執(zhí)行
        b:throws
            把自己處理不了的梭域,在方法上聲明斑举,告訴調(diào)用者,這里有問題
(4)面試題
    A:編譯期異常和運行期異常的區(qū)別?
        編譯期異常 必須要處理的病涨,否則編譯不通過
        運行期異常 可以不處理富玷,也可以處理
    B:throw和throws是的區(qū)別
        throw:
            在方法體中,后面跟的是異常對象名,并且只能是一個
            throw拋出的是一個異常對象,說明這里肯定有一個異常產(chǎn)生了
        throws:
            在方法聲明上,后面跟的是異常的類名,可以是多個
            throws是聲明方法有異常既穆,是一種可能性赎懦,這個異常并不一定會產(chǎn)生
(5)finally關鍵字及其面試題
    A:finally用于釋放資源,它的代碼永遠會執(zhí)行幻工。特殊情況:在執(zhí)行到finally之前jvm退出了
    B:面試題
        a:final,finally,finalize的區(qū)別?
            final : 關鍵字,修飾類励两、方法、變量,被修飾的類無法被繼承,方法無法重寫,變量值不能改變.
            finally : try...catch...finally,一定會執(zhí)行.
            finalize : 對象被垃圾回收器回收時執(zhí)行的方法.
        b:如果在catch里面有return,請問finally還執(zhí)行嗎?如果執(zhí)行,在return前還是后
            會囊颅,前当悔。
            
            實際上在中間。這個上課我們講過
    C:異常處理的變形
        try...catch...finally
        try...catch...
        try...catch...catch...
        try...catch...catch...fianlly
        try...finally
(6)自定義異常
    繼承自Exception或者RuntimeException,只需要提供無參構(gòu)造和一個帶參構(gòu)造即可
        public class MyException extends RuntimeException {
            public MyException(String message) {
                super(message);
            }
        
            public MyException() {
                super();
            }
        }
(7)異常的注意實現(xiàn)
    A:父的方法有異常拋出,子的重寫方法在拋出異常的時候必須要小于等于父的異常 
    B:父的方法沒有異常拋出,子的重寫方法不能有異常拋出
    C:父的方法拋出多個異常,子的重寫方法必須比父少或者小

2:File(掌握)

(1)IO流操作中大部分都是對文件的操作迁酸,所以Java就提供了File類供我們來操作文件
(2)構(gòu)造方法
    A:File file = new File("e:\\demo\\a.txt");
    B:File file = new File("e:\\demo","a.txt");
    C:File file = new File("e:\\demo");
      File file2 = new File(file,"a.txt");
(3)File類的功能(自己補齊)
    A:創(chuàng)建功能
        createNewFile();
        mkdir();
        mkdirs();
    B:刪除功能
        delete();
    C:重命名功能
        renameTo();
    D:判斷功能
        isFile();
        isDirectory();
        exists();
        canRea();
        canWrite();
        isAbsolute();
        isHidden();
    E:獲取功能
        getAbsoluteFile();
        getAbsolutePath();
        getPath();
        getParent();
        getParentFile();
        getName();
        length();
        lastModified();
    F:高級獲取功能
        list();
        listFiles();
    G:過濾器功能
        list(FilenameFilter filter);
            String[] s = file1.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return new File(dir, name).isFile() && name.endsWith(".jpg");
            }
        });
        listFiles(FilenameFilter filter);
(4)案例:
    A:輸出指定目錄下指定后綴名的文件名稱
        a:先獲取所有的先鱼,在遍歷的時候判斷,再輸出
            File file = new File("D:\\Movie\\M");
            String[] s = file.list();
    
            for (String result : s) {
                if (result.endsWith(".mp4")) {
                    System.out.println(result);
                }
            }
        b:先判斷奸鬓,再獲取焙畔,最后直接遍歷輸出即可
            String[] s1 = file.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".mp4");
                }
            });
            for (String result : s1) {
                System.out.println(result);
            }
    B:批量修改文件名稱
        File file = new File("D:\\Movie");
        String[] s = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.startsWith("相對宇宙");
            }
        });
        for (String result : s) {
            System.out.println("beforeRename : " + result);
            File file1 = new File(file,result.replaceAll("WEB.*影視\\.", ""));
            File file2 = new File(file, result);
            file2.renameTo(file1);
            System.out.println("afterRename : " + file1.exists() + ", " + file1.getName());
        }

Java多線程

1:遞歸(理解)

(1)方法定義中調(diào)用方法本身的現(xiàn)象
    舉例:老和尚給小和尚講故事,我們學編程
(2)遞歸的注意事項串远;
    A:要有出口宏多,否則就是死遞歸
    B:次數(shù)不能過多,否則內(nèi)存溢出
    C:構(gòu)造方法不能遞歸使用
(3)遞歸的案例:
    A:遞歸求階乘
    B:兔子問題
    C:遞歸輸出指定目錄下所有指定后綴名的文件絕對路徑
    D:遞歸刪除帶內(nèi)容的目錄(小心使用)

2:IO流(掌握)

(1)IO用于在設備間進行數(shù)據(jù)傳輸?shù)牟僮?   
(2)分類:
    A:流向
        輸入流 讀取數(shù)據(jù)
        輸出流 寫出數(shù)據(jù)
    B:數(shù)據(jù)類型
        字節(jié)流 
                字節(jié)輸入流
                字節(jié)輸出流
        字符流
                字符輸入流
                字符輸出流
    注意:
        a:如果我們沒有明確說明按照什么分澡罚,默認按照數(shù)據(jù)類型分伸但。
        b:除非文件用windows自帶的記事本打開我們能夠讀懂,才采用字符流留搔,否則建議使用字節(jié)流更胖。
(3)FileOutputStream寫出數(shù)據(jù)
    A:操作步驟
        a:創(chuàng)建字節(jié)輸出流對象
        b:調(diào)用write()方法
        c:釋放資源
        
    B:代碼體現(xiàn):
        FileOutputStream fos = new FileOutputStream("fos.txt");
        
        fos.write("hello".getBytes());
        
        fos.close();
        
    C:要注意的問題?
        a:創(chuàng)建字節(jié)輸出流對象做了幾件事情?
        b:為什么要close()?
        c:如何實現(xiàn)數(shù)據(jù)的換行?
        d:如何實現(xiàn)數(shù)據(jù)的追加寫入?
(4)FileInputStream讀取數(shù)據(jù)
    A:操作步驟
        a:創(chuàng)建字節(jié)輸入流對象
        b:調(diào)用read()方法
        c:釋放資源
        
    B:代碼體現(xiàn):
        FileInputStream fis = new FileInputStream("fos.txt");
        
        //方式1
        int by = 0;
        while((by=fis.read())!=-1) {
            System.out.print((char)by);
        }
        
        //方式2
        byte[] bys = new byte[1024];
        int len = 0;
        while((len=fis.read(bys))!=-1) {
            System.out.print(new String(bys,0,len));
        }
        
        fis.close();
(5)案例:2種實現(xiàn)
    A:復制文本文件
    B:復制圖片
    C:復制視頻
(6)字節(jié)緩沖區(qū)流
    A:BufferedOutputStream
    B:BufferedInputStream
(7)案例:4種實現(xiàn)
    A:復制文本文件
    B:復制圖片
    C:復制視頻

3:自學字符流

IO流分類
    字節(jié)流:
        InputStream
            FileInputStream
            BufferedInputStream
        OutputStream
            FileOutputStream
            BufferedOutputStream
    
    字符流:
        Reader
            FileReader
            BufferedReader
        Writer
            FileWriter
            BufferedWriter

1:字符流(掌握)

(1)字節(jié)流操作中文數(shù)據(jù)不是特別的方便,所以就出現(xiàn)了轉(zhuǎn)換流。
   轉(zhuǎn)換流的作用就是把字節(jié)流轉(zhuǎn)換字符流來使用。
(2)轉(zhuǎn)換流其實是一個字符流
    字符流 = 字節(jié)流 + 編碼表
(3)編碼表
    A:就是由字符和對應的數(shù)值組成的一張表
    B:常見的編碼表
        ASCII
        ISO-8859-1
        GB2312
        GBK
        GB18030
        UTF-8
    C:字符串中的編碼問題
        編碼
            String -- byte[]
        解碼
            byte[] -- String
(4)IO流中的編碼問題
    A:OutputStreamWriter
        OutputStreamWriter(OutputStream os):默認編碼巢音,GBK
        OutputStreamWriter(OutputStream os,String charsetName):指定編碼骏啰。
    B:InputStreamReader
        InputStreamReader(InputStream is):默認編碼取具,GBK
        InputStreamReader(InputStream is,String charsetName):指定編碼
    C:編碼問題其實很簡單
        編碼只要一致即可
(5)字符流
    Reader
        |--InputStreamReader
            |--FileReader
        |--BufferedReader
    Writer
        |--OutputStreamWriter
            |--FileWriter
        |--BufferedWriter
(6)復制文本文件(5種方式)

2:IO流小結(jié)(掌握)

IO流
    |--字節(jié)流
        |--字節(jié)輸入流
            InputStream
                int read():一次讀取一個字節(jié)
                int read(byte[] bys):一次讀取一個字節(jié)數(shù)組
            
                |--FileInputStream
                |--BufferedInputStream
        |--字節(jié)輸出流
            OutputStream
                void write(int by):一次寫一個字節(jié)
                void write(byte[] bys,int index,int len):一次寫一個字節(jié)數(shù)組的一部分
                
                |--FileOutputStream
                |--BufferedOutputStream
    |--字符流
        |--字符輸入流
            Reader
                int read():一次讀取一個字符
                int read(char[] chs):一次讀取一個字符數(shù)組
                
                |--InputStreamReader
                    |--FileReader
                |--BufferedReader
                    String readLine():一次讀取一個字符串
        |--字符輸出流
            Writer
                void write(int ch):一次寫一個字符
                void write(char[] chs,int index,int len):一次寫一個字符數(shù)組的一部分
                
                |--OutputStreamWriter
                    |--FileWriter
                |--BufferedWriter
                    void newLine():寫一個換行符
                    
                    void write(String line):一次寫一個字符串

3:案例(理解 練習一遍)

A:復制文本文件 5種方式(掌握)
B:復制圖片(二進制流數(shù)據(jù)) 4種方式(掌握)
C:把集合中的數(shù)據(jù)存儲到文本文件
D:把文本文件中的數(shù)據(jù)讀取到集合并遍歷集合
E:復制單級文件夾
F:復制單級文件夾中指定的文件并修改名稱
    回顧一下批量修改名稱
G:復制多級文件夾
H:鍵盤錄入學生信息按照總分從高到低存儲到文本文件
I:把某個文件中的字符串排序后輸出到另一個文本文件中
J:用Reader模擬BufferedReader的特有功能
K:模擬LineNumberReader的特有功能

JavaGUI

Java網(wǎng)絡編程

Java反射

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捞烟,老刑警劉巖薄声,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異题画,居然都是意外死亡默辨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門婴程,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廓奕,“玉大人抱婉,你說我怎么就攤上這事档叔。” “怎么了蒸绩?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵衙四,是天一觀的道長。 經(jīng)常有香客問我患亿,道長传蹈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任步藕,我火速辦了婚禮惦界,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咙冗。我一直安慰自己沾歪,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布雾消。 她就那樣靜靜地躺著灾搏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪立润。 梳的紋絲不亂的頭發(fā)上狂窑,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音桑腮,去河邊找鬼泉哈。 笑死,一個胖子當著我的面吹牛破讨,可吹牛的內(nèi)容都是我干的丛晦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼添忘,長吁一口氣:“原來是場噩夢啊……” “哼采呐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搁骑,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤斧吐,失蹤者是張志新(化名)和其女友劉穎又固,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤率,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡仰冠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝶糯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋只。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昼捍,靈堂內(nèi)的尸體忽然破棺而出识虚,到底是詐尸還是另有隱情,我是刑警寧澤妒茬,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布担锤,位于F島的核電站,受9級特大地震影響乍钻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜银择,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一多糠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浩考,春花似錦夹孔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绿淋,卻和暖如春闷畸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吞滞。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工佑菩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裁赠。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓殿漠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親佩捞。 傳聞我的和親對象是個殘疾皇子绞幌,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O計...
    子非魚_t_閱讀 4,206評論 1 44
  • 1. Java基礎部分 基礎部分的順序:基本語法一忱,類相關的語法莲蜘,內(nèi)部類的語法谭确,繼承相關的語法,異常的語法票渠,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • 記不清上次寫文章是什么時候了问顷,日子總是過得這么快昂秃。事業(yè)單位上班的日子,再加上有了孩子杜窄,感覺每天都是在重復前一天...
    佳佳家的寶閱讀 343評論 4 2
  • 早上起來肠骆,趕各類報表資料,外借公章及營業(yè)執(zhí)照副本羞芍。中午在食堂簡餐哗戈。下午孫以章打電話給我,告知了徐義平及后面的各項處...
    b538b2ad5da3閱讀 169評論 0 0
  • 一日辦理居民醫(yī)保荷科,人很多,行政大廳排了好長好長的隊纱注。上午我也加入了等待的隊伍畏浆。等待,就會發(fā)生意料...
    一剪紅梅閱讀 246評論 15 4