全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

JavaEE課程筆記day01-Java概述

更新時(shí)間:2018-07-20 來(lái)源:黑馬程序員JavaEE培訓(xùn)學(xué)院 瀏覽量:

第1章  Java概述                          
         

1.1  Java語(yǔ)言發(fā)展史和平臺(tái)概述

A:Java語(yǔ)言發(fā)展史

     詹姆斯·高斯林(James Gosling)1977年獲得了加拿大卡爾加里大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,1983年獲得了美國(guó)卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,畢業(yè)后到IBM工作,設(shè)計(jì)IBM第一代工作站NeWS系統(tǒng),但不受重視。后來(lái)轉(zhuǎn)至Sun公司,1990年,與Patrick,Naughton和Mike Sheridan等人合作“綠色計(jì)劃”,后來(lái)發(fā)展一套語(yǔ)言叫做“Oak”,后改名為Java。

   B:Java語(yǔ)言版本

   *JDK 1.1.4       Sparkler     寶石                       1997-09-12

   *JDK 1.1.5       Pumpkin          南瓜                       1997-12-13

   *JDK 1.1.6       Abigail       阿比蓋爾--女子名          1998-04-24

   *JDK 1.1.7       Brutus        布魯圖--古羅馬政治家和將軍      1998-09-28

   *JDK 1.1.8       Chelsea           切爾西--城市名             1999-04-08

   *J2SE 1.2         Playground      運(yùn)動(dòng)場(chǎng)                    1998-12-04

   *J2SE 1.2.1      none          無(wú)                    1999-03-30

   *J2SE 1.2.2      Cricket       蟋蟀                       1999-07-08

   *J2SE 1.3         Kestrel       美洲紅隼(sǔn)               2000-05-08

   *J2SE 1.3.1      Ladybird    瓢蟲(chóng)                       2001-05-17

   *J2SE 1.4.0      Merlin        灰背隼                    2002-02-13

   *J2SE 1.4.1      grasshopper    蚱蜢                       2002-09-16

   *J2SE 1.4.2      Mantis       螳螂                       2003-06-26

   *JAVASE 5.0 (1.5.0)      Tiger          老虎     

   *JAVASE 5.1 (1.5.1)      Dragonfly  蜻蜓     

   *JAVASE 6.0 (1.6.0)      Mustang          野馬

   *JAVASE 7.0 (1.7.0)      Dolphin           海豚

1.2 JVM,JRE,JDK的概述
1.2.1   什么是跨平臺(tái)?

平臺(tái):指的是操作系統(tǒng)(Windows,Linux,Mac)

跨平臺(tái):Java程序可以在任意操作系統(tǒng)上運(yùn)行,一次編寫(xiě)到處運(yùn)行

原理:實(shí)現(xiàn)跨平臺(tái)需要依賴(lài)Java的虛擬機(jī) JVM (Java Virtual Machine)

1.2.2     JVM   JRE   JDK說(shuō)明

A:什么是JVM

JVM是java虛擬機(jī)(JVM Java Virtual Machine),java程序需要運(yùn)行在虛擬機(jī)上,不同平臺(tái)有自己的虛擬機(jī),因此java語(yǔ)言可以跨平臺(tái)

B:什么是JRE

包括Java虛擬機(jī)(JVM Java Virtual Machine)和Java程序所需的核心類(lèi)庫(kù)等如果想要運(yùn)行一個(gè)開(kāi)發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。

       JRE:JVM+類(lèi)庫(kù)。

C:什么是JDK

JDK是提供給Java開(kāi)發(fā)人員使用的,其中包含了java的開(kāi)發(fā)工具,也包括了JRE。所以安裝了JDK,就不用在單獨(dú)安裝JRE了。

      其中的開(kāi)發(fā)工具:編譯工具(javac.exe)  打包工具(jar.exe)等

      JDK:JRE+JAVA的開(kāi)發(fā)工具。

D:為什么JDK中包含一個(gè)JRE

      為什么JDK中包含一個(gè)JRE呢?

      開(kāi)發(fā)完的程序,需要運(yùn)行一下看看效果。

E:JDK,JRE,JVM的作用和關(guān)系

JDK包含JRE 和開(kāi)發(fā)工具包

JRE 包含 核心類(lèi)庫(kù)和JVM

