1.Java 方法
Java方法是語句的集合,它們在一起執行一個功能。
方法是解決一類問題的步驟的有序組合
方法包含于類或對象中
方法在程序中被創建,在其他地方被引用
以我們經常使用到的 System.out.println() 為例
println() 是一個方法。
System 是系統類。
out 是標準輸出對象。
方法的優點
1. 使程序變得更簡短而清晰。
2. 有利于程序維護。
3. 可以提高程序開發的效率。
4. 提高了代碼的重用性。
方法的命名規則
1. 必須以字母、'_'或'$'開頭。
2. 可以包括數字,但不能以它開頭。
方法的定義
一般情況下,定義一個方法包含以下語法:
修飾符 返回值類型 方法名(參數類型 參數名){
...
方法體
...
return 返回值;
}
修飾符:修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
返回值類型 :方法可能會返回值。returnValueType 是方法返回值的數據類型。
有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void。
方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
參數類型:參數像是一個占位符。當方法被調用時,傳遞值給參數。
這個值被稱為實參或變量。參數列表是指方法的參數類型、順序和參數的個數。
參數是可選的,方法可以不包含任何參數。
方法體:方法體包含具體的語句,定義該方法的功能。
注意: 在一些其它語言中方法指過程和函數。一個返回非void類型返回值的方法稱為函數;一個返回void類型返回值的方法叫做過程。
/** 返回兩個整型變量數據的較大值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
方法調用
Java 支持兩種調用方法的方式,根據方法是否返回值來選擇。
//有返回值
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);
}
/** 返回兩個整數變量較大的值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
構造方法
當一個對象被創建時候,構造方法用來初始化該對象。構造方法和它所在類的名字相同,但構造方法沒有返回值。
通常會使用構造方法給一個類的實例變量賦初值,或者執行其它必要的步驟來創建一個完整的對象。
不管你與否自定義構造方法,所有的類都有構造方法,因為Java自動提供了一個默認構造方法,它把所有成員初始化為0。
沒有自定義構造方法時,系統會調用默認構造方法。
一旦你定義了自己的構造方法,默認構造方法就會失效。
// 一個簡單的構造函數
class MyClass {
int x;
// 以下是構造函數
MyClass() {
x = 10;
}
}
2.Java 時間日期獲取、比較、格式化
java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。
import java.util.Date;
第一個構造函數使用當前日期和時間來初始化對象。
Date( )
第二個構造函數接收一個參數,該參數是從1970年1月1日起的毫秒數。
Date(long millisec)
獲取當前日期時間
Java中獲取當前日期和時間很簡單
使用 Date 對象的 toString() 方法來打印當前日期和時間,如下所示:
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 對象
Date date = new Date();
// 使用 toString() 函數顯示日期時間
System.out.println(date.toString());
}
}
以上實例編譯運行結果如下:
Fri Jul 07 15:39:42 CST 2017
日期比較
Java使用以下三種方法來比較兩個日期:
1.使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然后比較這兩個值。
2.使用方法 before(),after() 和 equals()。
例如,一個月的12號比18號早,
則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3.使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實現了這個接口。
格式化日期 SimpleDateFormat
SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。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 小時制。
以上實例編譯運行結果如下:
Current Date: Sun 2014.07.18 at 14:14:09 PM PDT
使用printf格式化日期
printf 方法可以很輕松地格式化時間和日期。使用兩個字母格式,它以 %t 開頭并且以下面表格中的一個字母結尾。
更多 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);
}
}
以上實例編譯運行結果如下:
全部日期和時間信息:星期一 九月 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類強大很多,而且在實現方式上也比Date類要復雜一些。
Calendar類是一個抽象類,在實際使用時實現特定的子類的對象,創建對象的過程對程序員來說是透明的,只需要使用getInstance方法創建即可。
//創建一個代表系統當前日期的Calendar對象
Calendar c = Calendar.getInstance();//默認是當前日期
//創建一個代表2020年6月12日的Calendar對象
Calendar c1 = Calendar.getInstance();
c1.set(2020, 6 - 1, 12);
Set設置
Calendar c1 = Calendar.getInstance();
調用public final void set(int year,int month,int date)
c1.set(2010, 6 - 1, 12);//把Calendar對象c1的年月日分別設這為:2010、6、12
調用public void set(int field,int value)
c1.set(Calendar.DATE,10);
Add設置
Calendar c1 = Calendar.getInstance();
把c1對象的日期加上10,也就是c1也就表示為10天后的日期,其它所有的數值會被重新計算
c1.add(Calendar.DATE, 10);
把c1對象的日期減去10,也就是c1也就表示為10天前的日期,其它所有的數值會被重新計算
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 類沒有公共構造方法。
要創建一個 Pattern 對象,你必須首先調用其公共靜態編譯方法,它返回一個 Pattern 對象。
該方法接受一個正則表達式作為它的第一個參數。
Matcher 類:
Matcher 對象是對輸入字符串進行解釋和匹配操作的引擎。
與Pattern 類一樣,Matcher 也沒有公共構造方法。
你需要調用 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);
}
}
實例輸出結果為:
字符串中是否包含了 'runoob' 子字符串? true
4.異常處理
捕獲異常
使用 try 和 catch 關鍵字可以捕獲異常。try/catch 代碼塊放在異常可能發生的地方。
try/catch代碼塊中的代碼稱為保護代碼,使用 try/catch 的語法如下:
try
{
// 程序代碼
}catch(ExceptionName e1)
{
//Catch 塊
}
下面的例子中聲明有兩個元素的一個數組,當代碼試圖訪問數組的第三個元素的時候就會拋出一個異常。
// 文件名 : 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");
}
}
以上代碼編譯運行輸出結果如下:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block
多重捕獲塊
一個 try 代碼塊后面跟隨多個 catch 代碼塊的情況就叫多重捕獲。
多重捕獲塊的語法如下所示:
try{
// 程序代碼
}catch(異常類型1 異常的變量名1){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}
throws/throw 關鍵字
如果一個方法沒有捕獲一個檢查性異常,那么該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。
也可以使用 throw 關鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的。
下面方法的聲明拋出一個 RemoteException 異常:
import java.io.*;
public class className
{
public void deposit(double amount) throws RemoteException
{
// Method implementation
throw new RemoteException();
}
//Remainder of class definition
}
finally關鍵字
finally 關鍵字用來創建在 try 代碼塊后面執行的代碼塊。
無論是否發生異常,finally 代碼塊中的代碼總會被執行。
在 finally 代碼塊中,可以運行清理類型等收尾善后性質的語句。
finally 代碼塊出現在 catch 代碼塊最后,語法如下:
try{
// 程序代碼
}catch(異常類型1 異常的變量名1){
// 程序代碼
}catch(異常類型2 異常的變量名2){
// 程序代碼
}finally{
// 程序代碼
}
通用異常
在Java中定義了兩種類型的異常和錯誤。
JVM(Java虛擬機) 異常:由 JVM 拋出的異常或錯誤。
例如:
NullPointerException 類,
ArrayIndexOutOfBoundsException 類,
ClassCastException 類。
程序級異常:由程序或者API程序拋出的異常。
例如
IllegalArgumentException 類,
IllegalStateException 類。
最后附上全棧開發工程師困境, 我們都在不斷趕路,望不到出路,在失望中尋找偶爾的滿足 。
弱弱的對自己說一句"加油,堅持下來一切皆有可能" :
我是楚簡約,感謝您的閱讀,
喜歡就點個贊唄,“?喜歡”,
鼓勵又不花錢,你在看,我就繼續寫~
非簡書用戶,可以點右上角的三個“...”,然后"在Safari中打開”,就可以點贊咯~