一 基本知識1 數(shù)據(jù)類型類似于c/c++ 
對于long類型常量書寫時(shí),要在數(shù)字后面加上L或者l。0L 對于float類型常量書寫時(shí),要在小數(shù)點(diǎn)后面加上F或者f。0.0F 對于double類型常量書寫時(shí),要在小數(shù)點(diǎn)后面加上D或者d。 0.0D
數(shù)據(jù)類型之間的轉(zhuǎn)換 Java中也有隱式轉(zhuǎn)換(Java則叫做自動轉(zhuǎn)換)和顯式轉(zhuǎn)換(Java則叫做強(qiáng)制轉(zhuǎn)換)。自動轉(zhuǎn)換由編譯器實(shí)現(xiàn),強(qiáng)制轉(zhuǎn)換則由用戶編程實(shí)現(xiàn),再由編譯器執(zhí)行。
自動轉(zhuǎn)換的規(guī)則:低級數(shù)據(jù)類型 ==》 高級數(shù)據(jù)類型;所占字節(jié)數(shù)低的數(shù)據(jù)類型 ==》 所占字節(jié)數(shù)高的數(shù)據(jù)類型 例如:byte short int long(整數(shù)類型) ==》 float double(浮點(diǎn)數(shù)類型) byte short(8字節(jié)和16字節(jié)) ==》int(32字節(jié)) byte short int(8字節(jié),16字節(jié)和32字節(jié)) ==》 long(64字節(jié)) float(32字節(jié)) ==》 double(64字節(jié)) char(16字節(jié)) ==》 int(32字節(jié)) 注:整數(shù)類型中的long,雖然占64個(gè)字節(jié),但是卻能自動轉(zhuǎn)換成float類型(32字節(jié))。因此,我認(rèn)為,在自動轉(zhuǎn)換的過程中,先考慮數(shù)據(jù)類型的等級高低,再考慮數(shù)據(jù)類型的所占字節(jié)數(shù)。
再注:從簡單數(shù)據(jù)類型圖中不難看出,各數(shù)據(jù)類型的長度均為固定值,這使得Java能夠在不同的平臺上運(yùn)行相同的Java程序時(shí)不用修改代碼,提高了程序的可移植特性。
2 頭文件(1)類似于c++的命名空間或者是頭文件 在JAVA中叫做包(package)。Java的核心包中,我們常用的有這樣5種: (1)java.lang , 封裝了所有編寫java程序所需要的基本類,包括Object、Class、System等。其中,Object類是所有類的根類,任何類都是繼承該類而建立的;Class類是由編譯器動態(tài)生成對象的一個(gè)伴隨每一個(gè)類的特殊類;System類是一個(gè)final類,主要提供標(biāo)準(zhǔn)I/O和對系統(tǒng)環(huán)境信息的訪問等,這個(gè)類不能被實(shí)例化。 (2)java.awt , 窗口工具包,提供操作圖形用戶界面的基本功能。 (3)java.applet , 封裝Applet類的包,提供Applet執(zhí)行時(shí)需要的類。 (4)java.io , 封裝I/O操作的包。 (5)java.util , 提供使用程序類以及集合類等常用的工具類。
3 程序結(jié)構(gòu) 首先,是package語句,用來指定源文件所在的包。 然后,是public classDefinitiom,也就是公共類,用來指定源文件的類名,這個(gè)類名要與源文件名相同,可有0個(gè)或1個(gè)。 再然后,是classDefinition,也就是一般類,可以有若干個(gè),也可以沒有。 注:一個(gè)java源文件中,最多只能有一個(gè)public類,且必須與文件名相同。
我們的第一個(gè)程序:
import java.lang.*; import java.io.*;
class matrix //一般類 { void luoyang1() { } }
public class Matrixkey //public類,類名要與文件名相同 { public static void main(String args[]) { System.out.println("很高興認(rèn)識你,我是Matrixkey"); } }
4 Java的解釋執(zhí)行在系統(tǒng)運(yùn)行Java程序時(shí),Java編譯器將Java程序(*.java文件)轉(zhuǎn)化為字節(jié)碼(*.class文件),在運(yùn)行時(shí),解釋器將編譯得到的字節(jié)碼進(jìn)行解釋執(zhí)行。 Java語言一個(gè)源程序可以含有多個(gè)類(public類最多一個(gè)),每個(gè)類編譯都生成一個(gè)字節(jié)碼文件。也就是說,有幾個(gè)類,就有幾個(gè)字節(jié)碼文件。 這就是,我們在執(zhí)行一個(gè)Java程序時(shí)要先用javac *.java將Java程序轉(zhuǎn)化為字節(jié)碼的原因。 注:Java區(qū)分大小寫,因此上面的程序中,public類的類名:Matrixke,那么這個(gè)java程序的文件名必須為:Matrixkey.java
5 輸入輸出 輸出使用println方法。println方法的使用方法如下: System是java.lang.*包中的類,out是System類的一靜態(tài)屬性,而println()是out屬性的一個(gè)靜態(tài)方法。該方法用于打印后再換行,可以打印基本類型的數(shù)據(jù)以及字符串等,'+' 在字符串中代表將字符串相互連接。
int x = 4772; /* 輸出一個(gè)字符m */ System.out.println(m); * 輸出一個(gè)數(shù)字4772 */ System.out.println("變量x等于"+x); //或者直接System.out.println(x); /* 輸出一個(gè)字符串matrixkey */ System.out.println("matrixkey");
/* 輸出漢字落陽*/ System.out.println("落陽"); |
println方法打印后自動換行,因此,下面2條代碼輸出結(jié)果是一致的 int x = 100; System.out.println(x); System.out.print(x + "\n"); |
注意:"+"號用來連接字符串是有點(diǎn)麻煩的! 例如: System.out.println(1+2+"3"); Sysrem.out.println("1"+2+3); '+'號優(yōu)先級別,從左到右 所以打印結(jié)果是這樣的: 33(先做1+2 變成字符串"3" 連接后面的"3",所以打印33) 123(先把"1"和2連接成為"12",在連接3就變成"123")
6 運(yùn)算符和流程控制C/C++類似,注意switch不能做實(shí)數(shù)的判斷
二 類 1 概念類作為JAVA程序的基本要素,由成員變量(即屬性)和成員方法組成,必須先定義在使用。 類聲明格式:[修飾符] class 類名 [extends 父類名] [implements 類實(shí)現(xiàn)的接口列表] (1)修飾符用于確定類的訪問控制權(quán)限(public和friendly)以及類型(abstract和final) (2)類名是合法的標(biāo)識符,并且首字母大寫 (3)保留字extends指明聲明的類所繼承的父類 (4)[ ]里的內(nèi)容可選 /* JAVA中類的聲明和繼承*/ public class Matrixkey {成員變量 成員方法} class Matrix extends Matrixkey /* C#中類的聲明和繼承*/ public class Matrixkey {成員變量 成員方法} class Matrixk : Matrixkey |
類體格式:class 類名 {成員變量 成員方法} 其中成員變量定義的格式為:<修飾符> <類型> <變量名稱> 成員方法定義的格式為:<修飾符> <返回值類型> <方法名稱> ( [ <參數(shù)表> ] ) (1)成員變量和成員方法可以通過public private protected等修飾符控制訪問權(quán)限 (2)java中,方式是通過值傳遞參數(shù),而不是通過地址,因此方法不可以改變參數(shù)的值 例: public class Matrixkey //類聲明 { public int a; public double b; //成員變量的聲明 static void Min(double c) //成員方法的聲明 } |
類成員的修飾符有兩種 訪問限定符:public 可以被外部類訪問 protected 可以被同一個(gè)包中的類以及該類的子類訪問 private 只能在該類內(nèi)部被訪問 default 可以被同一個(gè)包中的類訪問 非訪問限定符:靜態(tài)修飾符 static 最終修飾符 final 抽象修飾符 abstract syncronized
2 類的繼承在java語言中,類繼承是通過extends保留字實(shí)現(xiàn)的,格式為: class Subclass extends Superclass {...} |
(1) 用extends指明新定義的子類(Subclass)的父類(Superclass),就在兩個(gè)類之間建立了繼承的關(guān)系 (2)子類可以從父類繼承所有非private的屬性和方法作為自己的成員 (3)若子類成員變量的名字 和 父類成員變量的名字 相同,則子類成員隱藏父類成員 (4)若子類成員方法 與 父類成員方法的名字,返回值類型,參數(shù)表都相同,則子類方式是父類方法的重寫 (5)方法重寫時(shí)注意:子類方法的訪問權(quán)限要高于父類 子類方法的訪問權(quán)限比父類方法的訪問權(quán)限要高,一般用Super關(guān)鍵字來訪問父類的方法和變量,但是父類的對象不能直接訪問子類的方法和變量
3 數(shù)組定義一維數(shù)組的格式:<類型> <數(shù)組名> [ ]; 或者 <類型> [ ] <數(shù)組名>; 因此,int A [ ]; int [ ] A ; 兩者是相同的 (1)<類型>可以是簡單或者復(fù)雜數(shù)據(jù)類型 (2)進(jìn)行數(shù)組定義時(shí),不分配內(nèi)存,因此不要求給出其元素的個(gè)數(shù) (3)數(shù)組分配內(nèi)存通過new操作符或靜態(tài)初始化實(shí)現(xiàn) 創(chuàng)建一維數(shù)組的格式:<數(shù)組名> = new <類型> [ <數(shù)組大小> ]; A = new int [3]; 定義的同時(shí)創(chuàng)建:<類型> [ ] 數(shù)組名 = new <類型> [ <數(shù)組大小> ]; int [ ] A = new int [3]; 初始化數(shù)組:對已定義的數(shù)組元素賦值,有動態(tài)和靜態(tài)兩種方式 (1)當(dāng)初始化元素?cái)?shù)目較少,采用靜態(tài)初始化 int A[ ]; A[0] = 1; A[1] = 2;A[2] = 3; (2)對簡單類型,定義數(shù)組的同時(shí),用new操作符進(jìn)行初始化 int [ ] A = new int [3]{1,2,3}; (3)當(dāng)初始化元素?cái)?shù)目較多,可以利用循環(huán)語句對數(shù)組元素動態(tài)初始化多維數(shù)組 定義的格式:<類型> <數(shù)組名> [ ] [ ]; 或者 <類型> [ ] [ ] <數(shù)組名>; 初始化:在定義的同時(shí)對數(shù)組元素進(jìn)行賦值(靜態(tài)) 可以按順序直接對每一維分配內(nèi)存或從最高維開始對每一維分配內(nèi)存(動態(tài))
數(shù)組操作 (1)方法arraycopy()用來進(jìn)行數(shù)組的拷貝 (2)ArrayList類用來動態(tài)調(diào)整數(shù)組的大小
4 字符串的表示(1)用String類表示字符串,String類的對象表示的是固定長度的字符串 (2)用StringBuffer類表示字符串,StringBuffer類的每個(gè)對象都是長度可變的字符串 字符串的操作 (1)對String的修改 String類提供了concat() replace() substring()方法分別實(shí)現(xiàn)字符串的連接,替換,取子串的操作;“+”運(yùn)算符也可以用來連接字符串。 (2)對StringBuffer的修改 StringBuffer類表示的是可變長度的字符串,使用它,就可以方便地在字符串中插入或在字符串尾追加字符。相應(yīng)的方法是:insert(),setCharAt(),append()。 (3)判斷兩個(gè)字符串是否相等,使用equals()方法三 異常處理 參考類似c/c++。 對于try和catch子句的排列方式,下列哪個(gè)是正確的? A。 子類異常在前,父類異常在后 B。 父類異常在前,子類異常在后 C。 只能有子類異常 D。 父類異常和子類異常不能同時(shí)出現(xiàn)在同一個(gè)try程序段內(nèi) 解析:在java語言中,在捕獲父類異常時(shí)對其子類異常也捕獲了,根據(jù)try與catch的匹配原則,盡量使用一個(gè)父類去捕獲其所有子類的異常,而父類和子類異常是可以同時(shí)出現(xiàn)的。 答案:A
|