<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
正確的字串格式規則。
常用來判斷使用者輸入的內容是否符合格式的要求,注意是嚴格區分大小寫的。
Matches(正則) : 當前字串能否匹配正規表示式
replaceAll(正則,子串) : 替換子串
split(正則) : 拆分字串
建立包: cn.tedu.api
建立類: TestRegex.java
package cn.tedu.api; import java.util.Scanner; /*本類用於正規表示式入門案例*/ //需求:接收使用者輸入的身份證號,並將判斷的結果輸出 public class TestRegex { public static void main(String[] args) { //1.編輯正規表示式 //身份證號的規律:一共是18位元,前17位是數子,第18位元有可能是數位,也有可能是X //String regex = "[0-9]{17}[0-9X]"; /*單個在Java中有特殊的含義,表示跳脫符號,不認為是一個斜槓 * 所以如果想要表示斜槓,需要在它的前面加一個用來跳脫的 * 也就是\才表示成一個單純的斜槓 * t -- 製表符 r回車符 n換行符*/ String regex = "\d{17}[0-9X]"; //2.定義變數用來接收使用者輸入的身份證號: String input; //3.判斷使用者輸入的資料是否符合正規表示式,如果不正確,繼續輸入 do { System.out.println("請輸入您的身份證號:"); input = new Scanner(System.in).nextLine(); if (input.matches(regex)) {//如果身份證號正確 System.out.println("恭喜你!輸入正確!"); return;//結束本方法 } } while (!input.matches(regex));//只要不符合正規表示式,就繼續輸入 } }
把基本型別進行包裝,提供更加完善的功能。
基本型別是沒有任何功能的,只是一個變數,記錄值,而包裝類可以有更加豐富的功能
數位包裝類的抽象父類別。
提供了各種獲取值的方式。
方式一: new Integer(5);
方式二: Integer.valueOf(5);
Integer類中包含256個Integer快取物件,範圍是 -128~127
使用valueOf()時,如果指定範圍內的值,直接存取快取物件不新建;如果指定範圍外的值,直接新建物件。
常見方法
static int parseInt(String s) 將字串引數作為有符號的十進位制整數進行解析
建立包: cn.tedu. api
建立類: TestNumber.java
package cn.tedu.api; /*本類用於測試包裝類*/ public class TestNumber { //1.定義成員變數,注意要設定成靜態的,因為靜態只能呼叫靜態 static Integer i0; public static void main(String[] args) { //2.列印Integer的預設值進行測試 System.out.println(i0);//預設值為null //3.建立int型別對應的包裝類Integer型別的物件--方式一 Integer i1 = new Integer(5); Integer i11 = new Integer(5); System.out.println( i1 == i11 );//false,==對於參照型別,比較的是地址值 //4.建立int型別對應的包裝類Integer型別的物件--方式二 /*Integer有一個高效的效果,資料在:(-128~127) * 在此範圍內,相同的資料只會存一次,後續再存都是使用之前存過的資料*/ Integer i2 = Integer.valueOf(127); Integer i3 = Integer.valueOf(127); System.out.println(i1 == i2);//false System.out.println(i2 == i3);//true //滿足高效效果的3個條件:Integer valueOf() -128~127 Integer i4 = Integer.valueOf(300); Integer i5 = Integer.valueOf(300); System.out.println(i4 == i5);//false } }
建立物件
Double.parseDouble();
建立包: cn.tedu.api
建立類: TestNumber.java
package cn.tedu.api; /*本類用於測試基本型別的包裝類*/ public class TestNumber { public static void main(String[] args) { //1.建立int包裝類Integer物件的方式1 Integer i1 = new Integer(100); Integer i11 = new Integer(100); System.out.println(i1 == i11);//false,new了兩次,是兩個不同的物件,地址值不同 //2.建立int包裝類Integer物件的方式2 /*Integer有一個高效的效果,但是必須滿足3個條件: * 1.是Integer型別 * 2.使用valueOf()的建立方式 * 3.資料在-128~127的範圍內 * 滿足以上條件,相同的資料只會存一次,後續再使用都是以前存過的資料*/ Integer i2 = Integer.valueOf(100); Integer i22 = Integer.valueOf(100); System.out.println(i2 == i22);//true Integer i3 = Integer.valueOf(300); Integer i33 = Integer.valueOf(300); System.out.println(i3 == i33);//false 超出高效的資料範圍-128~127 //3.建立double包裝類Double物件的方式1 Double d1 = new Double(3.14); Double d11 = new Double(3.14); System.out.println(d1 == d11);//false,建立兩個不同的物件,地址值不同 //4.建立double包裝類Double物件的方式2 /*只有Integer才有高效的效果Double是沒有的*/ Double d2 = Double.valueOf(3.14); Double d22 = Double.valueOf(3.14); System.out.println(d1 == d2);//false System.out.println(d2 == d22); //5.測試常用方法 //這個方法的作用就是把傳入的String型別的資料轉成int /*物件是什麼型別的,就可以使用這個類的所有資源 i1是Integer型別的物件,所以可以使用parseInt()將String型別的資料轉為int型別 d1是Double型別的物件,所以可以使用parseDouble()將String型別的資料轉為double型別*/ System.out.println(i1.parseInt("800")+8);//808->int+int System.out.println(d1.parseDouble("2.2")+3.1);//5.300000000000001->double+double } }
自動裝箱:把 基本型別 包裝成對應的 包裝型別 的過程
Integer a = 5;//a是參照型別,參照了包裝物件的地址。
編譯器會完成物件的自動裝箱:Integer a = Integer.valueOf(5);
自動拆箱:從包裝型別的值,自動變成 基本型別的值
int i = a;//a現在是包裝型別,沒法給變數賦值,需要把5取出來。
編譯器會完成自動拆箱:int i = a.intValue();
建立包: cn.tedu.api
建立類: TestBox.java
package cn.tedu.api; /*本類用於測試自動裝箱和自動拆箱*/ public class TestBox { public static void main(String[] args) { //1.定義包裝型別的資料 //回顧:以前建立包裝型別的兩種方式 Integer i1 = new Integer(127); Integer i2 = Integer.valueOf(127); //2.現在的方式: /*1.自動裝箱:編譯器會自動把基本型別int 5,包裝成包裝型別Integer * 然後交給i3來儲存,自動裝箱底層發生的程式碼Integer.valueOf(5); * valueOf()的方向: int --> Integer*/ Integer i3 = 5;//不會報錯,這個現象就是自動裝箱 /*2.自動拆箱:編譯器會自動把包裝型別的i1拆掉"箱子",變回基本型別資料127 * 然後交給i4來儲存,自動拆箱底層發生的程式碼:i1.intValue(); * intValue()的方向:Integer -> int * */ int i4 = i1;//不會報錯,這個現象就是自動拆箱 } }
BigDecimal:常用來解決精確的浮點數運算不精確的問題
方式一 :
BigDecimal(double val)
將double轉換為BigDecimal,後者是double的二進位制浮點值十進位制表示形式,有坑!
方式二 :
BigDecimal(String val)
將String型別字串的形式轉換為BigDecimal
Add(BigDecimal bd) : 做加法運算
Subtract(BigDecimal bd) : 做減法運算
Multiply(BigDecimal bd) : 做乘法運算
Divide(BigDecimal bd) : 做除法運算,除不盡時會拋異常
Divide(BigDecimal bd,保留位數,舍入方式) : 除不盡時使用
setScale(保留位數,舍入方式) : 同上
pow(int n) : 求資料的幾次冪
建立包: cn.tedu.bigdecimal
建立類: TestBigDecimal.java
需求: 接收使用者輸入的兩個小數,做運算
package cn.tedu.api; import java.math.BigDecimal; import java.util.Scanner; public class TestBigDecimal { public static void main(String[] args) { //f1();//使用普通的 +-*/ 四則運算,暴露出浮點數運算不精確的問題 f2();//使用BigDecimal來解決浮點數運算不精確的問題 } private static void f2() { //1.提示並接收使用者輸入的兩個小數 System.out.println("請輸入您要計算的兩個小數:"); double a = new Scanner(System.in).nextDouble(); double b = new Scanner(System.in).nextDouble(); //2.建立工具類物件,把基本型別a和b交給工具類物件BigDecimal來儲存 /*1.最好不要用double作為建構函式的引數,不然還會有不精確的現象,有坑!!!*/ /*2.最好使用過載的,引數型別是String的建構函式 * double轉String,直接拼個空串就可以*/ BigDecimal bd1 = new BigDecimal(a+""); BigDecimal bd2 = new BigDecimal(b+""); //3.通過BigDecimal的物件來呼叫其方法,實現精確運算 //3.1 定義BigDecimal型別的參照型別變數來儲存結果 BigDecimal bd3; //3.2 Add(BigDecimal bd) : 做加法運算 bd3 = bd1.add(bd2); System.out.println(bd3); //3.3 Subtract(BigDecimal bd) : 做減法運算 bd3 = bd1.subtract(bd2); System.out.println(bd3); //3.4 Multiply(BigDecimal bd) : 做乘法運算 bd3 = bd1.multiply(bd2); System.out.println(bd3); //3.5 Divide(BigDecimal bd) : 做除法運算,除不盡時會拋異常 /*3.除法運算,除不盡時會丟擲異常ArithmeticException*/ //方案一:(除不盡時有問題) //bd3 = bd1.divide(bd2); /*divide(m,n,o) m是要除以哪個物件,n指要保留幾位,o指舍入方式(比如四捨五入)*/ //方案二: bd3 = bd1.divide(bd2,3,BigDecimal.ROUND_HALF_UP); System.out.println(bd3); } private static void f1() { //1.提示並接收使用者輸入的兩個小數 System.out.println("請輸入您要計算的兩個小數:"); double a = new Scanner(System.in).nextDouble(); double b = new Scanner(System.in).nextDouble(); //2.做運算 System.out.println(a + b);//不精確 System.out.println(a - b);//不精確 System.out.println(a * b);//不精確 System.out.println(a / b);//不精確 } }
到這裡,API第一課就結束啦,恭喜你又闖過一關哦~
舍入方式解析
ROUND_HALF_UP 四捨五入,五入 如:4.4結果是4; 4.5結果是5
ROUND_HALF_DOWN 五舍六入,五不入 如:4.5結果是4; 4.6結果是5
ROUND_HALF_EVEN 公平舍入(銀行常用)
比如:在5和6之間,靠近5就捨棄成5,靠近6就進位成6,如果是5.5,就找偶數,變成6
ROUND_UP 直接進位,不算0.1還是0.9,都進位
ROUND_DOWN 直接捨棄,不算0.1還是0.9,都捨棄
ROUND_CEILING(天花板) 向上取整,取實際值的大值
朝正無窮方向round 如果為正數,行為和round_up一樣,如果為負數,行為和round_down一樣
ROUND_FLOOR(地板) 向下取整,取實際值的小值
朝負無窮方向round 如果為正數,行為和round_down一樣,如果為負數,行為和round_up一樣
到此這篇關於JAVA新手小白學正規表示式、包裝類、自動裝箱/自動拆箱以及BigDecimal的文章就介紹到這了,更多相關JAVA正規表示式、包裝類、自動裝箱/拆箱及BigDecimal內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45