JAVA學(xué)習(xí)筆記

第一章 入門

1.1 計算機(jī)發(fā)展史和未來方向

第一代語言

機(jī)器語言

第二代語言

匯編語言 goto語法

第三代語言

java c c++

1.2 常見語言介紹

C

C++

面向?qū)ο?br> 效率高

Java

最主流

PHP

web開發(fā)害驹、中小型網(wǎng)站開發(fā)

Object-C & Swift

ios開發(fā)

JavaScript

H5開發(fā)核心就是JavaScript媳维,其次HTML5\CSS

Python

圖形處理青责、科學(xué)計算、web變成冰蘑、人工智能

C#

微軟、用來抗衡Java,運行于.Net Framework上
基于windows的桌面軟件骑科,c#是首選

Fortran

世界上第一種高級語言奥吩,IBM1954年提出哼蛆,工程領(lǐng)域仍然廣泛使用

Basic

易學(xué),不夠強(qiáng)大圈驼,已被淘汰

Pascal

僅限于大學(xué)教育人芽,基本淘汰

1.3 Java

1.3.1 Java發(fā)展簡史

1991年,James Goslings绩脆,SUN公司
1998年萤厅,JDK1.2
2004年橄抹,J2SE 5.0(1.5.0)
2014年,JavaSE8.0
趕上互聯(lián)網(wǎng)的發(fā)展而發(fā)展

1.3.2 Java的核心優(yōu)勢

跨平臺惕味,強(qiáng)大的生態(tài)體系楼誓,第一大語言

1.3.3 Java各版本的含義

JavaSE:標(biāo)準(zhǔn)版,個人計算機(jī)應(yīng)用(桌面應(yīng)用)名挥,發(fā)展較差疟羹,不如C#

JavaEE:企業(yè)版,服務(wù)器端的應(yīng)用

JavaME:微型版禀倔,消費型電子產(chǎn)品的應(yīng)用榄融,發(fā)展較差,不如安卓

1.3.4 Java的特性和優(yōu)勢

跨平臺/可移植性

安全性

面向?qū)ο?/p>

簡單性

高性能:虛擬機(jī)的優(yōu)化救湖,某些場景甚至接近C++效率

分布式

多線程

健壯性:不會造成計算機(jī)整體崩潰

1.3.5 Java應(yīng)用程序的運行機(jī)制

高級語言主要有編譯型和解釋型語言愧杯,Java是兩種類型的結(jié)合
首先編寫原程序后綴為.java
再利用編譯器javac編譯成字節(jié)碼文件,后綴為.class
最后利用虛擬機(jī)(解釋器,java)解釋執(zhí)行

1.3.6 JVM鞋既、JRE和JDK

JVM Java虛擬機(jī)力九,與操作系統(tǒng)打交道

JRE 包含Java虛擬機(jī)、庫函數(shù)邑闺、運行Java所必須的程序

JDK 包含JRE跌前、編譯器、調(diào)試器等應(yīng)用程序開發(fā)的文件

1.4. JAVA安裝

1.4.1 JDK下載和安裝

1.4.2 環(huán)境變量Path的配置


JAVA_HOME:略
PATH: %JAVA_HOME%\bin
JDK1.5之后不需要配置classpath陡舅,JRE會自動搜索目錄下類和jar文件

1.4.3 測試安裝

1.5 編寫

1.5.3 編碼注意事項總結(jié)

1.Java對大小寫敏感
2.public 是訪問修飾符抵乓,控制其他部分對這段代碼的訪問級別
3.class類,java面向?qū)ο笳Z言蹭沛,代碼都必須位于類中
4.一個源文件最多生命一個public類臂寝,其他類個數(shù)不限,且public 類名必須與源文件名一致
5.一個源文件可以包含多個類摊灭,編譯后一個類對應(yīng)一個class文件
6.main方法是入口咆贬,固定書寫格式,public static void main(String[] args){……}
7.每句以分號結(jié)束

1.5.4 常用DOS命令

1.6 常用開發(fā)工具