1.3     常用dos命令
1.3.1     打開(kāi)控制臺(tái)

win + R,然后cmd回車(chē)

1.3.2     常用命令

d: 回車(chē)  盤(pán)符切換

dir(directory):列出當(dāng)前目錄下的文件以及文件夾

cd (change directory)改變指定目錄(進(jìn)入指定目錄)

進(jìn)入 cd 目錄;cd 多級(jí)目錄

回退 cd..        ;cd\

cls : (clear screen)清屏

exit : 退出dos命令行

1.4     下載安裝JDK

請(qǐng)參考《JDK下載安裝文檔.doc》安裝步驟


1.5  helloworld案例
1.5.1     執(zhí)行流程       

1.5.2     編寫(xiě)代碼步驟

首先定義一個(gè)類(lèi)

public class 類(lèi)名

在類(lèi)定義后加上一對(duì)大括號(hào)

{}

在大括號(hào)中間添加一個(gè)主(main)方法/函數(shù)

public static void main(String[] args){ }

在主方法的大括號(hào)中間添加一行輸出語(yǔ)句

System.out.println(“HelloWorld”);

1.5.3     案例代碼一

public class HelloWorld {

    public static void main(String[]args) {

        System.out.println("HelloWorld");

    }

}

運(yùn)行代碼步驟:

?       在命令行模式中,輸入javac命令對(duì)源代碼進(jìn)行編譯,生成字節(jié)碼文件

–      javac源文件名.java

?       編譯完成后,如果沒(méi)有報(bào)錯(cuò)信息,輸入java命令對(duì)class字節(jié)碼文件進(jìn)行解釋運(yùn)行,執(zhí)行時(shí)不需要添加.class擴(kuò)展名

–      javaHelloWorld

1.5.4     HelloWorld案例常見(jiàn)問(wèn)題

A:找不到文件(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)

    a:文件擴(kuò)展名隱藏導(dǎo)致編譯失敗

    b:文件名寫(xiě)錯(cuò)了

B:單詞拼寫(xiě)問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)

    a:class寫(xiě)成Class

    b:String寫(xiě)成string

    c:System寫(xiě)成system

    d:main寫(xiě)成mian

C:括號(hào)匹配問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)

    a:把類(lèi)體的那對(duì)大括號(hào)弄掉一個(gè)

    b:把方法體的那對(duì)大括號(hào)弄掉一個(gè)

    c:把輸出語(yǔ)句的那對(duì)小括號(hào)弄掉一個(gè)

D:中英文問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)

a:提示信息:錯(cuò)誤: 非法字符:\????的格式

注意:java編程中需要的基本上都是英文字符

第2章  環(huán)境配置
2.1  工具安裝
2.1.1     Notepad軟件的安裝和配置

為了讓我們寫(xiě)的程序錯(cuò)誤看起來(lái)更直接,我們安裝一款高級(jí)記事本軟件。

Notepad軟件的安裝和配置

設(shè)置 – 首選項(xiàng) – 新建 – 默認(rèn)語(yǔ)言和編碼

2.2  環(huán)境變量配置
2.2.1     案例說(shuō)明

為什么要配置

程序的編譯和執(zhí)行需要使用到j(luò)avac和java命令,所以只能在bin目錄下寫(xiě)程序

實(shí)際開(kāi)發(fā)中,不可能把程序?qū)懙絙in目錄下,所以我們必須讓javac和java命令在任意目錄下能夠訪問(wèn)

如何配置

創(chuàng)建新的變量名稱(chēng):JAVA_HOME

計(jì)算機(jī)-右鍵屬性-高級(jí)系統(tǒng)設(shè)置-高級(jí)-環(huán)境變量-系統(tǒng)變量

為JAVA_HOME添加變量值:JDK安裝目錄

在path環(huán)境變量最前面添加如下內(nèi)容

%JAVA_HOME%\bin;

2.3  注釋
2.3.1     注釋概述

A: 什么是注釋

用于解釋說(shuō)明程序的文字

B: Java中注釋分類(lèi)

單行注釋

格式: //注釋文字

多行注釋

格式: /*  注釋文字  */

文檔注釋

格式:/**注釋文字 */

C: 注釋的作用

    解釋說(shuō)明程序,幫助我們調(diào)試錯(cuò)誤

