---
# System prepended metadata

title: Untitled

---

## 20200921

### 安裝

簡單確認安裝成功與否 
open cmd 
輸入`java`  `javac`

### what is class 

a template of object  物件樣板

動態屬性
靜態屬性

透過實體化 -->轉變為物件

人 -- > 
動態屬性:吃飯、變老、走動 =>method (function)
靜態屬性:年齡髮色 => property (變數)

程式語言 演化
OOP-->物件導向

#### 現代程式語言兩種元素

1.語法
2.類別使用、組合

### 開發需要的類別

1. 自訂 來自客戶端需求

2. 來自官方 jdk lib

3. 第三方套件 來自開源
   - https://commons.apache.org/
   
- https://poi.apache.org/


### java lib的三個版本   

1. se-standard eidition : stand alone app
    `App-java base`
2. ee-enterprose edition : sever side application
    `App-app server -java base`
3. me-micro edition : cdc(手機 已沒落)/cldc(硬體 也沒落)

### 物件導向目的

 關注點分離

開放性問題: 你要怎麼把500行的程式換成物件導向

1. 分門別類
2. [內聚力(Cohesion and) 與耦合力(Coupling)](https://blog.cwke.org/2010/11/cohesion-and-coupling.html) 目標：高內聚 低耦合

class path 類別路徑

### 名詞解釋

#### jdk 

Java development  kit

開發工具()+jre+jvm+javac 命令 (用以編譯jar檔)

#### jvm

跨平台的核心機器 編譯byte code (.class)

#### jre 

java 命令 (用以執行、啟動 jvm)

java runtime evironment 最基本的java執行環境 (官方程式庫+jvm)

#### jvms 

JDK Version Manager (JVMS) for Windows

https://github.com/ystyle/jvms

cd下載資料夾 執行 `.\jvms.exe init`

how to install and switch jdk. see:

- run cmd or powershell as administrator
- `jvms rls` *list available jdk version for download*
- `jvms install 1.8.0_31` *install jdk 1.8.0_31*
- `jvms ls` *list installed jdk*
- `jvms switch 1.8.0_31` *switch jdk version to 1.8.0_31*

## 20200928

### Java Identifier 命名

#### 命名對象

class method variable label(這啥????)

#### 命名規則

1. 首字: _ $ 字母

2. 次字:+數字

3. 不能是

   1. Reserved Word :保留值 (true/false/null)

   2. key Word:語法(if else for)

#### 通則

class/method/variable:駝峰式

Constant 全大寫+底線

#### 方法組成 method

必要:名稱、回傳(void、data Type)

非必要:作用域(修飾字) 參數 異常宣告

完整method : `修飾字 回傳ˊ˙值 名稱 (參數) 異常宣告 {}`

例外method :entry point : Main Method 

1. public static
2. 命名必須式main
3. 必須是void
4. 參數必須是string[]


#### 類別組成
#### 參數組成
#### 套件組成 Package
通則
組織類型.組織名稱.系統.功能.子功能
Com.tsbank.loan.credit.----



