寫在前面:今天繼續分享JAVA後續的內容,可能最近對於JAVA的更新會更頻繁一點,深度學習那邊感覺數據加載還是有點問題,開始苦惱。在本文的最後附上了最近學習JAVA的參考文獻電子版百度網盤下載地址。
學習內容安排
JAVA基礎課程學習:數據類型(一)、運算符表達式和程序結構控制(二)、面向對象基礎:類與對象和接口(三)、面向對象基礎:繼承抽象多態封裝(四)、異常類和常用實用類(五)、組件和事件處理(六)、IO和JDBC(七)、泛型和集合函數(八)。
五、異常類和常用實用類
1.異常類
今天的重點是講解一下異常類和常用的一些實用類,所謂異常類就是設置一個程序報錯的反饋項,因爲如果沒有這樣一個反饋報錯項的話,程序就會中斷,如果是一個大型項目程序中斷的代價是非常高的,所以需要設置一個異常類進行報錯,下面我們來通過實例來理解一下異常類,異常類就是用try-catch來構造異常捕捉機制。
我們希望輸入一個整數,並輸出,如果輸入的不是一個整數那麼就返回異常捕捉中的語句,
1.1單異常捕捉機制
//單個的異常捕捉機制
package mycp7;
import java.util.Scanner;
public class Csdn5_1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("[請輸入一個整數]> ");
int x = 0; //需要在try的外面定義x,try之外的x纔可識別
try{
x = in.nextInt();
System.out.println("您輸入的整數爲=> "+x);
}catch (Exception e){
System.out.println("您輸入的不是一個整數!");
}
}
}
[請輸入一個整數]> 20
您輸入的整數爲=> 20
[請輸入一個整數]> a
您輸入的不是一個整數!
那麼當我們不再是一個語句的時候作爲新手應該怎麼來設置報錯項,來讓我們知道到底是哪個語句出錯了呢?這裏我們使用的一個叫做判斷語句的方法,判斷語句位於要執行的兩個語句中間,如果第一個出錯,那麼判斷語句不輸出;如果第二個出錯那麼判斷語句先輸出,例子如下,
1.2判斷語句
package mycp7;
import java.util.Scanner;
public class Csdn5_1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("[請輸入一個整數]> ");
int x = 0, y = 0;
try{
x = in.nextInt();
System.out.println("您輸入的整數x爲=> "+x);
System.out.println("此語句出現說明x的輸入無問題");//判斷語句
System.out.print("[請輸入另一個整數]> ");
y = in.nextInt();
System.out.println("您輸入的整數y爲=> "+y);
}catch (Exception e){
System.out.println("您輸入的不是一個整數!");
}
}
}
下面我們展示三種情況來說明這樣一個判斷語句,
第一種情況:我們對x輸入a,那麼立即結束程序運行輸出“您輸入的不是一個整數”
[請輸入一個整數]> a
您輸入的不是一個整數!
第二種情況:我們對x輸入2,程序繼續運行輸出x的展示以及判斷語句,然後對y輸入a,立即結束程序運行,輸出報錯語句,
[請輸入一個整數]> 2
您輸入的整數x爲=> 2
此語句出現說明x的輸入無問題
[請輸入另一個整數]> a
您輸入的不是一個整數!
第三種情況:我們對x輸入2,程序繼續運行輸出x的展示以及判斷語句,然後對y輸入3,正常運行完整程序。因此我們就可以看出當判斷語句出現時說明上一個語句無問題。
[請輸入一個整數]> 2
您輸入的整數x爲=> 2
此語句出現說明x的輸入無問題
[請輸入另一個整數]> 3
您輸入的整數y爲=> 3
在catch後面的Exceotion e表示包括又有的錯誤類別,到後面可以針對不同的錯誤設置不同的catch進行報錯。
1.3調用時的異常捕捉機制
當我們需要調用上面輸入的函數時,我們可以創建對象來完成調用,但此時遇到一個問題就是,我們調用了後,如果錯誤輸入非整數型數據,那麼就會執行“您輸入的不是一個整數!”語句,那如果別人需要設置自己的報錯語句應該怎麼來設置呢?怎麼來實現更加個性化的報錯語句呢?
首先我們需要將之前測試的主方法改爲方法,然後再方法名後面寫上throws Exception來使得調用用戶自定義報錯語句,
package mycp7;
import java.util.Scanner;
public class Csdn5_1 {
void input() throws Exception{
Scanner in = new Scanner(System.in);
System.out.print("[請輸入一個整數]> ");
int x = 0, y = 0;
x = in.nextInt();
System.out.println("您輸入的整數x爲=> " + x);
System.out.println("此語句出現說明x的輸入無問題");//判斷語句
System.out.print("[請輸入另一個整數]> ");
y = in.nextInt();
System.out.println("您輸入的整數y爲=> " + y);
}
}
然後創建另一個java類,我們來進行方法的調用,
package mycp7;
public class Csdn5_2 {
public static void main(String[] args) {
Csdn5_1 k = new Csdn5_1();
try{
System.out.println("我們需要輸入x, y兩個值");
k.input();
}catch (Exception e){
System.out.println("警告:錯誤!");
}
}
}
我們需要輸入x, y兩個值
[請輸入一個整數]> a
警告:錯誤!
2.常用實用類String
下面我們將介紹幾個在JAVA中比較常用的類,並附帶例子進行分享,在今天的分享中我們主要分享String類的一些實用方法。
String類在java.lang的包中,這個包被默認加載了,所以不需要單獨的調用,需要注意的是String類的聲明爲final類,也就是用戶不能對String類進行重寫,對於String類的用法我們繼續分享,
2.1常量對象
也就是直接利用String聲明變量,例如,雖然a、b的值是一樣的但是會給這兩個常量賦予不同的儲存位置,
package mycp7;
public class Csdn5_3 {
String a = "123", b = "123";
}
2.2String對象
還可以通過String類來聲明對象並創建對象,這裏有幾種常用的用法,
1)這裏對兩個對象分別聲明瞭同樣的內容,但值得注意的是如果對s和t兩個對象利用s==t會返回false,因爲比較的是兩個對象的索引,儲存在不同的位置,所以對於非java8個基礎類型的數據,我們均不使用雙等號,具體方法會在後文講到,
2)可以對char數組進行String的自動連接,生成字符串;
3)可以指定String連接char中的某一段,String(a,2,4)表示從第3位開始取4個值進行拼接,具體例子如下,
package mycp7;
public class Csdn5_3 {
//String聲明對象
String s = new String("We are students");
String t = new String("We are students");
//String對char的拼接
public static void main(String[] args) {
char x[] = {'我','是','明','曦','君','!'};
String xx1 = new String(x);
System.out.println(xx1);
//相當於String xx1 = new String("我是明曦君!");
String xx2 = new String(x,2,3);
System.out.println(xx2);
}
}
我是明曦君!
明曦君
2.3String類常用的方法
下面來介紹一些對於String的常用方法,
1)public int length():獲取字符串長度。
我們在JAVA系列的第一篇的時候對數組長度的計算用到了length,但沒有括號,因爲有括號的是方法。這裏值得注意的是JAVA中漢字佔一個長度,
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String m = new String("abc明曦君");
System.out.println(m.length());
}
}
6
2)public boolean equals(String s):判斷當前String對象的字符序列是否與參數s指定的String對象的字符序列相同;
所以我們再次強調,對於JAVA的非基礎類型數據,我們不要使用雙等號去判斷數據是否相等。
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String s = new String("We are students");
String t = new String("We are students");
if(s == t){
System.out.println("s和t的值相等");
}else{
System.out.println("雙等號:s和t的值不等");
if(s.equals(t)){
System.out.println("s和t的值相等");
}
}
雙等號:s和t的值不等
s和t的值相等
3)public boolean startsWith(String s):判斷當前String對象是否以制定字符開頭;
這個方法可以用於大規模識別一些數據的格式是否正確,比如識別省份證是否以5開頭,這類的。
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String z = new String("我是明曦君");
if(z.startsWith("我")){
System.out.println("字符串是以“我”開始的");
}
}
字符串是以“我”開始的
4)public boolean contains(String s):判斷當前序列是否包含s序列;
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String z = new String("我是明曦君");
if(z.contains("明曦")){
System.out.println("包含“明曦”");
}
}
}
包含“明曦”
5)public int indexOf(String str):返回首次出現str序列的位置,如無值則返回-1,當然還可以設置參數,表示從第幾個字符開始搜索;
這裏就可以返回索引,返回指定字符出現的位置
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String v = new String("131452020202222");
System.out.println(v.indexOf('2'));
System.out.println(v.indexOf('2',6));
}
}
5
7
6)public String trim():刪掉String對象前後的空格字符序列。
在經常輸入密碼的時候,我們可能會不經意間輸入了括號,爲此我們在做密碼分析的時候一般是去掉左右的括號,這個在SQL中的密碼分析還挺常用的。
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String w = new String(" 2020-3-8 ");
System.out.println(w+" w長度爲: "+ w.length());
System.out.println(w.trim()+" w長度爲: "+ w.trim().length());
}
}
2020-3-8 w長度爲: 13
2020-3-8 w長度爲: 8
7)public String substring(int statrt point):就是提取字符串中的一段。
8)字符串與基本數據的相互轉化
例:String轉換爲int需要使用public satatic int parseInt(String s)
當我們看到有satatic時,就知道這個類方法,可以直接輸入類.方法進行調用,這個方法的類時Integer。這裏我們同時使用substring一區部分字段,
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
int x;
String s = "876";
x = Integer.parseInt(s.substring(1, 3));
System.out.println(x);
}
}
876
同樣的我們還可以把字符串轉爲byte、short、long、float、double類型,他們對應的類分別是Byte\Short\Long\Float\Double類,對應的調用方法就是parseByte這種,這裏就不做展示了。但需要注意的是調用其他類需要注意取值範圍,這個在第一講數據基本類型裏就說過了,可以翻閱查看。
9)將基本類型或者其他類型轉化爲字符串
例:我們需要將byte、short、int、long、float、double這幾個類型的轉爲字符串型,需要使用public static String valueOf(byte n),這個方法。
10)public String toString() 就是將得到的對象轉換爲String,下面我們來展示一下把現在的時間進行提取轉化爲字符串,
package mycp7;
public class Csdn5_3 {
public static void main(String[] args) {
String a = String.valueOf(11153);
System.out.println(a.substring(1,4));
Date d = new Date();
System.out.println(d);
String date = d.toString();
System.out.println(date.substring(11, 19));
}
}
115
Mon Mar 09 09:46:08 CST 2020
09:46:08
結語
好了,今天關於異常類已經String類的常用方法已經分享完了,後續可能會出多個續篇來對更多的常用類進行說明。
謝謝閱讀。
參考
JAVA2實用教程第5版
鏈接:https://pan.baidu.com/s/1MBWZigAGH6NYDqw3nfeWJw
提取碼:bhpl