---
# System prepended metadata

title: 認識類別，如何不用IDE進行編譯，Email的regex方式
tags: [Java]

---

---
tags: Java 
---

# 認識類別，如何不用IDE進行編譯，Email的regex方式

## 類別(class): 物件的藍圖, Java程式的基本單元
類別有可能是1.自行開發2.官方3.第三方(3rd-party), 2跟3都會有JavaDoc文件

第三方會有1.JAR(.jar): Java Archive File 2. Java Doc

類別分為寫:1.變數(靜態特性)2.方法(動態特性)3.建構子, 用: 了解功能並組合。

遞迴 : 自己呼叫自己的方法。

## 命名方式

命名規則: 首字必須是_(下底線)、$(任何幣別)、字母(任何字母)。

類別命名:首字必須大寫、要是名詞，第二個單字開頭要大寫。

變數命名:首字必須小寫、要是名詞，第二個單字開頭要大寫。

方法命名:首字必須小寫、要是動詞，第二個單字開頭要大寫。

## 使用文字編譯器寫程式碼
cmd 內可用set path 查詢現在的環境變數內的path路徑情況。 

不用編譯器也可以用命令提示字元去做編譯(javac 檔案名稱.java)跟啟動(java 檔案名稱)。

若讀不到.java檔可能有隱藏的附檔名, 檢視>選項>檢視>把隱藏已知檔案類型的副檔名勾勾拿掉。

## 類別的組成
JAVA由三個部分所組成: `<修飾字> class <*名稱> { }`

類別內可以放: 1.Variable 2. Method 3. Constructor

ReturnType: 執行結果，要回覆:資料型別(DataType)，不回覆:
 ```void <修飾字> <*ReturnType> <*方法名稱> (<參數>) { }```
 
如果直接new出來的物件只能使用一次,但節省記憶體空間, 
`如new B().test(); `

會重複使用到的會給一個命名
`如 B b = new B();  b.test();`

## Q: NetBeans引用其他套件
netbeans引入外部的包: tool -> Libraries -> New Library ->檔名可用包的名字, 點OK->在

classpath、sources、javadoc內加入檔名.jar、檔名-sources.jar、docs資料夾。

在程式內就可以引用`import  org.apache.commons.io.FileUtils;`

刪除資料夾檔案程式換使用Apache內的lib(org.apache.commons.io.FileUtils)，引用時要用

         try{
               FileUtils.forceDelete(file);
                }catch (IOException e) {
                e.printStackTrace();
            }   
         
            
## Q: 用命令提示字元先編譯.java在執行.class
* cmd->javac 檔名.java(副檔名) ->java 檔名
* 引入外部jar檔，cmd->javac -cp  外部的.jar 檔名.java ->java 檔名
* 若程式檔案存檔編碼格式為ANSI者, 輸入-encodingMS950, 若為UTF-8者, 輸入-encoding utf-8,可解決編碼問題進行編譯  cmd -> javac -encoding utf8 -classpath(縮寫可以用cp) 外部檔檔名.jar(絕對路徑) 檔名.java(絕對路徑) ->執行要先cd 回package的上一層, 再輸入java -cp 外部檔檔名.jar(絕對路徑); package名稱.檔名

## Q: 把編譯過的程式打包成jar檔, 跟執行jar檔的方法
1.先建立一個manifest.mf的檔案裏面的名稱都要後面空一格, 若接資料夾要用點去接, 如:
```
1.Main-Class: hellojava(跟package名稱要一致).Hello
2.Class-Path: commons-io-2.6.jar
3.要有空行
4.要有空行
```
建立一個hellojava資料夾把編譯出來的class檔都放入

`cmd-> jar cvfm 壓縮檔名.jar manifest.mf 資料夾名稱/檔名.class commons-io-2.6.jar(相對位置) `

==c: 創建一個新的jar檔, v: 會列出壓縮狀態(也可以不要) f: 指定jar包檔名, m: 指定manifest.mf檔案==

2.進行執行jar檔輸入指令java -jar 檔名.jar

若要用.bat檔可以直接執行, 建立各個檔案, 內容是cmd的執行指令, 副檔名用.bat就可完成。

## Q: Email信箱驗證，使用Matcher跟Pattern
要導入import java.util.regex.Matcher 跟 import java.util.regex.Pattern去做驗證
```
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(email);
boolean b = m.find();
也可直接寫Pattern.matches(regex, email)
```
regex的驗證如: 

`"^[a-z0-9]{1,20}(\\.)?[a-z0-9]+@[a-zA-Z0-9]{2,20}([\\-])?([\\w]+)[\\.][a-zA-Z]{2,5}(\\.[a-zA-Z]{2,5})?(\\.[a-zA-Z]{2,5})?$"`

`^`開頭 `\w{1, 63}` 為大小寫字母、數字、底線, 至少1-63字元, `+`表示至少要有一個字元以上, `*`表示至少0以上字元, `[\\.|\\-]`必須要有`.`或是`-`, `(\.[a-zA-Z]{2,63})?`為問號代表括弧內的字元可有可無, `$`為結束位置。

> [name=Luke] [time=Sun, Jan 12, 2020] [color=#907bf7]