eclipse
Intellij IDE
NetBeans

1.7 eclipse入門

1.7.1 eclipse下載和安裝

下載版本要與JDK一致帚呼,64位eclipse支持64位JDK與32位JDK掏缎,32位eclipse支持32位JDK

1.7.2 eclipse中創(chuàng)建Java項目

1.8 桌球小游戲demo

第二章 數(shù)據(jù)類型和運算符

2.1 注釋

單行//
多行/* /
文檔/
* */,說明及JavaDoc標(biāo)簽煤杀,可以生成API

2.2 標(biāo)識符

字母眷蜈、下劃線、美元符號開頭
其他部分可以使用字母沈自、下劃線酌儒、美元符號和數(shù)字任意組合
大小寫敏感、長度不限制
不可以是Java關(guān)鍵字

使用規(guī)范
類名:首字母大寫
方法和變量名:第一個單詞小寫枯途,第二個單詞開始首字母大寫

Java不采用ASCII字符集忌怎,二是采用Unicode國際字符集籍滴,包括漢字,但是吧建議用漢字來定義標(biāo)識符

2.3 Java中的關(guān)鍵字(保留字)

2.4 變量 variable

2.4.1 變量的本質(zhì)

“可操作的存儲空間”

基本類型 引用類型

一行中可以聲明多個變量榴啸,但不建議這么寫

int i,j;

2.4.2 變量的分類

局部變量 local variable:【從屬:方法/語句塊】先聲明孽惰、再初始化,才能使用

成員變量 member variable:【從屬:對象】類內(nèi)部方法外部定義鸥印,從屬對象勋功,生命周期伴隨對象始終;不初始化库说,會自動初始化成該類型的默認(rèn)初始值狂鞋。

數(shù)據(jù)類型 默認(rèn)初始值
int 0
double 0.0
char '\u0000'
boolean false

靜態(tài)變量 static variable:【從屬:類】生命周期伴隨類始終

2.5 常量 constant

通常指一個固定的值

一般用大寫字母

利用final來定義

final double pi = 3.14;

2.6基本數(shù)據(jù)類型

三大類八小類(數(shù)字表示字節(jié)數(shù)):

  1. 數(shù)值型
    1.1. 整數(shù)類型:1 byte,2 short璃弄,4 int要销,8 long
    1.2. 浮點類型:4 float,8 double
  2. 字符型
    2.1. 字符型:2 char
  3. 布爾型
    3.1. 布爾型:1 boolean

2.6.1 整型變量/常量

1個字節(jié)8位

類型 占用空間 范圍
byte 1字節(jié) -27 到 27-1
short 2字節(jié) -215 到 215-1 約±3w
int 4字節(jié) -231 到 231-1 約21億
long 8字節(jié) -263 到 263-1

十進(jìn)制

八進(jìn)制夏块,0開頭,例如015

十六進(jìn)制纤掸,0x或0X開頭脐供,例如0x15

二進(jìn)制,0b或0B開頭借跪,例如0b110

long默認(rèn)后面加L

long a = 2000000000L;

2.6.2 浮點型

類型 占用空間 范圍
float 4字節(jié)
double 8字節(jié)

小數(shù)默認(rèn)是double政己,如果是float需要加F:

float a =3.14F;

浮點數(shù)不精確:

例1:

        float a = 0.1f;
        double b = 0.1;
        System.out.println(a==b);

結(jié)果

false

例2:

        float f1 = 423432423f;
        float f2 = f1+1;
        if(f1==f2) {
            System.out.println("f1==f2");
        }else {
            System.out.println("f1!=f2");
        }

結(jié)果

f1==f2

所以浮點數(shù)一定不能用來比較

如果要比較浮點數(shù),需要用java.math下的BigDecimal和BigInteger

2.6.3 字符型變量/常量

2字節(jié)
unicode掏愁,65535個字符歇由,含漢字

2.6.4 boolean布爾類型變量/常量

1位(不是1個字節(jié)),所以不能用0或非0代替true和false果港,這點和C不同

