?? java的語言基礎.txt
字號:
Java的語言基礎
作者:<未知>
1.1 初識Java語言
像其它編程語言一樣,Java編程語言也被用來創(chuàng)建應用程序。那,首先我們還是從一個最普遍的小應用程序范例來切入——在屏幕上顯示字串“Hello
World!”。下列代碼給出了這個Java應用程序。
1.1.1 HelloWorldApp
代碼:
1.//
2.// Sample HelloWorld application
3.//
4.public class HelloWorldApp{
5.public static void main (String args[]) {
6.System.out.println ("Hello World!");
7.}
8.}
以上程序行是在你的屏幕上打印“Hello
World!”所需的最少組件。接下來,我們就針對上面給出的這段程序來簡單解釋一下,并且來實際編譯、運行它。
1.1.2 描述HelloWorldApp
第1-3行
程序中的1-3行是注釋行
1 //
2 // Sample HelloWorld application
3 //
第4行
第4行聲明類名為HelloWorldApp。類名(Classname)是在源文件中指明的,它可在與源代碼相同的目錄上創(chuàng)建一個classname.class文件。在本例題中,編譯器創(chuàng)建了一個稱為HelloWorldApp.class的文件,
它包含了公共類HelloWorldApp的編譯代碼。
4 public class HelloWorldApp{
第5行
第5行是程序執(zhí)行的起始點。Java技術解釋器必須發(fā)現(xiàn)這一嚴格定義的點,否則將拒絕運行程序。
其它程序語言(特別是C和C++)也采用main ()聲明作為程序執(zhí)行的起始點。此聲明的不同部分將在本課程的后幾部分介紹。
如果在程序的命令行中給出了任何自變量,它們將被傳遞給main()方法中被稱作args的String數(shù)組。在本例題中,未使用自變量。
5 public static void main (String args[]) {
- public-方法main()可被任何程序訪問,包括Java技術解釋器。
- static-
是一個告知編譯器main()是用于類HelloWorldApp中的函數(shù)的關鍵字。為使main()在程序做其它事之前就開始運行,這一關鍵字是必要的。
- void-
表明main()不返回任何信息。這一點是重要的,因為Java編程語言要進行謹慎的類型檢查,包括檢查調用的方法確實返回了這些方法所聲明的類型。
- String args [] - 是一個String數(shù)組的聲明,它將包含位于類名之后的命令行中的自變量。
java HelloWorldApp args[0]args[1]····
第6行
第6行聲明如何使用類名、對象名和方法調用。它使用由System類的out成員引用的PrintStreamout對象的println()方法,將字串“Hello
World!”打印到標準輸出上。
6 System.out.println (“Hello World!”);
在這個例子中,println()方法被輸入了一個字串自變量并將其寫在了標準輸出流上。
第7-8行
本程序的7-8行分別是方法main()和類HelloWorldApp的下括號。
7 }
8 }
1.1.3 編譯并運行HelloWorldApp
編譯
當你創(chuàng)建了HelloWorldApp.java源文件后,用下列程序行進行編譯:
c:\student\javac HelloWorldApp.java
如果編譯器未返回任何提示信息,新文件HelloWorldApp.class則被存儲在與源文件相同的目錄中,除非另有指定。
運行
為運行你的HelloWorldApp應用程序,需使用Java解釋器和位于bin目錄下的java:
c:\student\ java HelloWorldApp
Hello World!
1.1.4 嚴格的約定
通過上面實際編寫、編譯和運行這個簡單的例子,我們會發(fā)現(xiàn)Java是一種限制很嚴格的語言。我們在編寫Java程序的時候,一定要嚴格遵從它的約定,以后你會發(fā)現(xiàn)這些約定對維護和組織程序,使你養(yǎng)成一種優(yōu)良的編程風格都很有幫助。
-> 源文件的類型
在Java中,一個源程序文件被稱為一個編譯單元。它是一個包含一個或多個類定義的文本文件。Java編譯器要求源程序文件必須使用.java文件擴展名。這里可以注意到這個文件的擴展名是4個字符,所以,你的操作系統(tǒng)必須要有支持長文件名的能力。
-> 源文件的命名
如果.java文件包括一個公共類,那么它必須使用與那個公共類相同的文件名。例如在前例中的類的定義是
public class HelloWorldapp
源文件名則必須是HelloWorldapp.java
-> 類的數(shù)量
在源文件中,可以定義多個類,但每次只能定義一個公共類。
-> 標識符
Java中使用的標識符可以是大寫和小寫字母、數(shù)字、下劃線(_)、美元符號($)的任意組合。以下是一些有效的標識符:
Year99 count this_is_ok $some
以下是一些無效的標識符:
99year hello# not/ok
這里需要提醒大家注意的是,Java是一種大小寫敏感的語言,所以大家在書寫代碼的時候一定要注意大小寫的運用。
1.2 結構與構件
現(xiàn)在,我們從一個典型的Java源文件來了解一下Java程序涉及到的一些重要的構件,以及這些構件的結構。
代碼:
1 package trades;
2 import java.util.Math;
3 public class Quote extends Thread implements Tradable {
4 // Code goes in here
5 }
那我們從上面的例子中可以發(fā)現(xiàn)源文件的結構主要包含三個要素:
-> 一個包聲明(可選)
程序的第1行就是聲明了一個包(package),把該程序放在這個包中間。
-> 任意數(shù)量的包引入語句(可選)
程序的第2行是要求該程序引入系統(tǒng)提供的一個包java.util.Math。
-> 任意數(shù)量的類的聲明
程序的3-5行則是聲明了一個public的類Quote,它是從它的超類Thread擴展得到,并且實現(xiàn)Tradable的接口。
該三要素必須以上述順序出現(xiàn)。即,任何包引入語句出現(xiàn)在所有類定義之前;如果使用包聲明,則包聲明必須出現(xiàn)在類和引入語句之前。
結合上面的例子,我們接下來簡單的討論一下涉及到的這些構件,包package、包引入import、類class、方法method和變量variable。
1.2.1 包package
包實際上就是一個組織類class和接口interface的集合。通過包的這種機制,來把類名空間劃分成更多易于管理的塊。這樣做其主要目的就是可以避免類名的沖突,在不同的包里的類,其名字相同也不會發(fā)生沖突。包的主要功能如下:
->
依照功能來組織和劃分類。例如:java.awt包含了構成抽象窗口工具包(AWT)的類,這個包被用來構建和管理應用程序的圖形用戶界面。
-> 有助于定義變量和方法的訪問控制。
-> 通過這種包和包引入的機制,也可以保持程序的相對獨立性,有利于模塊化程序設計的實現(xiàn)。
聲明包的定義語句必須放在源文件的頂端。如果你沒有顯式的聲明一個包,那么Java會把你的類放入缺省包(default
package)里面,這個包沒有名字。
Java使用文件系統(tǒng)目錄來存儲包,目錄名必須和包嚴格的匹配。另外,這里還要簡單談論一下類路徑(CLASSPATH)環(huán)境變量的問題。Java編譯器使用參考的包層次的根是由類路徑決定的。例如,你可以在DOS系統(tǒng)環(huán)境下使用如下的命令來指定類路徑:
set CLASSPATH=C:\Mysource;C:\Mypackages
如果我們在源文件類的聲明前有以下語句:
Package trades.quotes
那么,這個源文件就放在下面這個目錄里面:
c:\Mypackages\trades\quotes
最后,需要提醒的是,如果你定義的類已經指定到了某個包中,那么在運行的時候你也需要指定相應的包名和類名一起使用。
同學們可以結合實驗二來加深對包概念的理解。
1.2.2 類class
類是面向程序設計中最小的抽象單元,它就像是一個數(shù)據(jù)和代碼的容器。它也是Java里面最重要的一個要件。它通過實例化轉變?yōu)閷ο螅趯嵗臅r候自動調用構造函數(shù)來初始化對象。
對于類的聲明比較復雜,它可以使用很多的修飾符,我們以下面的例子來簡單談論一下這些修飾符。
public abstract class Myclass extends Parent implements A,B {}
首先我們看到的public修飾符,是定義的類的訪問控制屬性,這個我們在下一章會有詳盡的介紹。
然后我們看到的abstract修飾符是表示該類是個抽象類,需要其他類來擴展。這里再介紹一個final修飾符,它與abstract修飾符的意義正好相反,它表示該類不能擴展。所以abstract和final不能在聲明類的時候同時使用。
在Java中所有的類都擴展一個超類,如果我們沒有指定一個超類,那么系統(tǒng)會把Object類作為它要擴展的超類,Object類就是所有類的超類。這里需要注意的是,在C++中我們使用基類(base
class)和繼承類(derived class)的稱謂,而在Java中我們一般稱為超類(super
class)和子類(subclass)。
另外,需要提一下的是一個特殊的關鍵字this,它用來引用正在被調用方法的所屬當前對象。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -