Java之三 標識符、關鍵字、數據類型
Java 智能化工具——Eclipse
視頻課堂:https://edu.csdn.net/course/play/8222
Eclipse的使用
Eclipse的獲取與安裝
1.下載并安裝Eclipse
下載Eclipse的網頁是http://www.eclipse.org/downloads/index.php。鑒于令人朝思暮想的Eclipse 3.0 Release于2004年6月25日左右發布,我們這里將采用Eclipse 3.0 M9 Stable Build進行講解。Windows版本的文件名是Eclipse-SDK-3.0M9-win32.zip,約85.3MB。
安裝Eclipse異常簡單,把ZIP包中的Eclipse目錄解壓縮到C盤根目錄中即可。
黃糖故事
關于開源軟件版本的行話
許多開源軟件都有若干約定成俗的版本稱謂,好比行當黑話,不了解會吃大虧。
Release:實現承諾的特性,并且通過徹底測試的穩定版本。這種版本一般非常健壯,并且擁有許多可以配合使用的第三方軟件,適合開發商業項目。在這篇文章撰寫之時,Eclipse的最新Release版本是2.1.3,于2004年3月10日發布。Release相當于Windows正式版。
Stable Build:新的Release版本一般要經過若干個開發周期,在此期間,如果某個版本經過測試相對穩定,開發人員便會把它發布成Stable Build,供渴望嘗試新特性的用戶在第一時間體驗。相當于Beta測試版本的Windows。
Integration Build:當Eclipse開發人員開發出穩定部件時發布的版本,當然不能保證部件之間能夠友善合作。如果可以,則將升級為Stable Build發布。不推薦普通用戶下載使用。
Nightly Build:每夜構筑的版本,是自動工具每天晚上通過自動編譯得到的版本,方便開發者之間交流。這種版本的穩定性沒有任何保障,不推薦用戶下載使用。
2.啟動Eclipse
你必須安裝了J2SE 1.4以上的SDK或JRE才能運行Eclipse,具體安裝方法請參考《Java咖啡館(2)——第一杯咖啡》一文。一切就緒后,雙擊“C:\Eclipse\Eclipse.exe”便能啟動Eclipse了。首次啟動Eclipse,會讓你配置工作區,選擇默認即可。
'margin-left:0cm;text-indent:0cm;mso-list:none;tab-stops:21.0pt'>
針對一個銀行的取款,分別編寫一個面向對象和面向過程的兩個程序代碼?
Java 基本語法
上回課,我們學習了并實踐操作了一個Hello World的例子,大家顯然是沒有解渴。不過,回過頭來有些同學問了。“你寫了一大堆,是出字了。不過我不明白是什么意思啊!
這個不用著急。下面我為大家解釋一下這段程序。
1 /*
2 簡單的 HelloWorld 程序
3 */
4 public class? Hello{
5? //main方法
6? public static void main (String args[]) {
7? System.out.println ("Hello World!"); //輸出字符串“Hello World!”
8? }
9 }
程序中的1-3 行是注釋行
/*
簡單的 HelloWorld 程序
*/
“/*……*/”是多行注釋,而“//”是單行注釋的意思。
第4行
聲明類名為Hello,保存時要以Classname.java保存。類名(Classname)是在源文件中指明的,源文件編譯后可在源代碼所在的目錄里生成一個classname.class文件。在本例題中,編譯器創建了一個稱為Hello.class 的文件, 它包含了公共類Hello 的編譯代碼。
public class Hello{
第5行是一個單行注釋
第6行
是程序執行的起始點。Java 技術解釋器必須發現這一嚴格定義的點,否則將拒絕運行程序。C和C++語言,也采用main()做為程序的起點。但是與java有些不同,以后的課程會介紹的。
第7行
聲明如何使用類名、對象名和方法調用。它使用由System 類的out 成員引用的PrintStreamout對象的println()方法,將字串“Hello World!”打印到標準輸出上。
System.out.println (“Hello World!”);
分號“;”是java語言語句的分隔符
第8-9行
那兩個花括號是分別和第4行和第6行的花括號配對
Java標識符和關鍵字
1.標識符
程序員對程序中的各個元素加以命名時使用的命名記號稱為標識符(identifier)。Java語言中,標識符是以字母,下劃線(_),美元符($)開始的一個字符序列,后面可以跟字母,下劃線,美元符,數字。例如,identifier,userName,User_Name,_sys_val, $change為合法的標識符,而2mail room#,class 為非法的標識符。
2.保留字
具有專門的意義和用途,不能當作一般的標識符使用,這些標識符稱為保留字(reserved word),也稱為關鍵字,下面列出了java語言中的所有保留字:
bstract,break,byte,boolean,catch,case,class,char,continue,default,double,do,else,extends,false,final,float,for,finally,if,import,implements,int,interface,instanceof,long,length,native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,while 。
java語言中的保留字均用小寫字母表示。
數據類型的概述
數據類型對于任何一門計算機語言來說都是重要的,因為變量的數據類型決定了如何將代表這些值的位存儲到計算機的內存中。在java語言里,數據類型分為兩大類:
一、基本數據類型。
二、復合數據類型(對象數據類型)。
基本數據類型又分4類8種。如下:
u 邏輯型:boolean.
u 文本型:char.
u整型:byte,short,int和long.
u浮點型:double和float.
復合數據類型就有很多種了,他們都是從Object這個類繼續下來的。
下面我想重點的講一個問題:
文字類型的char和String,這兩個都是文本類型。但是不同之處,
1、char是基本數據類型,而String不是,但是String是非常有用的。
2、char是一個16位的unicode(國際碼)字符,用單引號引上。例如,
char c = ‘100jq’;
String是一個類。字符串在java里是對象。在java SE 5中有三個類可以表示字符串:String,StringBuffer和StringBuilder.StringBuilder是jdk1.5的特性,在jdk1.5之前的版本中沒有。字符串要放在雙引號中。字符串中的字符也是Unicode .String對象表示的字符串是不能修改的。假如要對字符串修改,應該使用StringBuffer和StringBuilder類。
實踐:
public class Assign {
public static void main (String args []) {
// 聲明整數型變量
int x,y;
// 聲明并賦值給一個單精度浮點數變量
float z = 3.414f;
// 聲明并賦值給一個雙精度浮點數變量
double w = 3.1415;
// 聲明并賦值給一個布爾類型的變量
boolean truth = true;
// 聲明字符型變量
char c;
// 聲明字符串型變量
String str;
//聲明并賦值給一個字符串型變量
String str1 = "bye";
// 為字符型變量復值
c = 'A';
// 給字符串型變量賦值
str = "Hi out there!";
// 給整型變量賦值
x = 6;
y = 1000;
}
}
錯誤的賦值舉例:
y= 15.454; //y是個整型數
w= 456;??//w是個雙精度數
將這個程序用上節課的方法,編譯執行。就可以看到結果了。
這節課,我們基本了解了java的數據類型的知識。也知道了基本數據類型的概念。但是對象型的數據呢?java是面向對象的語言啊,光靠基本數據類型也無法描述客觀的世界啊。因為我們不可能說,桌子、椅子是整數,還是字符。所以對象型的數據類型是非常必要的,也是理解面向對象概念的基礎之一。
Java 面向對象
面向對象的基本思想
面向對象是一種新興的程序設計方法,或者是一種新的程序設計規范(paradigm),其基本思想是使用對象、類、繼承、封裝、消息等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟件系統,并且在系統構造中盡可能運用人類的自然思維方式。開發一個軟件是為了解決某些問題,這些問題所涉及的業務范圍稱作該軟件的問題域。其應用領域不僅僅是軟件,還有計算機體系結構和人工智能等。
1.對象的基本概念
對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務組成。從更抽象的角度來說,對象是問題域或實現域中某些事物的一個抽象,它反映該事物在系統中需要保存的信息和發揮的作用;它是一組屬性和有權對這些屬性進行操作的一組服務的封裝體。客觀世界是由對象和對象之間的聯系組成的。
主動對象是一組屬性和一組服務的封裝體,其中至少有一個服務不需要接收消息就能主動執行(稱作主動服務)。
2.類的基本概念
把眾多的事物歸納、劃分成一些類是人類在認識客觀世界時經常采用的思維方法。分類的原則是抽象。類是具有相同屬性和服務的一組對象的集合,它為屬于該類的所有對象提供了統一的抽象描述,其內部包括屬性和服務兩個主要部分。在面向對象的編程語言中,類是一個獨立的程序單位,它應該有一個類名并包括屬性說明和服務說明兩個主要部分。類與對象的關系就如模具和鑄件的關系,類的實例化結果就是對象,而對一類對象的抽象就是類。
3.消息
消息就是向對象發出的服務請求,它應該包含下述信息:提供服務的對象標識、服務標識、輸入信息和回答信息。服務通常被稱為方法或函數。
3.1.2 面向對象的基本特征
1.封裝性
封裝性就是把對象的屬性和服務結合成一個獨立的相同單位,并盡可能隱蔽對象的內部細節,包含兩個含義:
◇ 把對象的全部屬性和全部服務結合在一起,形成一個不可分割的獨立單位(即對象)。
◇ 信息隱蔽,即盡可能隱蔽對象的內部細節,對外形成一個邊界〔或者說形成一道屏障〕,只保留有限的對外接口使之與外部發生聯系。
封裝的原則在軟件上的反映是:要求使對象以外的部分不能隨意存取對象的內部數據(屬性),從而有效的避免了外部錯誤對它的"交叉感染",使軟件錯誤能夠局部化,大大減少查錯和排錯的難度。
2.繼承性
特殊類的對象擁有其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。例如,輪船、客輪;人、大人。一個類可以是多個一般類的特殊類,它從多個一般類中繼承了屬性與服務,這稱為多繼承。例如,客輪是輪船和客運工具的特殊類。在java語言中,通常我們稱一般類為父類(superclass,超類),特殊類為子類(subclass)。
3.多態性
對象的多態性是指在一般類中定義的屬性或服務被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或服務在一般類及其各個特殊類中具有不同的語義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。
面向對象程序設計方法
OOA-Object Oriented Analysis 面向對象的分析
OOD-Object Oriented Design 面向對象的設計
OOI-Object Oriented Implementation 面向對象的實現
類和對象的基本用法
計算機要描述的是現實世界。光有基本數據類型,是不能滿足我們的需要的。在這個大千世界里,任何東西都可以看做成對象,它們當然不能都是整數和文字了。現在學習java的同學,一般會看到一些java的教程里寫的一個日期的例子。這個例子是個典型的例子。你們想啊,日期里面有很多屬性啊,像是年,月,日。基本類型的數據就不能很好的描述它。就像是人,是一個類型。人有很多屬性,頭,軀干,四肢,這樣的話,我們就更難用基本類型來描述了。
我們還是看看這個日期的例子吧!
public class MyDate {
private int day; //日
private int month; //月
private int year;? //年
public MyDate(int day,int month,int year){
this.day?? = day;
this.month = month;
this.year? = year;
}
public MyDate(MyDate date) {
this.day?? = date.day;
this.month = date.month;
this.year? = date.year;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public MyDate addDays(int more_days) {
MyDate new_date = new MyDate(this);
new_date.day = new_date.day + more_days;
return new_date;
}
public void print() {
System.out.println("MyDate: " + day + "-" + month +??? "-" + year);
}
}
在上次課的那個例子里我們已經看到了,class要害字后面是個類名。這個類名就是MyDate.MyDate 這個類里面定義了3個屬性,4個方法,2個構造函數。因為還沒有講到這些概念,目前說還是有點超前。我還是先來講些理論的東西。
理論闡述:
類描述了同一對象都具有的數據和行為。Java語言中的類將這些數據和行為進行封裝,形成了復合數據類型。創建一個新類,就是創建了一種新的數據類型。在程序中,類只定義一次,而用new運算符可以實例化同一個類的一個或多個對象。比如人是一個類,每一個人就是一個對象。那當然是人定義一次,對象可以new出很多對象了。但是這些具體的人,都具有同樣的特征(數據和行為)。
Java的類里面有3個東西,看下面:
class 類名 {
聲明屬性;
聲明構造函數;
聲明方法;
}
剛才講了,類不是要描述現實的數據和行為嗎?在這里屬性就是要描述封裝的數據,方法就是描述行為。構造函數嘛,是在new的運算符后面的,當然是構造對象的了,要不怎么能叫構造函數呢!
順便說一下,那兩個屬性的前面有一個private 那是權限修飾符。意思是私有的也就是別人不能用。Java語言用這種權限修飾符實現封裝。不想C語言的結構體,都是公有的屬性,那樣是不安全的。就像是人有五臟六腑,那些東西就是私有的。怎么能讓誰都碰呢?這就是面向對象的一個重要的概念叫做封裝。面向對象一共有三個重要特征(封裝,繼續,多態)我們以后會學到的。
所以,剛才MyDate那個類里面,有3個屬性 int類型的day,month,year。4個方法setDay(int day),getDay() , addDays(int more_days), print()。還有兩個構造函數。
看下面的例子如何調用這個類的方法的:
public class TestMyDate {
public static void main(String[] args) {
MyDate my_birth = new MyDate(22, 7, 1964); //通過第一個構造函數new了一個叫my_birth的對象,并在參數里面賦值
MyDate the_next_week = my_birth.addDays(7); //這個對象調用了addDays(int more_days)的方法,賦值給the_next_week的變量
the_next_week.print(); //調用print()方法
}
}
調用一個類的方法,實際上是進行對象之間或用戶與對象之間的消息傳遞。
實踐:
1、編譯上述兩個類 ,直接編譯TestMyDate.java就行。還記得怎么做嗎?進入DOS界面,到你存放這兩個文件的目錄下,敲javac TestMyDate.java
2、然后敲 java TestMyDate 就OK了。
觀察結果
總結:
今天我們理解了對象類型的數據類型,也知道了對象和對象之間的調用方式。
基本類型和引用類型變量應用
java語言中的兩種數據類型:基本類型變量和引用類型變量。
Java中數據類型分為兩大類,上次課已經講完了,是基本類型和對象類型。相應的,變量也就有兩種類型:基本類型和引用類型。基本類型自然不用說了,它的值就是一個數字,一個字符或一個布爾值。引用類型,可是引用類型呢?它是一個對象類型的啊,值是什么呢?它的值是指向內存空間的引用,就是地址,所指向的內存中保存著變量所表示的一個值或一組值。很好理解吧,因為一個對象,比如說一個人,不可能是個數字也不可能是個字符啊,所以要想找它的話只能找它的地址了。
我們在學習計算機的過程中,所謂的難的東西,就是以前沒有聽過的概念,和不常用的思想。像是這個引用類型的概念就是以前不常用的,基本類型當然好理解不講大家也知道。所以我們對于這樣生疏的概念我們只要多琢磨一下就會明白的。
我們廢話少說,接下來看看這兩種類型變量的不同處理吧。基本類型自然是簡單,聲明是自然系統就給它空間了。例如,
int baijq;
baijq=250; //聲明變量baijq的同時,系統給baijq分配了空間。
引用類型就不是了,只給變量分配了引用空間,數據空間沒有分配,因為誰都不知道數據是什么啊,整數,字符?我們看一個錯誤的例子:
MyDate today;
today.day = 4; //發生錯誤,因為today對象的數據空間未分配。
那我們怎么給它賦值啊?引用類型變量在聲明后必須通過實例化開辟數據空間,才能對變量所指向的對象進行訪問。舉個例子:
MyDate today;???????????//將變量分配一個保存引用的空間
today = new MyDate();? //這句話是2步,首先執行newMyDate(),給today變量開辟數據空間,然后再執行賦值操作。
小總結:
剛才說了一大堆,其實就是一件事。假如是引用類型的變量,必須先得new一個對象出來。不new哪來的對象啊,不new哪有數據空間啊?沒有數據空間怎么能訪問呢?這回明白了吧!
我們還有個問題沒有說,引用類型變量怎么賦值?這個就不是很難了。
舉個例子:
MyDate a,b;?????????//在內存開辟兩個引用空間
a? =? new MyDate();//開辟MyDate對象的數據空間,并把該空間的首地址賦給a
b? =? a;
實踐問題:
1.??????想象一下,如果我們要使用一個汽車,你如何去操作汽車?可以寫出具體的步驟。
2.??????你能把現實世界中的常用的事物注入到面向對象的程序里嗎?
小結:
在本章中,我們主要學習了:
u??????Eclipse的用法
u??????Java的 基本數據類型、標識符、關鍵字
u??????Java面向對象的應用
練習項目:
你的朋友是個司機,沒有學過編程及Java語言;但聽說你是Java工程師,對你的職業很感興趣;他說:“你能不能程序模擬我每天開的汽車,比如:我的車長2.5米,車牌是‘大眾’,車胎是‘普利司通’等等。”你能替他用面向對象的思想實現這種設想嗎?
參考范例效果如下:
Java 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。