2.7 運算符

2.7.1 算數(shù)運算符

  1. 二元運算符(+ - * / %)
    1.1 (整數(shù))如果兩個操作數(shù)有一個為Long沦泌,則結(jié)果也為Long
    1.2 (整數(shù))沒有Long時,結(jié)果為int辛掠。即使操作數(shù)全部為short谢谦、byte,結(jié)果也是int萝衩。
    1.3 (浮點數(shù))如果兩個操作數(shù)有一個為double回挽,則結(jié)果為double
    1.4 (浮點數(shù))只有兩個操作數(shù)都是float,結(jié)果才是float
    1.5 (取模)操作數(shù)可以是浮點數(shù)猩谊,一般使用整數(shù)千劈,結(jié)果是“余數(shù)”,“余數(shù)”符號和左邊操作數(shù)相同
  2. 一元運算符(++ --)

2.7.2 賦值及其擴(kuò)展賦值運算符

a+=b;//相當(dāng)于 a = a+b
a*=b+3;//相當(dāng)于 a=a*(b+3)

2.7.3 關(guān)系運算符

注:

  1. =是賦值運算符牌捷,而真正的判斷兩個操作數(shù)是否相等的運算符是==
  2. ==墙牌、!=是所有(基本和引用)數(shù)據(jù)類型都可以使用
  3. ">",">=","<","<="僅針對數(shù)值類型涡驮、char類型;char會自動轉(zhuǎn)為unicode碼數(shù)字(a=97)
        int a = 3;
        System.out.println(a==3);
        
        char b = 'a';
        char b2 = 'c';
        
        System.out.println((int)b);//97
        System.out.println(0+b);//97,int+char為int
        System.out.println(0+b2);//99,int+char為int
        System.out.println(b+0);//97,int+char為int
        System.out.println(b<b2);//true

2.7.4 邏輯運算符

& 邏輯與
| 邏輯或
&& 短路與憔古,只要有一個false遮怜,則返回false
|| 短路或,只要有一個true鸿市,則返回true
锯梁! 邏輯非,取反焰情,陌凳!false為true,内舟!true為false
^ 邏輯異或 合敦,相同為false,不同為true

注:

  1. 邏輯與會計算所有結(jié)果再判斷验游,短路與只要出現(xiàn)一個false即直接返回
  2. 邏輯或只要出現(xiàn)一個true即直接返回
        System.out.println(true&false);//false
        System.out.println(true|false);//true
        System.out.println(true&&false);//flase
        System.out.println(true||false);//true
        System.out.println(!true);//false
        System.out.println(true^true);//false
        System.out.println(false^false);//false
        System.out.println(true^false);//true

2.7.5 位運算符

~ 取反
& 按位與
| 按位或
^ 按位異或
<< 左移運算符充岛,左移一位相當(dāng)于乘以2,兩位是乘以2x2,三位是2x2x2
">>" 右移運算符耕蝉,右移一位相當(dāng)于除以2取商

        int a = 3;
        int b = 4;
        System.out.println(a&b);//0    3:0011 4:0100, 3&4 0000=0
        System.out.println(a|b);//7 3|4 0111=7
        System.out.println(a^b);//7 3^4 0111=7
        System.out.println(~a);//-4
        System.out.println(a<<1);// a*2 = 6
        System.out.println(b>>1);// b/2 = 2
        System.out.println(12>>2);// 12/2/2 = 3

2.7.6 字符串連接符

“+”
運算符兩側(cè)只要有一個字符串類型(String)崔梗,系統(tǒng)會自動將一個操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接

        int a = 3;
        String b = "4";
        int c = 4;
        System.out.println(a+b);//34
        System.out.println(a+c);//7
        
        System.out.println(a+b+c);//344 ,a+b先轉(zhuǎn)為String
        System.out.println(a+c+b);//74  垒在,a+c先計算數(shù)字

注:

  1. String + 數(shù)字 = String
  2. char + 數(shù)字 = 數(shù)字

2.7.7 條件運算符

