---
# System prepended metadata

title: Java note02
tags: [' Software', Java, ' Development']

---

---
tags: Java, Development, Software, 
---
# Java note02

### 裝箱---以Integer為例
語法: 
```
Integer object = new Integer(整數常數或變數)
```

```
e.g.
int x =1234;	
Integer obj1=new Integer(x);
```
### 拆箱---以Integer為例
語法: 基本資料型態 
```
變數=IntegerObject.xxxValue
```
 
```
e.g.
int x = obj2.intValue();
Short y = obj2.shortValue();
```
一維陣列的複製-
語法:System.array.copy(來源陣列,索引值,目標陣列,索引值,個數)


### 類別與物件---
1.物件是類別的實體
2.類別的成員有
	①屬性field
	②方法method
	③建構式constructor
定義(宣告)屬性-
語法:
```
[ACCESS][qualifiors]資料型態 屬性名稱[初值]
```
定義類別---
語法:
```
[public] class 自訂名稱 [extends 基礎類別]
{
	成員
}
```
說明:
1.一個檔案只能有一個public class
2.public class的名稱是檔案的主檔名
3.public僅表示對外[開放]的等級
4.未表示基礎類別時,表示是 extends [java.lang.Object]

說明:
1. Access---表示存取權限,即對外開放的等級,區分為四種
    
1.public :完全對外開放
2.protected : i.相同套件(路徑)-完全開放 ii.不同套件-僅對子類別開放
3.預設 (無keyword):同protected的 i.
4.private: 表面意義是[不對外開放],但實際上是[間接對外開放],
			換言之是提供[預設等級]以上的存取方法
e.g.

		private String name ;
			:
		public String getName();

2. qualifiers---表示配置的位置與特性,提供兩個
	1.static:配置在static記憶區,共用屬性,
	2.final:表示常數(java 沒有用constant)
	註:1.2可以避用,而且無優先等級之分
```
例.
Q:下列何者不合理
	1.int w=123;
	2.static imt x = 123;
	3.final int y = 123;
	4.static final int z = 123;
	5.final static int z = 123;

A:5個compile都會過,but 3.不合理,
final是常數,所以放在static 共用,放在static省去記憶體空間 
```
3. 資料型態---只需是java的資料型態都可以使用
	int x =123;
	Integer y = 123;
	Integer y = new Integer(123);

4. 屬性名稱---數是同識別字

5. 指定初值---系統會自動初始化
	原則: ① 整數-0 ② 浮點數-0.0 ③ 字元-\u000 
    ④ 布林-false ⑤ 類別型態-null


### 方法(成員方法)---
```
[ACCESS][quilifiers] 回傳值型態 方法名稱([參數群])
{
	主體
}
```
說明:
1. access---同屬性
2. quilifiers---
	1.static-類別方法(共同的方法,直接以類別方法來叫用)
	2.final-不允許子類別Override

3. 回傳值型態- java資料型態都可以是回傳值型態,若不使用回傳值型態時,以[void]取代

4. 方法名稱-命名規範同識別字
     
5. 參數群-
  1.宣告方式:資料型態 參數名稱
  2.參數的位階是[區域變數]
  3.jdk5 開始支援參數個數不固定,宣告方式: 資料型態...參數群名稱
	e.g.  int...x 
    註:是以陣列存放參數
  
6. 在同個類別中可以定義若干個同名的方法,稱為Overload
	註:同名方法以參數來區分

### 方法的參數個不固定---
1. 參數中只能有一組不固定的參數群
註:不同之個數的參數群可以簡稱為群組參數
2. 群組參數必須記在最末
3. 群組參數的處理方式用一維陣列

### 建構式(Constructor)---
說明:
1.與類別同名的成員方法
     2.支援Overload
     3.四種存取權限都可以使用
註:1.存取的權限是指對外開放的等級
   2.同一個類別內的成員可以相互利用
   3.private建構式讓其他對外的建構叫用
     
4.建立物件實體時,必須叫用建構
     5.定義類別時,未撰寫建構,在編譯的過程中 會自動加入一個"無參數的零建構"此建構名為"default constructor"
     6.建構是無回傳值的成員方法,但撰寫時不用加上void
     7.建構叫用其他建構使用 this

### This---
說明:
1. 物件的代名詞(另一種參考的寫法)
2. 每個物件的實體都有
```     
int x,y;
public point (int a,int b){
	x=a;
	y=b;
}

int x,y;
public point (int x,int y){
	this.x=x;
	this.y=y;
}
```
### Matcher -字串比對器類別
說明:
①套件路徑在java.util.regex
②Matcher物件是由Pattern物件來建立

1. 建立pattern物件 (類別方法)
  ⑴ Pattern 物件 = Pattern.compile(正則)
  ⑵ Pattern 物件 = Pattern.compile(正則,Pattern.CASE.INSENSITIVE)

2. 建立Matcher物件 (物件方法)
Matcher 物件 =Pattern物件.matcher(字串)

### 繼承---Inheritance (bigtitle)
```
[public] class 自訂類別 extends 基礎類別
{
	①加入新成員
	②Override
}
```
說明:
①採用單一繼承
②是完整的繼承(public)
③自訂類別是延伸類別,通稱子類別
④基礎類別通稱父類別

### super---發生在繼承時
說明:
①物件的參考
②可以用來叫用父類別的成員
③以super([參數群])來叫用父類別的建構式

### this---建立物件時
說明:
①物件的參考
②可以用來叫用自身類別的成員
③以this([參數群])來叫用自身類別的建構

### Override---
說明:
①發生在繼承
②成立的要件
  a.存取權限,維持,提升
  b.回傳值型態:維持
  c.參數的個數,型態,次序要與原方法相同

protected int show(int x, double y)

protected
public

### Overload-
說明:
①發生在定義類別
②成立的要件
  a.參數型態不同
  b.參數的個數不同
  c.參數的型態次序不同
註:a,b,c三項中,有一項成立即可

抽象類別(abstract class)-
說明:
①不能直接建立物件,必須經由繼承
②成員
  方式1:與一般類別相同
  方式2:內含抽象方法
	註:抽象方法是只有定義,但是無本體,語法
[access] abstract 回傳值型態 方法名稱 ([參數群])
用途是要求繼承必須[Override]該方法


polymorphism 父 物件 = new 子()
class 父{
    ;
}
class 子 extends 父{
    ;
}
成立的條件
1.繼承關係
2.Override

###### tags: `Java` `Development` `Software`