Java基础语法(一)
Java 簡介
Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語言和Java平臺(tái)的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。
Java分為三個(gè)體系:
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平臺(tái)標(biāo)準(zhǔn)版)
- JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平臺(tái)企業(yè)版)
- JavaME(J2ME)(Java 2 Platform Micro Edition,java平臺(tái)微型版)。
2005年6月,JavaOne大會(huì)召開,SUN公司公開Java SE 6。此時(shí),Java的各種版本已經(jīng)更名以取消其中的數(shù)字"2":J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
主要特性
- Java語言是簡單的:
Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,而是引用。并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。
- Java語言是面向?qū)ο蟮?#xff1a;
Java語言提供類、接口和繼承等面向?qū)ο蟮奶匦?#xff0c;為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語言全面支持動(dòng)態(tài)綁定,而C++語言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定。總之,Java語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。
- Java語言是分布式的:
Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。
- Java語言是健壯的:
Java的強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。
- Java語言是安全的:
Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對(duì)通過網(wǎng)絡(luò)下載的類具有一個(gè)安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。
- Java語言是體系結(jié)構(gòu)中立的:
Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。
- Java語言是可移植的:
這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。
- Java語言是解釋型的:
如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。
- Java是高性能的:
與那些解釋型的高級(jí)腳本語言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C++。
- Java語言是多線程的:
在Java語言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable)的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來控制。Java語言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。
- Java語言是動(dòng)態(tài)的:
Java語言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。
發(fā)展歷史
- 1995年5月23日,Java語言誕生
- 1996年1月,第一個(gè)JDK-JDK1.0誕生
- 1996年4月,10個(gè)最主要的操作系統(tǒng)供應(yīng)商申明將在其產(chǎn)品中嵌入JAVA技術(shù)
- 1996年9月,約8.3萬個(gè)網(wǎng)頁應(yīng)用了JAVA技術(shù)來制作
- 1997年2月18日,JDK1.1發(fā)布
- 1997年4月2日,JavaOne會(huì)議召開,參與者逾一萬人,創(chuàng)當(dāng)時(shí)全球同類會(huì)議規(guī)模之紀(jì)錄
- 1997年9月,JavaDeveloperConnection社區(qū)成員超過十萬
- 1998年2月,JDK1.1被下載超過2,000,000次
- 1998年12月8日,JAVA2企業(yè)平臺(tái)J2EE發(fā)布
- 1999年6月,SUN公司發(fā)布Java的三個(gè)版本:標(biāo)準(zhǔn)版(JavaSE,以前是J2SE)、企業(yè)版(JavaEE以前是J2EE)和微型版(JavaME,以前是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語言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0
- 2005年6月,JavaOne大會(huì)召開,SUN公司公開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年04月20日,甲骨文74億美元收購Sun。取得java的版權(quán)。
- 2010年11月,由于甲骨文對(duì)于Java社區(qū)的不友善,因此Apache揚(yáng)言將退出JCP[4]。
- 2011年7月28日,甲骨文發(fā)布java7.0的正式版。
- 2014年3月18日,Oracle公司發(fā)表Java SE 8。
Java開發(fā)工具
Java語言盡量保證系統(tǒng)內(nèi)存在1G以上,其他工具如下所示:
- Linux 系統(tǒng)、Mac OS 系統(tǒng)、Windows 95/98/2000/XP,WIN 7/8系統(tǒng)。
- Java JDK 7、8……
- Notepad?編輯器或者其他編輯器。
- IDE:Eclipse
安裝好以上的工具后,我們就可以輸出Java的第一個(gè)程序"Hello World!"
public class HelloWorld {public static void main(String []args) { System.out.println("Hello World"); ????????}}Java 基礎(chǔ)語法
一個(gè)Java程序可以認(rèn)為是一系列對(duì)象的集合,而這些對(duì)象通過調(diào)用彼此的方法來協(xié)同工作。下面簡要介紹下類、對(duì)象、方法和實(shí)例變量的概念。
- 對(duì)象:對(duì)象是類的一個(gè)實(shí)例,有狀態(tài)和行為。例如,一條狗是一個(gè)對(duì)象,它的狀態(tài)有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
- 類:類是一個(gè)模板,它描述一類對(duì)象的行為和狀態(tài)。
- 方法:方法就是行為,一個(gè)類可以有很多方法。邏輯運(yùn)算、數(shù)據(jù)修改以及所有動(dòng)作都是在方法中完成的。
- 實(shí)例變量:每個(gè)對(duì)象都有獨(dú)特的實(shí)例變量,對(duì)象的狀態(tài)由這些實(shí)例變量的值決定。
第一個(gè)Java程序
下面看一個(gè)簡單的Java程序,它將打印字符串?Hello World
實(shí)例
public class HelloWorld { ????/* 第一個(gè)Java程序 ????* 它將打印字符串 Hello World ????*/ ????public static void main(String []args) { ????????System.out.println("Hello World"); ????????// 打印 Hello World ????????????}}下面將逐步介紹如何保存、編譯以及運(yùn)行這個(gè)程序:
- 打開Notepad,把上面的代碼添加進(jìn)去;
- 把文件名保存為:HelloWorld.java;
- 打開cmd命令窗口,進(jìn)入目標(biāo)文件所在的位置,假設(shè)是C:\
- 在命令行窗口鍵入 javac HelloWorld.java? 按下enter鍵編譯代碼。如果代碼沒有錯(cuò)誤,cmd命令提示符會(huì)進(jìn)入下一行。(假設(shè)環(huán)境變量都設(shè)置好了)。
- 再鍵入java HelloWorld 按下Enter鍵就可以運(yùn)行程序了
你將會(huì)在窗口看到 Hello World
C : > javac HelloWorld.java C : > java HelloWorld Hello World基本語法
編寫Java程序時(shí),應(yīng)注意以下幾點(diǎn):
- 大小寫敏感:Java是大小寫敏感的,這就意味著標(biāo)識(shí)符Hello與hello是不同的。
- 類名:對(duì)于所有的類來說,類名的首字母應(yīng)該大寫。如果類名由若干單詞組成,那么每個(gè)單詞的首字母應(yīng)該大寫,例如?MyFirstJavaClass 。
- 方法名:所有的方法名都應(yīng)該以小寫字母開頭。如果方法名含有若干單詞,則后面的每個(gè)單詞首字母大寫。
- 源文件名:源文件名必須和類名相同。當(dāng)保存文件的時(shí)候,你應(yīng)該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的后綴為.java。(如果文件名和類名不相同則會(huì)導(dǎo)致編譯錯(cuò)誤)。
- 主方法入口:所有的Java 程序由public static void main(String []args)方法開始執(zhí)行。
Java標(biāo)識(shí)符
Java所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標(biāo)識(shí)符。
關(guān)于Java標(biāo)識(shí)符,有以下幾點(diǎn)需要注意:
- 所有的標(biāo)識(shí)符都應(yīng)該以字母(A-Z或者a-z),美元符($)、或者下劃線(_)開始
- 首字符之后可以是字母(A-Z或者a-z),美元符($)、下劃線(_)或數(shù)字的任何字符組合
- 關(guān)鍵字不能用作標(biāo)識(shí)符
- 標(biāo)識(shí)符是大小寫敏感的
- 合法標(biāo)識(shí)符舉例:age、$salary、_value、__1_value
- 非法標(biāo)識(shí)符舉例:123abc、-salary
Java修飾符
像其他語言一樣,Java可以使用修飾符來修飾類中方法和屬性。主要有兩類修飾符:
- 訪問控制修飾符 : default, public , protected, private
- 非訪問控制修飾符 : final, abstract, strictfp
在后面的章節(jié)中我們會(huì)深入討論Java修飾符。
Java變量
Java中主要有如下幾種類型的變量- 局部變量
- 類變量(靜態(tài)變量)
- 成員變量(非靜態(tài)變量)
Java數(shù)組
數(shù)組是儲(chǔ)存在堆上的對(duì)象,可以保存多個(gè)同類型變量。在后面的章節(jié)中,我們將會(huì)學(xué)到如何聲明、構(gòu)造以及初始化一個(gè)數(shù)組。
Java枚舉
Java 5.0引入了枚舉,枚舉限制變量只能是預(yù)先設(shè)定好的值。使用枚舉可以減少代碼中的bug。
例如,我們?yōu)楣暝O(shè)計(jì)一個(gè)程序,它將限制果汁為小杯、中杯、大杯。這就意味著它不允許顧客點(diǎn)除了這三種尺寸外的果汁。
實(shí)例
class FreshJuice { ????enum FreshJuiceSize{ SMALL, MEDIUM , LARGE } ????FreshJuiceSize size;} public class FreshJuiceTest { ????public static void main(String []args){ FreshJuice juice = new FreshJuice(); juice.size = FreshJuice.FreshJuiceSize.MEDIUM ; ????}}注意:枚舉可以單獨(dú)聲明或者聲明在類里面。方法、變量、構(gòu)造函數(shù)也可以在枚舉中定義。
Java 關(guān)鍵字
下面列出了Java 關(guān)鍵字。這些保留字不能用于常量、變量、和任何標(biāo)識(shí)符的名稱。
| 訪問控制 | private | 私有的 |
| protected | 受保護(hù)的 | |
| public | 公共的 | |
| 類、方法和變量修飾符 | abstract | 聲明抽象 |
| class | 類 | |
| extends | 擴(kuò)允,繼承 | |
| final | 最終值,不可改變的 | |
| implements | 實(shí)現(xiàn)(接口) | |
| interface | 接口 | |
| native | 本地,原生方法(非Java實(shí)現(xiàn)) | |
| new | 新,創(chuàng)建 | |
| static | 靜態(tài) | |
| strictfp | 嚴(yán)格,精準(zhǔn) | |
| synchronized | 線程,同步 | |
| transient | 短暫 | |
| volatile | 易失 | |
| 程序控制語句 | break | 跳出循環(huán) |
| case | 定義一個(gè)值以供switch選擇 | |
| continue | 繼續(xù) | |
| default | 默認(rèn) | |
| do | 運(yùn)行 | |
| else | 否則 | |
| for | 循環(huán) | |
| if | 如果 | |
| instanceof | 實(shí)例 | |
| return | 返回 | |
| switch | 根據(jù)值選擇執(zhí)行 | |
| while | 循環(huán) | |
| 錯(cuò)誤處理 | assert | 斷言表達(dá)式是否為真 |
| catch | 捕捉異常 | |
| finally | 有沒有異常都執(zhí)行 | |
| throw | 拋出一個(gè)異常對(duì)象 | |
| throws | 聲明一個(gè)異常可能被拋出 | |
| try | 捕獲異常 | |
| 包相關(guān) | import | 引入 |
| package | 包 | |
| 基本類型 | boolean | 布爾型 |
| byte | 字節(jié)型 | |
| char | 字符型 | |
| double | 雙精度浮點(diǎn) | |
| float | 單精度浮點(diǎn) | |
| int | 整型 | |
| long | 長整型 | |
| short | 短整型 | |
| null | 空 | |
| 變量引用 | super | 父類,超類 |
| this | 本類 | |
| void | 無返回值 | |
| 保留關(guān)鍵字 | goto | 是關(guān)鍵字,但不能使用 |
| const | 是關(guān)鍵字,但不能使用 |
Java注釋
類似于C/C++,Java也支持單行以及多行注釋。注釋中的字符將被Java編譯器忽略。
public class HelloWorld { /* 這是第一個(gè)Java程序 ????*它將打印Hello World ????* 這是一個(gè)多行注釋的示例 ????*/ public static void main(String []args){ ????// 這是單行注釋的示例 ????/* 這個(gè)也是單行注釋的示例 */ ????System.out.println("Hello World"); ????}}Java 空行
空白行,或者有注釋的行,Java編譯器都會(huì)忽略掉。
繼承
在Java中,一個(gè)類可以由其他類派生。如果你要?jiǎng)?chuàng)建一個(gè)類,而且已經(jīng)存在一個(gè)類具有你所需要的屬性或方法,那么你可以將新創(chuàng)建的類繼承該類。
利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些代碼。被繼承的類稱為超類(super class),派生類稱為子類(subclass)。
接口
在Java中,接口可理解為對(duì)象間相互通信的協(xié)議。接口在繼承中扮演著很重要的角色。
接口只定義派生要用到的方法,但是方法的具體實(shí)現(xiàn)完全取決于派生類。
Java 源程序與編譯型運(yùn)行區(qū)別
如下圖所示:
下一節(jié)介紹Java編程中的類和對(duì)象。之后你將會(huì)對(duì)Java中的類和對(duì)象有更清楚的認(rèn)識(shí)。
在下一章節(jié)我們將介紹如何配置java開發(fā)環(huán)境。參考文獻(xiàn):
http://www.runoob.com/java/java-basic-syntax.html
總結(jié)
以上是生活随笔為你收集整理的Java基础语法(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word 邮件合并中的域的格式的2个小定
- 下一篇: 数据结构基础(4) --快速排序