2.3.2     案例代碼

/*

       注釋?zhuān)河糜诮忉屨f(shuō)明程序的文字

 

       分類(lèi):

              單行

              多行

 

       作用:解釋說(shuō)明程序,提高程序的閱讀性

*/

 

//這是我的HelloWorld案例

public class HelloWorld {

       /*

              這是main方法

              main是程序的入口方法

              所有代碼的執(zhí)行都是從main方法開(kāi)始的

       */

       public static void main(String[] args) {

              //這是輸出語(yǔ)句

              System.out.println("HelloWorld");

       }

 

}

2.4  關(guān)鍵字
2.4.1     關(guān)鍵字概述

被Java語(yǔ)言賦予特定含義的單詞


2.4.2     關(guān)鍵字特點(diǎn)

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

常用的代碼編輯器,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記,非常直觀,所以我們不需要去死記硬背,在今后的學(xué)習(xí)中重要的關(guān)鍵字也會(huì)不斷的出來(lái)。


2.4.3     案例代碼三:

/*

    關(guān)鍵字:被Java語(yǔ)言賦予特定含義的單詞

 

    特點(diǎn):

        A:組成關(guān)鍵字的字母全部小寫(xiě)

        B:常見(jiàn)的代碼編輯器,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記

*/

public class HelloWorld {

    public static void main(String[]args) {

        System.out.println("HelloWorld");

    }

}


第3章  語(yǔ)法格式
3.1  常量
3.1.1     常量概述

在程序執(zhí)行的過(guò)程中,其值不可以發(fā)生改變的量


3.1.2     常量分類(lèi)

字符串常量   用雙引號(hào)括起來(lái)的內(nèi)容(“HelloWorld”)

整數(shù)常量       所有整數(shù)(12,-23)

小數(shù)常量       所有小數(shù)(12.34)

字符常量       用單引號(hào)括起來(lái)的內(nèi)容(‘a(chǎn)’,’A’,’0’)

布爾常量       較為特有,只有true和false

空常量          null(數(shù)組部分講解)

3.1.3     案例代碼四:

/*

    常量:在程序執(zhí)行的過(guò)程中,其值不可以發(fā)生改變的量

 

    常量分類(lèi):

        A:字符串常量 "HelloWorld"

        B:整數(shù)常量       12,-23

        C:小數(shù)常量       12.34

        D:字符常量       'a','0'

        E:布爾常量       true,false

        F:空常量     null(后面講解)

*/

public class ChangLiang {

    public static void main(String[]args) {

        //字符串常量

        System.out.println("HelloWorld");

 

        //整數(shù)常量

        System.out.println(12);

        System.out.println(-23);

 

        //小數(shù)常量

        System.out.println(12.34);

 

        //字符常量

        System.out.println('a');

        System.out.println('0');

 

        //布爾常量

        System.out.println(true);

        System.out.println(false);

    }

 

}


3.2  變量
3.2.1     變量概述

在程序執(zhí)行的過(guò)程中,在某個(gè)范圍內(nèi)其值可以發(fā)生改變的量

從本質(zhì)上講,變量其實(shí)是內(nèi)存中的一小塊區(qū)域


3.2.2     變量定義格式

數(shù)據(jù)類(lèi)型變量名 = 初始化值;

注意:格式是固定的,記住格式,以不變應(yīng)萬(wàn)變


3.2.3     變量圖解

3.3  數(shù)據(jù)類(lèi)型
3.3.1     計(jì)算機(jī)存儲(chǔ)單元

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

除了字節(jié)外還有一些常用的存儲(chǔ)單位,大家可能比較熟悉,我們一起來(lái)看看:

–      1B(字節(jié)) = 8bit

–      1KB= 1024B

–      1MB= 1024KB

–      1GB= 1024MB

–      1TB= 1024GB


3.3.2     數(shù)據(jù)類(lèi)型概述和分類(lèi)

A:為什么有數(shù)據(jù)類(lèi)型

    Java語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類(lèi)型,在內(nèi)存中分配了不同大小的內(nèi)存空間

B:Java中數(shù)據(jù)類(lèi)型的分類(lèi)

   基本數(shù)據(jù)類(lèi)型、引用數(shù)據(jù)類(lèi)型




3.4  標(biāo)識(shí)符   
3.4.1     標(biāo)識(shí)符概述