x ? y : z

x為boolean類型表達(dá)式蒜魄,先計算x,若為true則返回y场躯,否則返回z

        int score = 80;
        String type = score<60?"不及格":"及格";
        System.out.println(type);//及格
        
        int x = -100;
        System.out.println(x>0?1:(x==0?0:-1));//-1
        System.out.println(x<0?1:(x==0?3/0:3/0));//1  谈为,先計算外層,走不到里層括號踢关,所以3/0不會報錯

2.7.8 運算符優(yōu)先級的問題

2.8 類型轉(zhuǎn)換

2.8.1 自動類型轉(zhuǎn)換

  1. 容量小的可以自動轉(zhuǎn)換為容量大的數(shù)據(jù)類型(不是字節(jié)數(shù)伞鲫,而是范圍,比如float4個字節(jié)可以轉(zhuǎn)換為long8個字節(jié)耘成,因為float范圍大榔昔,但是會損失一定精度)。

  2. 整型常量可以直接賦值給byte 瘪菌、short撒会、char等類型變量,而不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換师妙,只要不超出其表數(shù)范圍即可诵肛。

short a = 12;//合法
short b = 123456;//非法

2.8.2 強(qiáng)制類型轉(zhuǎn)換

(type)var

2.8.3 基本類型轉(zhuǎn)換溢出

操作比較大的數(shù)時,要留意是否溢出

        int money = 1000000000;//10億
        int years = 20;
        int total = money * years;
        System.out.println(total);//-1474836480,溢出,int范圍21億
        long total2 = money * years;
        System.out.println(total2);//-1474836480,溢出怔檩,int計算先溢出褪秀,所以即使total2是long也不行
        long total3 = money * (long)years;
        System.out.println(total3);//20000000000,先強(qiáng)轉(zhuǎn)其中一個為long,long與int計算還是long
        
        //常用技巧
        long total4 = 10L * 1000000000;//10000000000薛训,直接將其中一個數(shù)字強(qiáng)轉(zhuǎn)為long
        long total5 = 10  * 1000000000;//1410065408媒吗,溢出
        System.out.println(total4);
        System.out.println(total5);

2.9 簡單的鍵盤輸入

Scanner

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入名字:");
        String name = scanner.nextLine();
        System.out.println("請輸入你的愛好:");
        String favor = scanner.nextLine();
        System.out.println("請輸入你的年齡:");
        int age = scanner.nextInt();

        System.out.println("#####################");
        System.out.println(name);
        System.out.println(favor);
        System.out.println(age);

結(jié)果

請輸入名字:
pjh
請輸入你的愛好:
coding
請輸入你的年齡:
33
#####################
pjh
coding
33

第三章 控制語句

3.1 選擇結(jié)構(gòu)

任何一個軟件和程序,本質(zhì)都是由“變量乙埃、選擇語句闸英、循環(huán)語句”組成

3.1.1 if單選擇結(jié)構(gòu)

注意,if可以不寫{}介袜,只執(zhí)行下面一句甫何,但是建議即使是一句也要用{}

3.1.2 if-else雙選擇結(jié)構(gòu)

if(布爾表達(dá)式){
    語句1
}else{
    語句2
}

3.1.3 if-else if-else多選擇結(jié)構(gòu)

if(布爾表達(dá)式1){
    語句1
}else if(布爾表達(dá)式2){
    語句2
}else{
    語句3
}

3.1.4 switch多選擇結(jié)構(gòu)

一般用來做多值判斷

switch(表達(dá)式){
case 值1:
語句1;
[break;]
case 值2:
語句2;
[break;]
……
[default:
默認(rèn)語句;]
}

遇到break結(jié)束switch;

表達(dá)式一般是整數(shù)(long除外)或者枚舉遇伞,JDK1.7之后支持String辙喂;

如果判斷到所需的值后沒有break,會把后續(xù)所有語句執(zhí)行鸠珠;

