?? 1_java學習筆記.txt
字號:
2004-8-12 星期四 陰有暴雨
1. 如何設置Java開發環境(Win2000)
答:Start-Control panel-System-Advance-Environment Variables
設置環境變量:
PATH = %PATH%;c:\j2sdk1.4.2_05\bin;
CLASSPATH = .;
注:javac編輯器總是在當前查找文件,而java解釋器只有在類路徑中包含“.” 目錄的情況下才會查找當前目錄。如果類路徑沒有設置,并不會產生什么問題--黙認類路徑中包含“.”目錄。但,如果設置了類路徑,卻沒有包含“.”話,就會產生問題--程序編譯時不會出錯,但卻無法運行。
2. 什么是Java?
答:1) 編程語言(先編譯再解釋);
2) 開發環境;
3) 運行環境;
4) 部署環境;
3. Java的特點
答:1) 簡單(Java語法是C++語法的一個“純凈”版本);
2) 可移植性
3) 面向對象
4) 分布式(Java把打開套接字連接等繁瑣的網絡任務變得非常容易)
5) 健壯性(Java編譯器會檢查出很多其他語言在運行時刻才顯示出來的錯誤;Java采用的指針模型可以消除重寫內存和數據崩潰的可能)
7) 多線程(多線程編程的簡單性是Java成為流行的服務器端開發語言的主要原因之一)
8) 安全(用Java可以構建防病毒和防篡改的系統)
9) 動態(Java可隨意增加新的方法以及實例變量,而客戶端卻不需做任何的更改)
10)體系結構中立(字節碼與計算機體系結構無關,只要存在運行時系統,可在多種處理器上執行)
4. Java中基本概念
答:1) 源文件
在最頂層只包括一個public類型的類/接口,文件名與類/接口名同并以.java作為文件后綴。
2) 包(package ,在源文件中this idertify只能放在第一行,且最多只能是一行)
一個將類和接口組織在一塊的實體,在文件系統中以目錄/文件夾型式呈現。
事實上今天所學知識遠比上面列出的要多,更多的知識點通過練習提前和我們見面了,像如何自行創建類、創建類的屬性和方法、控制打印輸出的格式(通過消息對話框輸出結果)、以及局部變量、實例變量、全局變量(類變量、靜態變量)間的區別。以上知識點在以后的學習中會逐漸接觸到,是故不詳細介紹。另外,今天的學習內容是自己以前花了幾倍的時間才摸索清楚的。有人手把手引著,真好!
教Java的老師有二位,一位傳授知識、一位輔導練習。授課的薛老師講課不溫不火、胸有成竹。看到他,仿佛看到Java的高度。輔導的薛老師有問必答、拉近了我們與Java的距離。
2004-8-13 星期五 陰
1. 注釋的三種形式
答: // 單行注釋
/* 一或多行注釋 */
/** 文檔注釋 */
2. Java代碼中的“;”、“{}”、“ ”
答:Java語句以分號分隔;
Java代碼塊包含在大括號內;
忽略空格。
3. 標識符
答:1) 用以命名類、方法和變量、以及包;
2) 以字符、“_”或“$”開頭;
3) 無長度限制。
4. 數據類型
答:1) 整型
byte 8位 -128到127
short 16位 -2^15到2^15-1
int 32位 -2^31到2^31-1
long 64位 -2^63到2^63-1
2) 浮點類型
float 32位
double 64位
3) 字符類型
char 16位
4) 布爾型
boolean false/true
注:1) char是無符號的16位整數,字面值必須用單引號括起來;
2) String 是類,非原始數據類型;
3) 長整型數字有一個后綴為“L”或“l”,八進制前綴為“0”,十六進制前綴為“0x”;
4) 黙認浮點類型為double;
5) float數據類型有一個后綴為“f”或“F”,Double數據類型后可跟后綴“D”或“d”;
5. identifiers Naming Rules
答:1) 類/接口名首字母大寫;
2) 方法、變量名第一個字母小寫,其余首字母大寫;
3) 常量名稱全部大寫;
4) 包名全部小寫。
6. 理解對象
答:在OOP中,程序由對象組成,這些對象具有某種屬性以及對象可執行的某些操作(方法)。OOP高效的關鍵在于它讓每個對象負責執行一組相關的任務。
2004-8-16 星期一 陰
表達式和控制流程
1. 變量和作用域
答:1) 局部變量
定義在方法內部,其作用域為該方法,也稱為臨時變量、棧變量。
2) 實例變量
定義在類內部,其作用域為整個類。如未定義初值,系統會自動為其賦黙認值。
類型 黙認值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
boolean false
All reference types null
2. 操作符
答:1) >> 前面是零補零,前面是一補一;
2) >>> 無符號右移;
3) && 短路與,前面為假,表達式為假,后面不須計算;
4) || 短路或,前面為真,表達式為真,后面不計算;
3. 數字類型之間的轉換
答:1) byte ——→ short ——→ int ——→ long
2) char ——→ int - - - → float
3) float ——→ double
4) long - - - → float+++++++++++++++
5) long - - - → double
6) int ——→ double
注:1)實箭頭表示無信息損失的轉換,虛箭頭表示轉換可能引起損失;
2)int和float同為32位,但float要有幾位表示冪的位數,在精度位數上要比int要小,所以有可能會有損失。long轉為double同理;
3)char和short同為16位,但char屬無符號數,其范圍為0~2^16, short的范圍為-2^15~2^15-1 , 所以char和short不能相互轉換;
4)byte、short、char屬child型,在計算時會自動轉為int型,然后轉為更大范圍類型(long、short、double)。
4. 強制類型轉換
答:1) 語法:圓括號中給出要轉換的目標類型,隨后是待轉換的變量名。例:doublc x=9.997;int nx = (int)x;
2) 如果試圖強制轉換的類型超出了目標類型的范圍,結果是一個被截取的不同的數值;
3) 不能在布爾值和任何數字類型間強制類型轉換,如確要轉換,可使用條件表達式,例:b?1:0。
5. 自動轉換的三種類型
答:1) 賦值 double d=1.23f;
2) 方法調用 Math.sqrt(2);
3) 數值計算轉換 -9.232e20+1;
6. 強制轉換(cast)的二種類型
答:1) 賦值
2) 方法調用
7. switch與case
答:1) switch變量可以是byte、short、char、int;
2) default值可以位于switch代碼頂部、中部或底部;
3) break不是必須的。例如:case 1:case 2:case 3:
2004-8-17 星期二 陰
數組
1. 聲明數組
答:1) 一組相同類型(可以是類)數據的集合;
2) 一個數組是一個對象;
3) 聲明一個數組沒有創建一個對象;
4) 數組能以下列形式聲明:
int[] i 或 int i[]
Car[] c 或 Car c[]
2. 創建數組
答:1) 創建原始數組 int[] i = new int[2];
2) 創建類類型數組 Car[] c = new Car[100];
3) 數組創建后有初始值。
3. 初始化數組
答:1) 初始化、創建、和聲明分開
int[] i;
i = new int[2];
i[0] = 0;
i[1] = 1;
2) 初始化、創建、和聲明在同一時間
int[] i = {0,1};
Car[] c = {new Car(),new Car()};
4. 多維數組
答:1) 有效
int[][] i1 = new int[2][3];
int[][] i2 = new int[2][];
i2[0] = new int[2],i2[1] = new int[3];
2) 無效
int[][] i1 = new int[][3];
3) 數組長度
int[] i = new int[5];
int len = i.length;//len = 5;
Student[][] st = new Student[4][6];
len = st.length;//len = 4;
len = st[0].length;//len = 6;
請問以下哪段代碼哪個可正確執行?(a,c)
1. a char[] i = {'a','b'}; i = new char[]{'b','c'};
b char[] i = {'a','b'}; i = {'b','c'};
c char[] i = new char[2]; i = new char[]{'b','c'};
d char[] i = new char[2]; i = {'b','c'};
2004-8-18 星期三 晴
今天講完數組,類的概念開了一個頭。封裝、繼承、多態,由這三個概念展開、舉例、舉貓、狗、哺乳動特的例子。舉給貓、狗增加一只眼睛只要改變一下父類例子。三只眼睛的狗?我們哈哈大笑,只是,今天的日記怎么寫?都是一些概念性的東西。
接口(interface)是為了解決多重繼承,繼承產生多態(類、方法)。封裝可以最大限度地代碼重用。類是一種抽象、包含有屬性以及改變屬性的方法。對象是類的實例,除了這些還有什么?數組是對象嗎?
不能確定,那查API、問同學、請教老師。還不行?那老師給你開小灶吧!教室后頭架著DV,用影像真實地記錄著我們的學習生活,誰也不許掉隊。
大多數知識在課堂上解決了,晚上的時間,看書、預習,能看多遠看多遠。自已看,霧里看花;而老師教,一片瞪明。一路通透下去,只是依然擔心:十八天能否將Core Java講完。
2004-8-19 星期四 晴
對象和類(上)
1. 封裝、多態、和繼承
答:1) 封裝
a. 把數據和行為結合在一個包中,并對對象的使用者隱藏數據的實現過程。對象中的數據稱為對象的實例字段(instance field), 操作數據的函數和過程稱為對象的方法(method)。一個特定對象就是類在實例字段上有著特定值的某個實例。
b. 實現封裝的關鍵在于絕不讓方法直接訪問其他類的實例字段。
2) 繼承
a. 在現有類的基礎上構建新的類。當繼承一個現有類時,就重用(繼承)了那個類的方法和字段,同時,還可以向新類中增添新的方法和字段。
b. 在通過擴展超類來定義子類時,只需要說明子類和超類的區別就行。所以在設計類時,把最通用的方法放在超類中,把更專門的方法放在子類中。
3) 多態(polymorphism)
一個對象變量可以指向多種實際類型的現象。
2. 類和對象
答:1) 類:數據類型/元數據的抽象;
2) 對象:類的實例(instance of)。
3. 方法定義
答:1) 格式 <modifiers><return_type><name>([argument_list>])[throws <exception>]{<block>}
例如:public String getName(){ return name; }
2) 當沒有返回值時,返回類型必須被定義為void;
3) 構造方法沒有返回類型。
4. 參數傳遞
答:Java語言總是使用傳值調用。這意味著方法得到的只是所有參數值的拷貝。因此,方法不能修改傳遞給它的任何參數變量的內容。
5. this
答:1) this是個隱式參數,代表被構造的對象;
2) 如果構造器的第一個語句具有形式this(...),那么這個構造器將調用同一類中的其他構造器。
6. 封裝的特點
答:1) 使具體實現不可視;
2) 對所有的用戶統一接口;
3) 增強可維護性。
7. 方法重載
答:1) 方法名相同;
2) 參數必須不同;
3) 返回類型可以不同;
2004-8-20 星期五 晴
對象和類(下)
8. 創建和初始化對象
答:1) 為一個對象分配內存空間,并初始化這個對象的值為:0/null/false。
2) 調用構造方法。
9. 構造器
答:1) 構造器和類具有相同的名字;
2) 一個類可以有多個構造器;
3) 構造器可以有0個、1個或者多個參數;
4) 構造器沒有返回值;
5) 構造器只能和new運算符一起被調用。
10. 構造器重載
答:1) 黙認構造器指沒有參數構造器,它把所有實例字段設為默認值;
2) 如果編寫的類沒有構造器,系統會自動提供黙認構造器,那么構造沒有構造參數的對象是非法的。
11. 子類
答:1) 是一種關系(現有類稱為超類(super class)、基類(base class)、或是父類(parent class); 而新類稱為子類(subclass child class)或者是派生類(derived class));
2) 一種聲明類型,public class Student extends Person{...};
3) 單繼承。
12. 繼承
答:1) 構造器不能被初始化;
2) 方法和字段可以被初始化;
3) 子類構造器自動調用父類的黙認構造器;
4) 當父類黙認構造器不存在時,子類構造器要顯式調用超類的其它構造器。
13. Super
答:1) 調用超類方法;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -