"=="是比較兩參考變數所儲存之值,
若該參考變數為基本資料型態, 會比較其存放之值是否相同, 相同則傳回true, 反之則傳回false.
若該參考變數為物件型態, 會比較該變數是否指向同一物件, 相同則傳回true, 反之則傳回false.
"equals()"為Java類別Object原有之函式, 繼承Object時可依據比較之內容及規則覆寫該方法,
若沒有覆寫equals(), 其比較條件如同"==".
JavaAPI有註明當覆寫equals()時, 必須覆寫hashCode(),
因當兩個物件相等時, 其hash code也必定會相等.
(若沒修改, JVM會隨機產生一組hash code)
2008/10/17
[Java] Override 覆寫
當子類別繼承父類別時, 可以透過Override方式改寫父類別的方法,
當使用override修改父類別的方法, 有下列幾點限制:
以下情況皆為重新定義非覆寫:
當使用override修改父類別的方法, 有下列幾點限制:
- 方法名稱不能修改.(改了就是新增方法而不是覆寫了!)
- 若父類別的方法有丟出例外時, 子類別也必須丟出此例外或該例外之子類別.
- 子類別方法所傳回值之型態須與父類別方法一樣. (若更改傳回值之型態, 這樣就是overload了吧!)
- 子類別方法之修飾詞權限不得小於父類別. (繼承的用意就是希望孩子變強, 那有變弱的道理!)
- 若父類別之方法設定為final, 子類別不能修改該方法. (廢言, 都已經是final怎麼改寫)
- 若父類別之方法宣告為static, 子類別不可將其宣告為non-static, 反之亦然.
以下情況皆為重新定義非覆寫:
- 修改父類別之靜態方法
- 修改父類別之private方法
2008/10/14
[SQL] Primary Key 與 Foreign Key
關聯式資料庫(RDB)中, 建立資料表的關聯性是由key組成的.
key可分為Primary Key 與 Foreign Key兩種.
Primary Key:
標記為Primary Key的欄位其值是唯一不可重覆.
Foreign Key:
將兩資料表建立關聯性之欄位其設定Key值為Foreign Key.
key可分為Primary Key 與 Foreign Key兩種.
Primary Key:
標記為Primary Key的欄位其值是唯一不可重覆.
Foreign Key:
將兩資料表建立關聯性之欄位其設定Key值為Foreign Key.
2008/10/08
2008/09/04
[Java] 類別Class
類別的宣告 Declaring Classes
Ex1(基本宣告方式)
Ex1(基本宣告方式)
class MyClass {
// 變數(field)
// 建構子(constructor)
// 方法(method)
}
Ex2(繼承宣告方式)class MyClass extends MySuperClass implements MyInterface {
// 變數(field)
// 建構子(constructor)
// 方法(method)
}
2008/08/30
[Java] Primitive Wrapping Classes 與 Primitive Data Type
在宣告一個變數時,
可以用基本資料型態(Primitive Data Type)定義變數的資料型態,
也可以透過基本資料物件(Primitive Wrapping Classes)宣告變數的資料型態.
基本資料型態(Primitive Data Type)與基本資料物件(Primitive Wrapping Classes)
宣告i為整數時,
可以用下例兩種方式宣告,
第二種宣告方式是J2SE 5.0之後的版本才使用之方法,
透JVM的處理讓 10可以自動封裝(Autoboxing)為 Integer物件,
當然也可以將 10自動拆除(unboxing)為int基本資料型態.
可以用基本資料型態(Primitive Data Type)定義變數的資料型態,
也可以透過基本資料物件(Primitive Wrapping Classes)宣告變數的資料型態.
基本資料型態(Primitive Data Type)與基本資料物件(Primitive Wrapping Classes)
| Primitive Data Type | Primitive Wrapping Classes |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
宣告i為整數時,
可以用下例兩種方式宣告,
- int i;
- Integer i;
int i =10;而Integer則有兩種方式,
- Integer i = new Integer(10);
- Integer i = 10;
第二種宣告方式是J2SE 5.0之後的版本才使用之方法,
透JVM的處理讓 10可以自動封裝(Autoboxing)為 Integer物件,
當然也可以將 10自動拆除(unboxing)為int基本資料型態.
Integer i = 10; // autoboxing i.doubleValue(); //以物件方式使用 int j; j = i; // unboxing
2008/08/29
[Java] 物件(objcet) 類別(class) 實體(instance)
何為物件?
真世界件中任何一事物都是物件(object), 人是一個物件, 桌子是一個物件, 車子也是一個物件,
一個物件內會有那些東西, 狀態(state)及行為(behavior),
狀態是什麼? 以人為例, 名字, 性別, 膚色, 身高...等皆是人所擁有的狀態.
行為又是什麼? 一樣以人為例, 跑, 走, 吃東西, 喝水...等動作皆是一個人所擁有的行為.
人可以定義成一個類別(class)叫人類,
將上面的說明轉換成程式,
狀態便是程式中的變數(varialbe, 官方稱為field),
行為便是程式中的方法(method),
定義方式如下:
當一類別被實體化後, 便可使用該類別中所定義之變數及方法.
真世界件中任何一事物都是物件(object), 人是一個物件, 桌子是一個物件, 車子也是一個物件,
一個物件內會有那些東西, 狀態(state)及行為(behavior),
狀態是什麼? 以人為例, 名字, 性別, 膚色, 身高...等皆是人所擁有的狀態.
行為又是什麼? 一樣以人為例, 跑, 走, 吃東西, 喝水...等動作皆是一個人所擁有的行為.
人可以定義成一個類別(class)叫人類,
將上面的說明轉換成程式,
狀態便是程式中的變數(varialbe, 官方稱為field),
行為便是程式中的方法(method),
定義方式如下:
// 類別(class)叫人類(Human)
class Human {
//人類所擁有的屬性(property)
String name;
String sex;
int height;
// 人類所擁有的行為(method)
void setName(String name){}
float run(){
return float kilometer;
}
void eat(String food){}
}若要使用 Human類別, 必須先將 Human類別實體化,class HumanDemo {
Human Taiwanese = new Human();
}在 HumanDemo裡 Taiwanese是 Human類別的實體(instance),當一類別被實體化後, 便可使用該類別中所定義之變數及方法.
訂閱:
文章 (Atom)