1.Java 方法
Java方法是語句的集合秤涩,它們在一起執(zhí)行一個功能帜乞。
方法是解決一類問題的步驟的有序組合
方法包含于類或?qū)ο笾?方法在程序中被創(chuàng)建,在其他地方被引用
以我們經(jīng)常使用到的 System.out.println() 為例
println() 是一個方法筐眷。
System 是系統(tǒng)類黎烈。
out 是標(biāo)準(zhǔn)輸出對象。
方法的優(yōu)點
1. 使程序變得更簡短而清晰匀谣。
2. 有利于程序維護照棋。
3. 可以提高程序開發(fā)的效率。
4. 提高了代碼的重用性武翎。
方法的命名規(guī)則
1. 必須以字母烈炭、'_'或'$'開頭。
2. 可以包括數(shù)字宝恶,但不能以它開頭符隙。
方法的定義
一般情況下趴捅,定義一個方法包含以下語法:
修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名){
...
方法體
...
return 返回值;
}
修飾符:修飾符,這是可選的霹疫,告訴編譯器如何調(diào)用該方法拱绑。定義了該方法的訪問類型。
返回值類型 :方法可能會返回值丽蝎。returnValueType 是方法返回值的數(shù)據(jù)類型猎拨。
有些方法執(zhí)行所需的操作屠阻,但沒有返回值红省。在這種情況下,returnValueType 是關(guān)鍵字void国觉。
方法名:是方法的實際名稱类腮。方法名和參數(shù)表共同構(gòu)成方法簽名。
參數(shù)類型:參數(shù)像是一個占位符蛉加。當(dāng)方法被調(diào)用時蚜枢,傳遞值給參數(shù)。
這個值被稱為實參或變量针饥。參數(shù)列表是指方法的參數(shù)類型厂抽、順序和參數(shù)的個數(shù)。
參數(shù)是可選的丁眼,方法可以不包含任何參數(shù)筷凤。
方法體:方法體包含具體的語句,定義該方法的功能苞七。
注意: 在一些其它語言中方法指過程和函數(shù)藐守。一個返回非void類型返回值的方法稱為函數(shù);一個返回void類型返回值的方法叫做過程蹂风。
/** 返回兩個整型變量數(shù)據(jù)的較大值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
方法調(diào)用
Java 支持兩種調(diào)用方法的方式卢厂,根據(jù)方法是否返回值來選擇。
//有返回值
int larger = max(30, 40);
//無返回值
System.out.println("Java 從入門到放棄! --楚簡約");
public class TestMax {
/** 主方法 */
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println( i + " 和 " + j + " 比較惠啄,最大值是:" + k);
}
/** 返回兩個整數(shù)變量較大的值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
構(gòu)造方法
當(dāng)一個對象被創(chuàng)建時候慎恒,構(gòu)造方法用來初始化該對象。構(gòu)造方法和它所在類的名字相同撵渡,但構(gòu)造方法沒有返回值融柬。
通常會使用構(gòu)造方法給一個類的實例變量賦初值,或者執(zhí)行其它必要的步驟來創(chuàng)建一個完整的對象趋距。
不管你與否自定義構(gòu)造方法粒氧,所有的類都有構(gòu)造方法,因為Java自動提供了一個默認構(gòu)造方法节腐,它把所有成員初始化為0外盯。
沒有自定義構(gòu)造方法時廊敌,系統(tǒng)會調(diào)用默認構(gòu)造方法。
一旦你定義了自己的構(gòu)造方法门怪,默認構(gòu)造方法就會失效。
// 一個簡單的構(gòu)造函數(shù)
class MyClass {
int x;
// 以下是構(gòu)造函數(shù)
MyClass() {
x = 10;
}
}
2.Java 時間日期獲取锅纺、比較掷空、格式化
java.util 包提供了 Date 類來封裝當(dāng)前的日期和時間。 Date 類提供兩個構(gòu)造函數(shù)來實例化 Date 對象囤锉。
import java.util.Date;
第一個構(gòu)造函數(shù)使用當(dāng)前日期和時間來初始化對象坦弟。
Date( )
第二個構(gòu)造函數(shù)接收一個參數(shù),該參數(shù)是從1970年1月1日起的毫秒數(shù)官地。
Date(long millisec)
獲取當(dāng)前日期時間
Java中獲取當(dāng)前日期和時間很簡單
使用 Date 對象的 toString() 方法來打印當(dāng)前日期和時間酿傍,如下所示:
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 對象
Date date = new Date();
// 使用 toString() 函數(shù)顯示日期時間
System.out.println(date.toString());
}
}
以上實例編譯運行結(jié)果如下:
Fri Jul 07 15:39:42 CST 2017
日期比較
Java使用以下三種方法來比較兩個日期:
1.使用 getTime() 方法獲取兩個日期(自1970年1月1日經(jīng)歷的毫秒數(shù)值),然后比較這兩個值驱入。
2.使用方法 before()赤炒,after() 和 equals()。
例如亏较,一個月的12號比18號早,
則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true莺褒。
3.使用 compareTo() 方法,它是由 Comparable 接口定義的雪情,Date 類實現(xiàn)了這個接口遵岩。
格式化日期 SimpleDateFormat
SimpleDateFormat 是一個以語言環(huán)境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何用戶自定義日期時間格式來運行巡通。例如:
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}
yyyy 是完整的公元年尘执,MM 是月份,dd 是日期宴凉,HH:mm:ss 是時誊锭、分、秒弥锄。
注意:有的格式大寫炉旷,有的格式小寫,例如 MM 是月份叉讥,mm 是分窘行;HH 是 24 小時制,而 hh 是 12 小時制图仓。
以上實例編譯運行結(jié)果如下:
Current Date: Sun 2014.07.18 at 14:14:09 PM PDT
使用printf格式化日期
printf 方法可以很輕松地格式化時間和日期罐盔。使用兩個字母格式,它以 %t 開頭并且以下面表格中的一個字母結(jié)尾救崔。
更多 printf 解析可以參見:Java 格式化輸出 printf 例子
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 對象
Date date = new Date();
//c的使用
System.out.printf("全部日期和時間信息:%tc%n",date);
//f的使用
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用
System.out.printf("月/日/年格式:%tD%n",date);
//r的使用
System.out.printf("HH:MM:SS PM格式(12時制):%tr%n",date);
//t的使用
System.out.printf("HH:MM:SS格式(24時制):%tT%n",date);
//R的使用
System.out.printf("HH:MM格式(24時制):%tR",date);
}
}
以上實例編譯運行結(jié)果如下:
全部日期和時間信息:星期一 九月 10 10:43:36 CST 2012
年-月-日格式:2012-09-10
月/日/年格式:09/10/12
HH:MM:SS PM格式(12時制):10:43:36 上午
HH:MM:SS格式(24時制):10:43:36
HH:MM格式(24時制):10:43
休眠
Thread.sleep(1000*3); // 休眠3秒
Calendar類
Calendar類的功能要比Date類強大很多惶看,而且在實現(xiàn)方式上也比Date類要復(fù)雜一些捏顺。
Calendar類是一個抽象類,在實際使用時實現(xiàn)特定的子類的對象纬黎,創(chuàng)建對象的過程對程序員來說是透明的幅骄,只需要使用getInstance方法創(chuàng)建即可。
//創(chuàng)建一個代表系統(tǒng)當(dāng)前日期的Calendar對象
Calendar c = Calendar.getInstance();//默認是當(dāng)前日期
//創(chuàng)建一個代表2020年6月12日的Calendar對象
Calendar c1 = Calendar.getInstance();
c1.set(2020, 6 - 1, 12);
Set設(shè)置
Calendar c1 = Calendar.getInstance();
調(diào)用public final void set(int year,int month,int date)
c1.set(2010, 6 - 1, 12);//把Calendar對象c1的年月日分別設(shè)這為:2010本今、6拆座、12
調(diào)用public void set(int field,int value)
c1.set(Calendar.DATE,10);
Add設(shè)置
Calendar c1 = Calendar.getInstance();
把c1對象的日期加上10,也就是c1也就表示為10天后的日期冠息,其它所有的數(shù)值會被重新計算
c1.add(Calendar.DATE, 10);
把c1對象的日期減去10挪凑,也就是c1也就表示為10天前的日期,其它所有的數(shù)值會被重新計算
c1.add(Calendar.DATE, -10);
Calendar類對象信息的獲得
Calendar c1 = Calendar.getInstance();
// 獲得年份
int year = c1.get(Calendar.YEAR);
// 獲得月份
int month = c1.get(Calendar.MONTH) + 1;
// 獲得日期
int date = c1.get(Calendar.DATE);
// 獲得小時
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(注意(這個與Date類是不同的):1代表星期日逛艰、2代表星期1躏碳、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);
3.正則表達式
正則表達式定義了字符串的模式散怖。
正則表達式可以用來搜索菇绵、編輯或處理文本。
正則表達式并不僅限于某一種語言镇眷,但是在每種語言中有細微的差別脸甘。
java.util.regex 包主要包括以下三個類:
Pattern 類:
pattern 對象是一個正則表達式的編譯表示。Pattern 類沒有公共構(gòu)造方法偏灿。
要創(chuàng)建一個 Pattern 對象丹诀,你必須首先調(diào)用其公共靜態(tài)編譯方法,它返回一個 Pattern 對象翁垂。
該方法接受一個正則表達式作為它的第一個參數(shù)铆遭。
Matcher 類:
Matcher 對象是對輸入字符串進行解釋和匹配操作的引擎。
與Pattern 類一樣沿猜,Matcher 也沒有公共構(gòu)造方法枚荣。
你需要調(diào)用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。
PatternSyntaxException:
PatternSyntaxException 是一個非強制異常類啼肩,它表示一個正則表達式模式中的語法錯誤橄妆。
以下實例中使用了正則表達式 .runoob. 用于查找字符串中是否包了 runoob 子串:
import java.util.regex.*;
class RegexExample1{
public static void main(String args[]){
String content = "I am noob " +
"from runoob.com.";
String pattern = ".*runoob.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);
}
}
實例輸出結(jié)果為:
字符串中是否包含了 'runoob' 子字符串? true
4.異常處理
捕獲異常
使用 try 和 catch 關(guān)鍵字可以捕獲異常。try/catch 代碼塊放在異称碜梗可能發(fā)生的地方害碾。
try/catch代碼塊中的代碼稱為保護代碼,使用 try/catch 的語法如下:
try
{
// 程序代碼
}catch(ExceptionName e1)
{
//Catch 塊
}
下面的例子中聲明有兩個元素的一個數(shù)組赦拘,當(dāng)代碼試圖訪問數(shù)組的第三個元素的時候就會拋出一個異常慌随。
// 文件名 : ExcepTest.java
import java.io.*;
public class ExcepTest{
public static void main(String args[]){
try{
int a[] = new int[2];
System.out.println("Access element three :" + a[3]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :" + e);
}
System.out.println("Out of the block");
}
}
以上代碼編譯運行輸出結(jié)果如下:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block
多重捕獲塊
一個 try 代碼塊后面跟隨多個 catch 代碼塊的情況就叫多重捕獲。
多重捕獲塊的語法如下所示:
try{
// 程序代碼
}catch(異常類型1 異常的變量名1){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}
throws/throw 關(guān)鍵字
如果一個方法沒有捕獲一個檢查性異常,那么該方法必須使用 throws 關(guān)鍵字來聲明阁猜。throws 關(guān)鍵字放在方法簽名的尾部丸逸。
也可以使用 throw 關(guān)鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的剃袍。
下面方法的聲明拋出一個 RemoteException 異常:
import java.io.*;
public class className
{
public void deposit(double amount) throws RemoteException
{
// Method implementation
throw new RemoteException();
}
//Remainder of class definition
}
finally關(guān)鍵字
finally 關(guān)鍵字用來創(chuàng)建在 try 代碼塊后面執(zhí)行的代碼塊黄刚。
無論是否發(fā)生異常,finally 代碼塊中的代碼總會被執(zhí)行民效。
在 finally 代碼塊中憔维,可以運行清理類型等收尾善后性質(zhì)的語句。
finally 代碼塊出現(xiàn)在 catch 代碼塊最后研铆,語法如下:
try{
// 程序代碼
}catch(異常類型1 異常的變量名1){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}finally{
// 程序代碼
}
通用異常
在Java中定義了兩種類型的異常和錯誤。
JVM(Java虛擬機) 異常:由 JVM 拋出的異持莸或錯誤棵红。
例如:
NullPointerException 類,
ArrayIndexOutOfBoundsException 類咧栗,
ClassCastException 類逆甜。
程序級異常:由程序或者API程序拋出的異常。
例如
IllegalArgumentException 類致板,
IllegalStateException 類交煞。
最后附上全棧開發(fā)工程師困境, 我們都在不斷趕路,望不到出路,在失望中尋找偶爾的滿足 。
弱弱的對自己說一句"加油,堅持下來一切皆有可能" :
我是楚簡約斟或,感謝您的閱讀素征,
喜歡就點個贊唄,“?喜歡”萝挤,
鼓勵又不花錢御毅,你在看,我就繼續(xù)寫~
非簡書用戶怜珍,可以點右上角的三個“...”端蛆,然后"在Safari中打開”,就可以點贊咯~