第一節(jié):java語(yǔ)言概述
一柬批、java簡(jiǎn)介[了解]
1.java概述
1.1java是什么?
學(xué)習(xí)之前需要了解,java是什么酌畜。java是sun公司推出的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言余寥,特別適用于Interent應(yīng)用程序開(kāi)發(fā),它的最大特點(diǎn)就是“一次編譯,到處運(yùn)行”,并且能夠在各種操作系統(tǒng)上運(yùn)行,例如:windows,linux等。
1.2java名稱的由來(lái)
? Java是印度尼西亞爪哇島的英文名稱撵孤,因盛產(chǎn)咖啡而聞名曙咽。Java語(yǔ)言中的許多庫(kù)類名稱,多與咖啡有關(guān)嚣崭,如JavaBeans(咖啡豆)、NetBeans(網(wǎng)絡(luò)豆)以及ObjectBeans (對(duì)象豆)等等懦傍。SUN和JAVA的標(biāo)識(shí)也正是一杯正冒著熱氣的咖啡雹舀。Java自1995誕生,至今已經(jīng)20多年的歷史粗俱。
1.3為什么學(xué)習(xí)java?
?java可以說(shuō)是無(wú)處不在说榆,其市場(chǎng)占有率也在不斷攀升。他已經(jīng)吸收了全球最大的開(kāi)發(fā)者隊(duì)伍---500W+開(kāi)發(fā)者這是全球最大最具活力的開(kāi)發(fā)團(tuán)隊(duì)寸认。
?目前采用java的設(shè)備已經(jīng)超過(guò)45億签财,其中報(bào)告8億臺(tái)個(gè)人計(jì)算機(jī)、15億部移動(dòng)電話及其其他手持設(shè)備偏塞、22億智能卡唱蒸,以及機(jī)頂盒、打印機(jī)灸叼、網(wǎng)絡(luò)照相機(jī)神汹、游戲、汽車導(dǎo)航系統(tǒng)古今、彩票終端屁魏、醫(yī)療設(shè)備、收費(fèi)站等捉腥。
以下是最新的編程語(yǔ)言排行榜:
2019年03月編程語(yǔ)言排行榜TOP 10 榜單
https://hellogithub.com/report/tiobe/?url=/
排名 | 編程語(yǔ)言 | 流行度 | 對(duì)比上月 | 年度明星語(yǔ)言 |
---|---|---|---|---|
1 | Java | 14.880% | 0.996% | 2015, 2005 |
2 | C | 13.305% | 0.881% | 2017, 2008 |
3 | Python | 8.262% | 0.688% | 2010, 2007, 2018 |
4 | C++ | 8.126% | 0.682% | 2003 |
5 | Visual Basic .NET | 6.429% | 0.666% | |
6 | C# | 3.267% | 0.421% | |
7 | JavaScript | 2.426% | 0.422% | 2014 |
8 | PHP | 2.420% | 0.149% | 2004 |
9 | SQL | 1.926% | 0.026% | |
10 | Objective-C | 1.681% | 0.234% | 2012, 2011 |
2.java發(fā)展史
1995年5月23日蚁堤,Java語(yǔ)言誕生
1996年4月但狭,10個(gè)最主要的操作系統(tǒng)供應(yīng)商申明將在其產(chǎn)品中嵌入JAVA技術(shù)
1996年9月披诗,約8.3萬(wàn)個(gè)網(wǎng)頁(yè)應(yīng)用了JAVA技術(shù)來(lái)制作
1997年2月18日,JDK1.1發(fā)布
1997年4月2日立磁,JavaOne會(huì)議召開(kāi)呈队,參與者逾一萬(wàn)人,創(chuàng)當(dāng)時(shí)全球同類會(huì)議規(guī)模之紀(jì)錄
1997年9月唱歧,JavaDeveloperConnection社區(qū)成員超過(guò)十萬(wàn)
1998年2月宪摧,JDK1.1被下載超過(guò)2,000,000次
1998年12月8日粒竖,JAVA2企業(yè)平臺(tái)J2EE發(fā)布
1999年6月,SUN公司發(fā)布Java的三個(gè)版本:標(biāo)準(zhǔn)版(J2SE)几于、企業(yè)版(J2EE)和微型版(J2ME)
2000年5月8日蕊苗,JDK1.3發(fā)布
2000年5月29日,JDK1.4發(fā)布
2001年6月5日沿彭,NOKIA宣布朽砰,到2003年將出售1億部支持Java的手機(jī)
2001年9月24日,J2EE1.3發(fā)布
2002年2月26日喉刘,J2SE1.4發(fā)布瞧柔,自此Java的計(jì)算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5發(fā)布睦裳,成為Java語(yǔ)言發(fā)展史上的又一里程碑造锅。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0
2005年6月廉邑,JavaOne大會(huì)召開(kāi)哥蔚,SUN公司公開(kāi)Java SE 6。此時(shí)蛛蒙,Java的各種版本已經(jīng)更名糙箍,以取消其中的數(shù)字“2”:J2EE更名為Java EE,J2SE更名為Java SE宇驾,J2ME更名為Java ME
2006年12月,SUN公司發(fā)布JRE6.0
2009年4月20日猴伶,Oracle以74億美元收購(gòu)Sun公司课舍,取得了java的版權(quán)。
2009年12月他挎,SUN公司發(fā)布Java EE 6
2010年11月筝尾,由于Oracle公司對(duì)于Java社群的不友善,因此Apache揚(yáng)言將退出JCP
java之父James Gosling 加盟google
2011年7月28日办桨,Oracle公司發(fā)布Java SE 7
2014年3月18日筹淫,Oracle公司發(fā)表Java SE 8
2017年9月21日,Oracle公司發(fā)表Java SE 9
2018年3月21日呢撞,Oracle公司發(fā)表Java SE 10
-
2018年9月25日损姜,Java SE 11發(fā)布
?
3.Java語(yǔ)言特點(diǎn)
java語(yǔ)言豐富多彩, 通過(guò)這11個(gè)詞語(yǔ)來(lái)概括java語(yǔ)言的特性殊霞,下面來(lái)看下每個(gè)詞語(yǔ)所代表的含義摧阅,大概了解下就可以了。
?1.簡(jiǎn)單的(Simple)
風(fēng)格和C++很像绷蹲,基本語(yǔ)法和C很像棒卷,但是摒棄了C++容易引發(fā)錯(cuò)誤的地方顾孽,如指針、內(nèi)存管理比规、頭文件等若厚。提供了豐富的類庫(kù)。
2.面向?qū)ο螅∣bject-Oriented)
簡(jiǎn)單的來(lái)說(shuō)蜒什,世界萬(wàn)物皆是對(duì)象测秸,它將重點(diǎn)放在了數(shù)據(jù)(也就是對(duì)象)和對(duì)象的接口上。
3.分布式的(Distributed)
Java是針對(duì)Internet的分布式環(huán)境而設(shè)計(jì)的吃谣,所以它包含了一個(gè)支持HTTP和FTP等基于TCP/IP協(xié)議的子庫(kù)乞封,它能處理TCP/IP協(xié)議
4.解釋的(Interpreted)
Java解釋器可以在任何移植了解釋器的機(jī)器上Java字節(jié)碼。現(xiàn)在使用即時(shí)編譯器將字節(jié)碼翻譯成機(jī)器碼岗憋。
5.健壯的(Robust)
Java是強(qiáng)制類型的語(yǔ)言肃晚,它不僅在運(yùn)行時(shí)檢查代碼,還在編譯時(shí)就檢查代碼仔戈,消除有出錯(cuò)傾向的狀態(tài)关串。
6.安全性(Secure)
指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作监徘。
7.結(jié)構(gòu)中立的(Architecture-neutral)
編譯器生成一個(gè)體系結(jié)構(gòu)中立的高層次的與機(jī)器無(wú)關(guān)的byte-code格式語(yǔ)言晋修,被設(shè)計(jì)在Java虛擬機(jī)上運(yùn)行。這是一種編譯過(guò)的代碼凰盔,只要有Java運(yùn)行時(shí)系統(tǒng)墓卦,就可以在許多處理機(jī)上運(yùn)行。
8.可移植的(Portable)
Java定義了獨(dú)立于平臺(tái)的基本數(shù)據(jù)類型及其運(yùn)算户敬。
9.高性能的(High-Performance)
Java通過(guò)使用及時(shí)編譯器落剪,可以很容易的將字節(jié)碼轉(zhuǎn)換為運(yùn)行這個(gè)應(yīng)用程序的特定CPU的機(jī)器碼。
10.多線程的(Multi-Threaded)
多線程可以提供更好的交互性能和實(shí)時(shí)控制性能尿庐。
11.動(dòng)態(tài)的(Dynamic)
Java的動(dòng)態(tài)性是其面向?qū)ο笤O(shè)計(jì)方法的拓展忠怖,它允許程序動(dòng)態(tài)地裝入運(yùn)行過(guò)程中所需要的類。
其中可以簡(jiǎn)單的概括為以下三個(gè)重要的特點(diǎn):
特點(diǎn)一:面向?qū)ο? 兩個(gè)基本概念:類抄瑟、對(duì)象
三大特性:封裝凡泣、繼承、多態(tài)
特點(diǎn)二:健壯性
吸收了C/C++語(yǔ)言的優(yōu)點(diǎn)皮假,但去掉了其影響程序健壯性的部分鞋拟。如:指針、內(nèi)存的申請(qǐng)與釋放等
特點(diǎn)三:跨平臺(tái)性
跨平臺(tái)性:通過(guò)Java語(yǔ)言編寫(xiě)的應(yīng)用程序在不同的系統(tǒng)平臺(tái)上都可以運(yùn)行惹资。
原理:
只要在需要運(yùn)行 java 應(yīng)用程序的操作系統(tǒng)上严卖,先安裝一個(gè)Java虛擬機(jī) (JVM Java Virtual Machine) 即可。 由JVM來(lái)負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行布轿。
4.java語(yǔ)言的構(gòu)成
? 所謂java的構(gòu)成哮笆,就是值java運(yùn)行環(huán)境的組成来颤,從核心到外圍包括 JIT、JVM稠肘、JRE福铅、JDK,四種區(qū)別如下:
JDK:是Java Develop ToolKit的縮寫(xiě)项阴,它里面有很多java所編寫(xiě)的開(kāi)發(fā)工具(如:javac.exe滑黔、jar.exe),還包括了一個(gè)jre的調(diào)試環(huán)境。
JRE:是Java Runtime Environment的縮寫(xiě)环揽,是java運(yùn)行的基礎(chǔ)略荡,
它提供了java運(yùn)行的API,Java程序必須有JRE才能正常運(yùn)行。JVM:是Java Vitual Machine的縮寫(xiě)歉胶,它是java運(yùn)行的虛擬機(jī)環(huán)境.
JIT:是Java In Time的縮寫(xiě)汛兜,即java即時(shí)編譯器,是JVM的一部分通今,屬于內(nèi)核部分粥谬。
其中的JVM是java運(yùn)行的虛擬機(jī)環(huán)境,它是Java運(yùn)行環(huán)境的重要一環(huán)
二辫塌、java快速入門(mén)[重點(diǎn)]
2.1.基礎(chǔ)常識(shí)
人機(jī)交互方式:
現(xiàn)實(shí)生活中漏策,軟件的主要作用就是幫忙我們解決現(xiàn)實(shí)生活中的問(wèn)題。例如百度提供了搜索能力臼氨,淘寶掺喻、京東提供了購(gòu)物的能力。但是具體搜什么和具體買(mǎi)什么储矩,得取決于我們自己告訴了軟件什么樣的指令感耙,所以這里存在 人和軟件進(jìn)行交互的問(wèn)題。一般交互主要分為以下兩種情況:
圖形化界面(GraphicalUser Interface GUI)這種方式簡(jiǎn)單直觀椰苟,使用者易于接受抑月,容易上手操作树叽。
命令行方式(Command Line Interface CLI):需要有一個(gè)控制臺(tái)舆蝴,輸入特定的指令,讓計(jì)算機(jī)完成一些操作题诵。較為麻煩洁仗,需要記錄住一些命令。但是一般后期會(huì)使用大量的命令性锭。尤其linux操作系統(tǒng)下赠潦。目前只需要記住以下常用的基本命令即可。
常用的DOS命令:
dir(directory) : 列出當(dāng)前目錄下的文件以及文件夾
md(make directory) : 創(chuàng)建目錄
rd(remove directory) : 刪除目錄
cd(change directory): 進(jìn)入指定目錄
cd.. : 退回到上一級(jí)目錄
cd \: 退回到根目錄
exit : 退出 dos 命令行
2.2什么是計(jì)算機(jī)語(yǔ)言
語(yǔ)言:是人與人之間用于溝通的一種方式草冈。例如:中國(guó)人與中國(guó)人用普通話溝通她奥。而中國(guó)人要和英國(guó)人交流瓮增,就要學(xué)習(xí)英語(yǔ)。
計(jì)算機(jī)語(yǔ)言(編程語(yǔ)言):人與計(jì)算機(jī)交流的方式哩俭。如果人要與計(jì)算機(jī)交流绷跑,那么就要學(xué)習(xí)計(jì)算機(jī)語(yǔ)言。計(jì)算機(jī)語(yǔ)言有很多種凡资,如:C砸捏,C++,Java隙赁,PHP等垦藏。
2.3編寫(xiě)第一個(gè) Java應(yīng)用程序
實(shí)現(xiàn)步驟:
1.什么是JDK, JRE
2.下載及安裝 JDK
3.編寫(xiě)第一個(gè) Java 應(yīng)用程序
a.顯示已知文件類型的擴(kuò)展名
b.配置環(huán)境變量 path
c.main 方法和輸出語(yǔ)句
d.注釋
e.其它細(xì)節(jié)
2.3.1 什么是JDK, JRE
簡(jiǎn)單而言,使用 JDK 的提供的開(kāi)發(fā)工具完成 java 程序的開(kāi)發(fā)伞访,使用 JRE 運(yùn)行開(kāi)發(fā)好的 Java 應(yīng)用程序掂骏。
JDK(Java Development Kit Java開(kāi)發(fā)工具包):JDK是提供給 Java 開(kāi)發(fā)人員使用的,其中包含了 java 的開(kāi)發(fā)工具咐扭,也包括了JRE芭挽。所以安裝了JDK,就不用在單獨(dú)安裝JRE了
JRE(Java Runtime Environment Java運(yùn)行環(huán)境) :包括Java虛擬機(jī)(JVM:Java Virtual Machine)和 Java 程序所需的核心類庫(kù)等蝗肪,如果想要運(yùn)行一個(gè)開(kāi)發(fā)好的Java程序袜爪,計(jì)算機(jī)中只需要安裝JRE即可。
JDK包含了JRE,JRE包含了JVM.
2.3.2 下載及安裝 JDK
下載: 官方網(wǎng)址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html薛闪、
安裝JDK:
? - 傻瓜式安裝辛馆,下一步即可。
? - 建議:安裝路徑不要有中文或者特殊符號(hào)如空格等豁延。
? - 當(dāng)提示安裝 JRE 時(shí)昙篙,可以選擇不安裝。
默認(rèn)安裝路徑: C:\Program Files\Java
2.3.3配置環(huán)境變量:
第一步:打開(kāi)-計(jì)算機(jī)-屬性-高級(jí)系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量
第二步:進(jìn)行配置(JAVA_HOME,PATH,CLASSPATH)
- a.JAVA_HOME:另似給jdk全路徑取一個(gè)別名诱咏。然后使用的時(shí)候直接使用別名
- b.PATH:通過(guò)PATH,在DOS命令行找到對(duì)應(yīng)的命令苔可。java javac
- c.CLASSPATH:JDK1.5之后,可以選擇性安裝袋狞,建議安裝焚辅。最前面一定要配置一個(gè).(點(diǎn))
參考配置如下:
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_73
PATH = %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.3.4 顯示已知文件的擴(kuò)展名
查看本地地方文件夾
2.3.5編寫(xiě)源代碼
- 1.創(chuàng)建文本文件修改后綴為.java;例如:HelloWrold.java
- 2.文件名必須和源代碼中的class類名保持一致
//HelloWorld由于被public 修飾苟鸯,所有必須和文件名保持一致
public class HelloWorld{
//程序的入口
public static void main(String[] args){
//打印信息到控制臺(tái)
System.out.println("hello bj1901.....");
}
}
3.具體細(xì)節(jié)如下:
- main的方法:
Java應(yīng)用程序的執(zhí)行入口是main()方法同蜻。它有固定的書(shū)寫(xiě)格式:
public static void main(String[] args) {...}
如果沒(méi)有 main 方法則在運(yùn)行時(shí)會(huì)拋出如下異常
java.lang.NoSuchMethodError:main】 - 想要和JVM來(lái)個(gè)互動(dòng),只要在main方法中加入一句System.out.println(“Hello World”);
- 一個(gè) Java 源文件中最多只能有一個(gè) public 類早处。其它類的個(gè)數(shù)不限湾蔓,
如果源文件文件包含一個(gè) public 類,它必 須是該類名命名砌梆。 - Java 語(yǔ)言嚴(yán)格區(qū)分大小寫(xiě)默责。
- Java方法由一條條語(yǔ)句構(gòu)成贬循,每個(gè)語(yǔ)句以分號(hào)結(jié)束。
4.java注釋
注釋:用于解釋說(shuō)明程序的文字桃序、提高了代碼的閱讀性
Java中的注釋類型:
? - 單行注釋
? - 多行注釋
? - 文檔注釋(java 特有)
注釋是一個(gè)程序員必須要具有的良好編程習(xí)慣甘有。將自己的思想通過(guò)注釋先整理出來(lái),再用代碼去體現(xiàn)
單行注釋
格式: //注釋文字
多行注釋
格式: /* 注釋文字 */
對(duì)于單行和多行注釋葡缰,被注釋的文字亏掀,不會(huì)被JVM(java虛擬機(jī))解釋執(zhí)行。多行注釋里面不允許有多行注釋嵌套泛释。
2.3.6 編譯
java提供了javac命令用于編譯:
編譯HelloWorld.java文件滤愕,編譯成功會(huì)生成HelloWorld.class文件
- javac HelloWorld.java
運(yùn)行
- java HelloWorld
4.4案例
public class Test01{
public static void main(String [] args){
System.out.println("-------------------------");
//注釋:是一個(gè)制表符 tab鍵
System.out.println("\t歡迎光臨家樂(lè)福西鄉(xiāng)店");
System.out.println("機(jī):15 \t 人:1082 \t 單:7596");
System.out.println("\t\t\t\t\tRMB");
System.out.println("商品號(hào)\t110 清風(fēng)抽取式面紙 \t\t25.30");
System.out.println("商品號(hào)\t111 統(tǒng)一方便面 \t\t12.56");
System.out.println("-------------------------");
System.out.println("總價(jià)\t\t\t\t\t37.86");
System.out.println("-------------------------");
}
}
4.5 練習(xí)
開(kāi)發(fā)出如下界面:
練習(xí)1:
**********************************
魔法飾品分發(fā)系統(tǒng)
1.登錄系統(tǒng)
2.退出
**********************************
請(qǐng)選擇輸入數(shù)字:
練習(xí)2:
魔法飾品分發(fā)系統(tǒng)
**********************************
1.賬號(hào)信息管理
2.購(gòu)物結(jié)算
3.裝備返點(diǎn)
4.注銷
***********************************
請(qǐng)選擇輸入數(shù)字:
三、java語(yǔ)言的運(yùn)行機(jī)制
1.JVM(java虛擬機(jī))
2.GC(垃圾回收器)
2.1 JVM
概念:JVM是一個(gè)虛擬的計(jì)算機(jī)怜校,具有指令集并使用不同的存儲(chǔ)區(qū)域间影。負(fù)責(zé)執(zhí)行指令,管理數(shù)據(jù)茄茁、內(nèi)存魂贬、寄存器
java是跨平臺(tái)的語(yǔ)言(windows,linux,mac):
怎么實(shí)現(xiàn)跨平臺(tái)的:因?yàn)椴煌牟僮飨到y(tǒng)(平臺(tái))擁有不同的虛擬機(jī)。
2.2.GC 垃圾回收器
1.系統(tǒng)開(kāi)辟一個(gè)線程自動(dòng)檢測(cè)哪些對(duì)象不再被使用愈犹,然后將這些空閑的對(duì)象及資源進(jìn)行回收键科。(c,c++需要手動(dòng)回收)
2.在系統(tǒng)運(yùn)行的時(shí)候,會(huì)自動(dòng)去執(zhí)行漩怎。我們?nèi)斯o(wú)法精確的取控制和干預(yù).
四勋颖、eclipse編譯工具 使用
1.解壓直接使用
2.第一次進(jìn)來(lái)選擇工作空間,就是存放代碼的地方(建議放在D盤(pán))
3.修改eclipse的編碼方式(UTF-8:萬(wàn)國(guó)碼勋锤,國(guó)標(biāo)碼:GB2312,GBK)
4.修改字體大小
5.新建項(xiàng)目
6.創(chuàng)建具體的java類
選中項(xiàng)目饭玲,然后先建class。然后設(shè)置class名稱