A 作用

       給包,類(lèi),方法,變量等起名字

B 組成規(guī)則

      由字符,下劃線_,美元符$組成

      這里的字符采用的是unicode字符集,所以包括英文大小寫(xiě)字母,中文字符,數(shù)字字符等。

      注意事項(xiàng)

           不能以數(shù)字開(kāi)頭

           不能是Java中的關(guān)鍵字

 

C : 命名原則:見(jiàn)名知意

a包

       最好是域名倒過(guò)來(lái),要求所有的字母小寫(xiě)

b類(lèi)或者接口

       如果是一個(gè)單詞首字母大寫(xiě)

       如果是多個(gè)單詞每個(gè)單詞首字母大寫(xiě)(駝峰標(biāo)識(shí))

c方法或者變量

       如果是一個(gè)單詞全部小寫(xiě)

       如果是多個(gè)單詞,從第二個(gè)單詞首字母大寫(xiě)

d常量

       如果是一個(gè)單詞,所有字母大寫(xiě)

       如果是多個(gè)單詞,所有的單詞大寫(xiě),用下劃線區(qū)分每個(gè)單詞


3.4.2     案例代碼五

/*  標(biāo)識(shí)符:

就是給包,類(lèi),方法,變量起名字的符號(hào)。

    組成規(guī)則:

        A:unicode字符

            數(shù)字字符,英文大小寫(xiě),漢字(不建議使用漢字)

        B:下劃線_

        C:美元符$

 

    注意事項(xiàng)

        A:不能以數(shù)字開(kāi)頭

        B:不能是java中的關(guān)鍵字

 

    常見(jiàn)命名規(guī)則:

        A:基本要求

            見(jiàn)名知意

        B:常見(jiàn)的命名

            a:包(其實(shí)就是文件夾,用于對(duì)類(lèi)進(jìn)行管理)

                全部小寫(xiě),多級(jí)包用.隔開(kāi)

                舉例:com,com.itheima

            b:類(lèi)

                一個(gè)單詞首字母大寫(xiě)

                   舉例:Student,Car

                多個(gè)單詞每個(gè)單詞的首字母大寫(xiě)

                   舉例:HelloWorld

            c:方法和變量

                一個(gè)單詞首字母小寫(xiě)

                   舉例:age,show()

                多個(gè)單詞從第二個(gè)單詞開(kāi)始每個(gè)單詞的首字母大寫(xiě)

                   舉例:maxAge,getAge()

*/

public class BiaoZhiFu {

    publicstatic void main(String[] args) {

        //定義變量

        //數(shù)據(jù)類(lèi)型 變量名 = 初始化值;

        inta = 10;

 

        //正確

        intb2 = 20;

        //錯(cuò)誤

        //int2b = 30;

 

        //不能是java中的關(guān)鍵字

        //錯(cuò)誤

        //intpublic = 40;

    }

 

}

3.5  定義變量          
3.5.1     基本數(shù)據(jù)類(lèi)型變量的定義和使用

變量的定義格式:

              數(shù)據(jù)類(lèi)型 變量名 = 初始化值;

       基本數(shù)據(jù)類(lèi)型:

              byte,short,int,long,float,double,char,boolean

       注意:

              整數(shù)默認(rèn)是int類(lèi)型,定義long類(lèi)型的數(shù)據(jù)時(shí),要在數(shù)據(jù)后面加L。

              浮點(diǎn)數(shù)默認(rèn)是double類(lèi)型,定義float類(lèi)型的數(shù)據(jù)時(shí),要在數(shù)據(jù)后面加F。

 

3.5.2     案例代碼六

public class VariableDemo {

    publicstatic void main(String[] args) {

        //定義byte類(lèi)型的變量

        byteb = 10;

        System.out.println(10);

        System.out.println(b);

 

        //定義short類(lèi)型的變量

        shorts = 100;

        System.out.println(s);

 

        //定義int類(lèi)型的變量

        inti = 10000;

        System.out.println(i);

 

        //定義long類(lèi)型的變量

        long l =1000000000000000L;

        System.out.println(l);

 

        //定義float類(lèi)型的變量

        floatf = 12.34F;

        System.out.println(f);

 

        //定義double類(lèi)型的變量

        doubled = 12.34;

        System.out.println(d);

 

        //定義char類(lèi)型的變量

        charc = 'a';

        System.out.println(c);

 

        //定義boolean類(lèi)型的變量

        booleanbb = false;

        System.out.println(bb);

    }

 

}