例如:

        int month = (int)(1+12*Math.random());
        month = 3;
        System.out.println("月份:"+month);
        
        switch(month) {
        case 1:
            System.out.println("1月份過年了");
//          break;
        case 2:
            System.out.println("2月份開春了");
            break;
        case 3:
            System.out.println("3月開學(xué)了");
//          break;
        default:
            System.out.println("其他月份");
            break;
        }

結(jié)果:

月份:3
3月開學(xué)了
其他月份

3.2 循環(huán)結(jié)構(gòu)

3.2.1 while循環(huán)

while(布爾表達(dá)式){
    循環(huán)體;
}
    graph TD
    
    開始 --> 布爾表達(dá)式
    布爾表達(dá)式 -- true --> 循環(huán)體
    循環(huán)體 --> 布爾表達(dá)式
    布爾表達(dá)式 -- false --> 結(jié)束
    

3.2.2 do-while循環(huán)

do{
    循環(huán)體;
}while(布爾表達(dá)式);

3.2.3 for循環(huán)

        int sum = 0;
        for(int i=1;i<=100;i++) {
            sum+=i;
        }
        System.out.println(sum);
        ////
        int j = 1;
        sum = 0;
        for(;j<=100;j++) {
            sum+=j;
        }
        System.out.println(sum);
        ////
        int k;
        for(k=0,sum=0;k<=100;k++) {
            sum+=k;
        }
        System.out.println(sum);

3.2.4 嵌套循環(huán)

99乘法表

        //99乘法表
        for(int i=1;i<=9;i++) {
            for(int j=1;j<=9;j++) {
                if(j<=i){
                    System.out.print(j + "*" + i + "=" + (i*j<10?" "+i*j:i*j) +"  ");
                }                   
            }
            System.out.println();
        }

結(jié)果:

1*1= 1  
1*2= 2  2*2= 4  
1*3= 3  2*3= 6  3*3= 9  
1*4= 4  2*4= 8  3*4=12  4*4=16  
1*5= 5  2*5=10  3*5=15  4*5=20  5*5=25  
1*6= 6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7= 7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8= 8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9= 9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81 

3.2.5 break & continue 語句

break用來退出循環(huán)巍耗,不執(zhí)行循環(huán)中剩余語句
中止本次循環(huán)后續(xù)代碼,繼續(xù)下次循環(huán)

3.2.6 帶標(biāo)簽的break & continue

goto語句渐排,保留關(guān)鍵字芍锦,但java沒有正式使用
break和continue中可以看到一些goto的影子--帶標(biāo)簽的break和continue

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琉挖,一起剝皮案震驚了整個濱河市有滑,隨后出現(xiàn)的幾起案子滑燃,更是在濱河造成了極大的恐慌,老刑警劉巖吓歇,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異票腰,居然都是意外死亡城看,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門杏慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來测柠,“玉大人,你說我怎么就攤上這事缘滥『湫玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵朝扼,是天一觀的道長赃阀。 經(jīng)常有香客問我,道長擎颖,這世上最難降的妖魔是什么榛斯? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任观游,我火速辦了婚禮,結(jié)果婚禮上驮俗,老公的妹妹穿的比我還像新娘懂缕。我一直安慰自己,他們只是感情好王凑,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布搪柑。 她就那樣靜靜地躺著,像睡著了一般荤崇。 火紅的嫁衣襯著肌膚如雪拌屏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天术荤,我揣著相機(jī)與錄音倚喂,去河邊找鬼。 笑死瓣戚,一個胖子當(dāng)著我的面吹牛端圈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播子库,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舱权,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仑嗅?” 一聲冷哼從身側(cè)響起宴倍,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仓技,沒想到半個月后鸵贬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡脖捻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年阔逼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片地沮。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗜浮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摩疑,到底是詐尸還是另有隱情危融,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布未荒,位于F島的核電站专挪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寨腔,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一速侈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迫卢,春花似錦倚搬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至家卖,卻和暖如春眨层,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背上荡。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工趴樱, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酪捡。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓叁征,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逛薇。 傳聞我的和親對象是個殘疾皇子捺疼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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