Java 方法凡简、時間日期獲取比較格式化逼友、正則表達式、異常處理

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 返回值;
}
Java方法.png
修飾符:修飾符,這是可選的霹疫,告訴編譯器如何調(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é)尾救崔。


日期轉(zhuǎn)換符.png

更多 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);
Calendar類對象字段類型.png

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

更多關(guān)于 Java正則表達式應(yīng)用

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ā)工程師困境, 我們都在不斷趕路,望不到出路,在失望中尋找偶爾的滿足 。
弱弱的對自己說一句"加油,堅持下來一切皆有可能" :


全棧開發(fā)工程師困境.png

我是楚簡約斟或,感謝您的閱讀素征,

喜歡就點個贊唄,“?喜歡”萝挤,

鼓勵又不花錢御毅,你在看,我就繼續(xù)寫~

非簡書用戶怜珍,可以點右上角的三個“...”端蛆,然后"在Safari中打開”,就可以點贊咯~


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酥泛,一起剝皮案震驚了整個濱河市今豆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柔袁,老刑警劉巖呆躲,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捶索,居然都是意外死亡歼秽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門情组,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燥筷,“玉大人箩祥,你說我怎么就攤上這事∷撩ィ” “怎么了袍祖?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谢揪。 經(jīng)常有香客問我蕉陋,道長,這世上最難降的妖魔是什么拨扶? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任凳鬓,我火速辦了婚禮,結(jié)果婚禮上患民,老公的妹妹穿的比我還像新娘缩举。我一直安慰自己,他們只是感情好匹颤,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布仅孩。 她就那樣靜靜地躺著,像睡著了一般印蓖。 火紅的嫁衣襯著肌膚如雪辽慕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天赦肃,我揣著相機與錄音溅蛉,去河邊找鬼。 笑死他宛,一個胖子當(dāng)著我的面吹牛温艇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堕汞,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼勺爱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了讯检?” 一聲冷哼從身側(cè)響起琐鲁,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎人灼,沒想到半個月后围段,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡投放,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年菠红,在試婚紗的時候發(fā)現(xiàn)自己被綠了吃引。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馆蠕。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拜姿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冯遂,我是刑警寧澤蕊肥,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站蛤肌,受9級特大地震影響壁却,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裸准,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一展东、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炒俱,春花似錦盐肃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惊完。三九已至僵芹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間小槐,已是汗流浹背拇派。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凿跳,地道東北人件豌。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像控嗜,于是被迫代替她去往敵國和親茧彤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法疆栏,類相關(guān)的語法曾掂,內(nèi)部類的語法,繼承相關(guān)的語法壁顶,異常的語法珠洗,線程的語...
    子非魚_t_閱讀 31,599評論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,504評論 3 93
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評論 25 707
  • 庭前芍藥妖無格, 池上芙蕖凈少情若专。 惟有牡丹真國色许蓖, 花開時節(jié)動京城。 ——劉禹錫《賞牡丹》 今天,六朝古都洛陽膊爪,...
    張永剛閱讀 643評論 1 0
  • 爬到半山腰的時候自阱,努爾丁往地上一坐。罵罵咧咧了起來蚁飒,他說你們走吧动壤,我不干了。他那兩個外國朋友也就坐著陪他淮逻,我開著玩...
    一沭閱讀 142評論 0 0