3.5.3     變量定義的注意事項(xiàng)

變量未賦值,不能直接使用

引出變量的第二種使用格式

變量只在它所屬的范圍內(nèi)有效。

變量在哪對(duì)大括號(hào)內(nèi),變量就屬于哪對(duì)大括號(hào)

一行上可以定義多個(gè)變量,但是不建議

3.5.4     案例代碼七

/*  

    變量定義注意事項(xiàng):

        1:變量未賦值,不能直接使用

        2:變量只在它所屬的范圍內(nèi)有效

            變量屬于它所在的那對(duì)大括號(hào)

        3:一行上可以定義多個(gè)變量,但是不建議

*/

public class VariableDemo2 {

    public static voidmain(String[] args) {

        //定義變量

        int a = 10;

        System.out.println(a);

 

        int b;

        b = 20; //變量在使用前賦值都是可以的

        System.out.println(b);

 

        {

            int c = 100;

            System.out.println(c);

        }

        //System.out.println(c);

 

        /*

        int aa,bb,cc;

        aa = 10;

        bb = 20;

        cc = 30;

        */

 

        /*

        int aa = 10;

        int bb = 20;

        int cc = 30;

        */

 

        int aa=10,bb=20,cc=30;

    }

}


3.6  數(shù)據(jù)類(lèi)型轉(zhuǎn)換
3.6.1     隱式數(shù)據(jù)類(lèi)型轉(zhuǎn)換

取值范圍小的數(shù)據(jù)類(lèi)型與取值范圍大的數(shù)據(jù)類(lèi)型進(jìn)行運(yùn)算,會(huì)先將小的數(shù)據(jù)類(lèi)型提升為大的,再運(yùn)算


3.6.2     案例代碼八

/*

    +:是一個(gè)運(yùn)算符,做加法運(yùn)算的。

    我們?cè)谧鲞\(yùn)算的時(shí)候,一般要求參與運(yùn)算的數(shù)據(jù)類(lèi)型必須一致。

 

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

        隱式轉(zhuǎn)換

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

 

    隱式轉(zhuǎn)換

        byte,short,char-- int -- long -- float -- double

*/

public class TypeCastDemo {

    publicstatic void main(String[] args) {

        //直接輸出了運(yùn)算的結(jié)果

        System.out.println(3+ 4);

 

        //定義兩個(gè)int類(lèi)型的變量

        int a = 3;

        intb = 4;

        intc = a + b;

        System.out.println(c);

 

        //定義一個(gè)byte類(lèi)型,定義一個(gè)int類(lèi)型

        bytebb = 2;

        intcc = 5;

        System.out.println(bb+ cc);

 

        //我能不能不直接輸出,用一個(gè)變量接受呢?

        //用變量接受,這個(gè)變量應(yīng)該有類(lèi)型

        //可能損失精度

        //bytedd = bb + cc;

        intdd = bb + cc;

        System.out.println(dd);

    }

 

}


3.6.3     強(qiáng)制類(lèi)型數(shù)據(jù)轉(zhuǎn)換

強(qiáng)制轉(zhuǎn)換的格式

      *b = (byte)(a + b);

強(qiáng)制轉(zhuǎn)換的注意事項(xiàng)

      *如果超出了被賦值的數(shù)據(jù)類(lèi)型的取值范圍得到的結(jié)果會(huì)與你期望的結(jié)果不同


3.6.4     案例代碼九

/*

    強(qiáng)制轉(zhuǎn)換:

        目標(biāo)類(lèi)型 變量名 = (目標(biāo)類(lèi)型) (被轉(zhuǎn)換的數(shù)據(jù));

        不建議強(qiáng)制轉(zhuǎn)換,因?yàn)闀?huì)有精度的損失。

*/

public class TypeCastDemo2 {

    public static void main(String[] args) {

        inta = 3;

        byteb = 4;

        intc = a + b;

        //byted = a + b;

        byted = (byte) (a + b);

    }

}

本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員JavaEE培訓(xùn)學(xué)院

首發(fā):http://java.itheima.com/

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!