亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal

 更新時(shí)間:2022年03月01日 11:56:49   作者:程序媛?泡泡  
這篇文章主要給大家介紹了關(guān)于JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1 正則表達(dá)式Regex

1.1 概述

正確的字符串格式規(guī)則。

常用來判斷用戶輸入的內(nèi)容是否符合格式的要求,注意是嚴(yán)格區(qū)分大小寫的。

1.2 常見語法

1.3 String提供了支持正則表達(dá)式的方法

Matches(正則) : 當(dāng)前字符串能否匹配正則表達(dá)式

replaceAll(正則,子串) : 替換子串

split(正則) : 拆分字符串

1.4 練習(xí):測(cè)試輸入身份證號(hào)

創(chuàng)建包: cn.tedu.api

創(chuàng)建類: TestRegex.java

package cn.tedu.api;

import java.util.Scanner;
/*本類用于正則表達(dá)式入門案例*/
//需求:接收用戶輸入的身份證號(hào),并將判斷的結(jié)果輸出
public class TestRegex {
    public static void main(String[] args) {
        //1.編輯正則表達(dá)式
        //身份證號(hào)的規(guī)律:一共是18位,前17位是數(shù)子,第18位有可能是數(shù)字,也有可能是X
        //String regex = "[0-9]{17}[0-9X]";
        /*單個(gè)\在Java中有特殊的含義,表示轉(zhuǎn)義符號(hào),不認(rèn)為是一個(gè)斜杠
         * 所以如果想要表示斜杠,需要在它的前面加一個(gè)用來轉(zhuǎn)義的\
         * 也就是\\才表示成一個(gè)單純的斜杠
         * \t -- 制表符  \r回車符 \n換行符*/
        String regex = "\\d{17}[0-9X]";

        //2.定義變量用來接收用戶輸入的身份證號(hào):
        String input;

        //3.判斷用戶輸入的數(shù)據(jù)是否符合正則表達(dá)式,如果不正確,繼續(xù)輸入
        do {
            System.out.println("請(qǐng)輸入您的身份證號(hào):");
            input = new Scanner(System.in).nextLine();
            if (input.matches(regex)) {//如果身份證號(hào)正確
                System.out.println("恭喜你!輸入正確!");
                return;//結(jié)束本方法
            }
        } while (!input.matches(regex));//只要不符合正則表達(dá)式,就繼續(xù)輸入
    }
}

2 包裝類

把基本類型進(jìn)行包裝,提供更加完善的功能。

基本類型是沒有任何功能的,只是一個(gè)變量,記錄值,而包裝類可以有更加豐富的功能

2.1 與基本類型的對(duì)應(yīng)關(guān)系

2.2 Number

數(shù)字包裝類的抽象父類。

提供了各種獲取值的方式。

2.3 Integer 創(chuàng)建對(duì)象

方式一: new Integer(5);

方式二: Integer.valueOf(5);

Integer類中包含256個(gè)Integer緩存對(duì)象,范圍是 -128~127

使用valueOf()時(shí),如果指定范圍內(nèi)的值,直接訪問緩存對(duì)象不新建;如果指定范圍外的值,直接新建對(duì)象。

常見方法

static int parseInt(String s) 將字符串參數(shù)作為有符號(hào)的十進(jìn)制整數(shù)進(jìn)行解析

2.4 練習(xí): Number之Integer

創(chuàng)建包: cn.tedu. api

創(chuàng)建類: TestNumber.java

package cn.tedu.api;
/*本類用于測(cè)試包裝類*/
public class TestNumber {
    //1.定義成員變量,注意要設(shè)置成靜態(tài)的,因?yàn)殪o態(tài)只能調(diào)用靜態(tài)
    static Integer i0;
    public static void main(String[] args) {
        //2.打印Integer的默認(rèn)值進(jìn)行測(cè)試
        System.out.println(i0);//默認(rèn)值為null

        //3.創(chuàng)建int類型對(duì)應(yīng)的包裝類Integer類型的對(duì)象--方式一
        Integer i1 = new Integer(5);
        Integer i11 = new Integer(5);
        System.out.println( i1 == i11 );//false,==對(duì)于引用類型,比較的是地址值

        //4.創(chuàng)建int類型對(duì)應(yīng)的包裝類Integer類型的對(duì)象--方式二
        /*Integer有一個(gè)高效的效果,數(shù)據(jù)在:(-128~127)
        * 在此范圍內(nèi),相同的數(shù)據(jù)只會(huì)存一次,后續(xù)再存都是使用之前存過的數(shù)據(jù)*/
        Integer i2 = Integer.valueOf(127);
        Integer i3 = Integer.valueOf(127);
        System.out.println(i1 == i2);//false
        System.out.println(i2 == i3);//true
        //滿足高效效果的3個(gè)條件:Integer valueOf() -128~127
        Integer i4 = Integer.valueOf(300);
        Integer i5 = Integer.valueOf(300);
        System.out.println(i4 == i5);//false

    }
}


2.5 Double

創(chuàng)建對(duì)象

  • new Double(3.14)
  • Double.valueOf(3.14)//和 new 沒有區(qū)別 常用方法

Double.parseDouble();

2.5 練習(xí): Number之Double

創(chuàng)建包: cn.tedu.api

創(chuàng)建類: TestNumber.java

package cn.tedu.api;
/*本類用于測(cè)試基本類型的包裝類*/
public class TestNumber {
    public static void main(String[] args) {
        //1.創(chuàng)建int包裝類Integer對(duì)象的方式1
        Integer i1 = new Integer(100);
        Integer i11 = new Integer(100);
        System.out.println(i1 == i11);//false,new了兩次,是兩個(gè)不同的對(duì)象,地址值不同

        //2.創(chuàng)建int包裝類Integer對(duì)象的方式2
        /*Integer有一個(gè)高效的效果,但是必須滿足3個(gè)條件:
        * 1.是Integer類型
        * 2.使用valueOf()的創(chuàng)建方式
        * 3.數(shù)據(jù)在-128~127的范圍內(nèi)
        * 滿足以上條件,相同的數(shù)據(jù)只會(huì)存一次,后續(xù)再使用都是以前存過的數(shù)據(jù)*/
        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 超出高效的數(shù)據(jù)范圍-128~127

        //3.創(chuàng)建double包裝類Double對(duì)象的方式1
        Double d1 = new Double(3.14);
        Double d11 = new Double(3.14);
        System.out.println(d1 == d11);//false,創(chuàng)建兩個(gè)不同的對(duì)象,地址值不同

        //4.創(chuàng)建double包裝類Double對(duì)象的方式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.測(cè)試常用方法
        //這個(gè)方法的作用就是把傳入的String類型的數(shù)據(jù)轉(zhuǎn)成int
        /*對(duì)象是什么類型的,就可以使用這個(gè)類的所有資源
        i1是Integer類型的對(duì)象,所以可以使用parseInt()將String類型的數(shù)據(jù)轉(zhuǎn)為int類型
        d1是Double類型的對(duì)象,所以可以使用parseDouble()將String類型的數(shù)據(jù)轉(zhuǎn)為double類型*/
        System.out.println(i1.parseInt("800")+8);//808->int+int
        System.out.println(d1.parseDouble("2.2")+3.1);//5.300000000000001->double+double
    }
}

3 自動(dòng)裝箱和自動(dòng)拆箱

3.1 概述

自動(dòng)裝箱:把 基本類型 包裝成對(duì)應(yīng)的 包裝類型 的過程

Integer a = 5;//a是引用類型,引用了包裝對(duì)象的地址。

編譯器會(huì)完成對(duì)象的自動(dòng)裝箱:Integer a = Integer.valueOf(5);

自動(dòng)拆箱:從包裝類型的值,自動(dòng)變成 基本類型的值

int i = a;//a現(xiàn)在是包裝類型,沒法給變量賦值,需要把5取出來。

編譯器會(huì)完成自動(dòng)拆箱:int i = a.intValue();

3.2 練習(xí): 自動(dòng)裝箱與自動(dòng)拆箱測(cè)試

創(chuàng)建包: cn.tedu.api

創(chuàng)建類: TestBox.java

package cn.tedu.api;
/*本類用于測(cè)試自動(dòng)裝箱和自動(dòng)拆箱*/
public class TestBox {
    public static void main(String[] args) {
        //1.定義包裝類型的數(shù)據(jù)
        //回顧:以前創(chuàng)建包裝類型的兩種方式
        Integer i1 = new Integer(127);
        Integer i2 = Integer.valueOf(127);
        //2.現(xiàn)在的方式:
        /*1.自動(dòng)裝箱:編譯器會(huì)自動(dòng)把基本類型int 5,包裝成包裝類型Integer
        * 然后交給i3來保存,自動(dòng)裝箱底層發(fā)生的代碼Integer.valueOf(5);
        * valueOf()的方向: int --> Integer*/
        Integer i3 = 5;//不會(huì)報(bào)錯(cuò),這個(gè)現(xiàn)象就是自動(dòng)裝箱
        /*2.自動(dòng)拆箱:編譯器會(huì)自動(dòng)把包裝類型的i1拆掉"箱子",變回基本類型數(shù)據(jù)127
        * 然后交給i4來保存,自動(dòng)拆箱底層發(fā)生的代碼:i1.intValue();
        * intValue()的方向:Integer -> int
        * */
        int i4 = i1;//不會(huì)報(bào)錯(cuò),這個(gè)現(xiàn)象就是自動(dòng)拆箱
    }
}

4 BigDecimal

BigDecimal:常用來解決精確的浮點(diǎn)數(shù)運(yùn)算不精確的問題

4.1 創(chuàng)建對(duì)象

方式一 :

BigDecimal(double val)

將double轉(zhuǎn)換為BigDecimal,后者是double的二進(jìn)制浮點(diǎn)值十進(jìn)制表示形式,有坑!

方式二 :

BigDecimal(String val)

將String類型字符串的形式轉(zhuǎn)換為BigDecimal

4.2 常用方法

Add(BigDecimal bd) : 做加法運(yùn)算
Subtract(BigDecimal bd) : 做減法運(yùn)算
Multiply(BigDecimal bd) : 做乘法運(yùn)算
Divide(BigDecimal bd) : 做除法運(yùn)算,除不盡時(shí)會(huì)拋異常
Divide(BigDecimal bd,保留位數(shù),舍入方式) : 除不盡時(shí)使用
setScale(保留位數(shù),舍入方式) : 同上
pow(int n) : 求數(shù)據(jù)的幾次冪

4.3 練習(xí):測(cè)試常用方法

創(chuàng)建包: cn.tedu.bigdecimal

創(chuàng)建類: TestBigDecimal.java

需求: 接收用戶輸入的兩個(gè)小數(shù),做運(yùn)算

package cn.tedu.api;

import java.math.BigDecimal;
import java.util.Scanner;

public class TestBigDecimal {
    public static void main(String[] args) {
        //f1();//使用普通的 +-*/ 四則運(yùn)算,暴露出浮點(diǎn)數(shù)運(yùn)算不精確的問題
        f2();//使用BigDecimal來解決浮點(diǎn)數(shù)運(yùn)算不精確的問題
    }

    private static void f2() {
        //1.提示并接收用戶輸入的兩個(gè)小數(shù)
        System.out.println("請(qǐng)輸入您要計(jì)算的兩個(gè)小數(shù):");
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();
        //2.創(chuàng)建工具類對(duì)象,把基本類型a和b交給工具類對(duì)象BigDecimal來保存
        /*1.最好不要用double作為構(gòu)造函數(shù)的參數(shù),不然還會(huì)有不精確的現(xiàn)象,有坑!!!*/
        /*2.最好使用重載的,參數(shù)類型是String的構(gòu)造函數(shù)
        * double轉(zhuǎn)String,直接拼個(gè)空串就可以*/
        BigDecimal bd1 = new BigDecimal(a+"");
        BigDecimal bd2 = new BigDecimal(b+"");

        //3.通過BigDecimal的對(duì)象來調(diào)用其方法,實(shí)現(xiàn)精確運(yùn)算
        //3.1 定義BigDecimal類型的引用類型變量來保存結(jié)果
        BigDecimal bd3;
        //3.2 Add(BigDecimal bd) : 做加法運(yùn)算
        bd3 = bd1.add(bd2);
        System.out.println(bd3);
        //3.3 Subtract(BigDecimal bd) : 做減法運(yùn)算
        bd3 = bd1.subtract(bd2);
        System.out.println(bd3);
        //3.4 Multiply(BigDecimal bd) : 做乘法運(yùn)算
        bd3 = bd1.multiply(bd2);
        System.out.println(bd3);
        //3.5 Divide(BigDecimal bd) : 做除法運(yùn)算,除不盡時(shí)會(huì)拋異常
        /*3.除法運(yùn)算,除不盡時(shí)會(huì)拋出異常ArithmeticException*/
        //方案一:(除不盡時(shí)有問題)
        //bd3 = bd1.divide(bd2);
        /*divide(m,n,o)
        m是要除以哪個(gè)對(duì)象,n指要保留幾位,o指舍入方式(比如四舍五入)*/
        //方案二:
        bd3 = bd1.divide(bd2,3,BigDecimal.ROUND_HALF_UP);
        System.out.println(bd3);

    }

    private static void f1() {
        //1.提示并接收用戶輸入的兩個(gè)小數(shù)
        System.out.println("請(qǐng)輸入您要計(jì)算的兩個(gè)小數(shù):");
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();

        //2.做運(yùn)算
        System.out.println(a + b);//不精確
        System.out.println(a - b);//不精確
        System.out.println(a * b);//不精確
        System.out.println(a / b);//不精確
    }
}

到這里,API第一課就結(jié)束啦,恭喜你又闖過一關(guān)哦~

5 拓展

舍入方式解析

ROUND_HALF_UP 四舍五入,五入 如:4.4結(jié)果是4; 4.5結(jié)果是5

ROUND_HALF_DOWN 五舍六入,五不入 如:4.5結(jié)果是4; 4.6結(jié)果是5

ROUND_HALF_EVEN 公平舍入(銀行常用)

比如:在5和6之間,靠近5就舍棄成5,靠近6就進(jìn)位成6,如果是5.5,就找偶數(shù),變成6

ROUND_UP 直接進(jìn)位,不算0.1還是0.9,都進(jìn)位

ROUND_DOWN 直接舍棄,不算0.1還是0.9,都舍棄

ROUND_CEILING(天花板) 向上取整,取實(shí)際值的大值

朝正無窮方向round 如果為正數(shù),行為和round_up一樣,如果為負(fù)數(shù),行為和round_down一樣

ROUND_FLOOR(地板) 向下取整,取實(shí)際值的小值

朝負(fù)無窮方向round 如果為正數(shù),行為和round_down一樣,如果為負(fù)數(shù),行為和round_up一樣

總結(jié)

到此這篇關(guān)于JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal的文章就介紹到這了,更多相關(guān)JAVA正則表達(dá)式、包裝類、自動(dòng)裝箱/拆箱及BigDecimal內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)視頻初步壓縮和解壓的代碼示例

    Java實(shí)現(xiàn)視頻初步壓縮和解壓的代碼示例

    從攝像頭讀取每一幀的圖片,用一些簡(jiǎn)單的方法將多張圖片信息壓縮到一份文件中(自定義的視頻文件),自定義解碼器讀取視頻文件,并將每幀圖片展示成視頻,本文主要介紹了Java實(shí)現(xiàn)視頻初步壓縮和解壓,需要的朋友可以參考下
    2023-10-10
  • 基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition)

    基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition)

    這篇文章主要介紹了基于SpringBoot核心原理(自動(dòng)配置、事件驅(qū)動(dòng)、Condition),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 修改xml文件再也不用重啟項(xiàng)目mybatis-xmlreload方法

    修改xml文件再也不用重啟項(xiàng)目mybatis-xmlreload方法

    這篇文章主要為大家介紹了修改xml文件再也不用重啟項(xiàng)目mybatis-xmlreload,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java中HashMap里面key為null存放到哪

    Java中HashMap里面key為null存放到哪

    這篇文章主要介紹了Java中HashMap里面key為null存放到哪,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • springmvc分層領(lǐng)域模型概念詳解

    springmvc分層領(lǐng)域模型概念詳解

    本文核心為分層領(lǐng)域模型(VO , PO , BO, DAO ,POJO等)概念的個(gè)人理解,結(jié)合springmvc淺談分層領(lǐng)域模型的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • Springboot項(xiàng)目實(shí)現(xiàn)將類從@ComponentScan中排除

    Springboot項(xiàng)目實(shí)現(xiàn)將類從@ComponentScan中排除

    這篇文章主要介紹了Springboot項(xiàng)目實(shí)現(xiàn)將類從@ComponentScan中排除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 一文帶你入門JDK8新特性——Lambda表達(dá)式

    一文帶你入門JDK8新特性——Lambda表達(dá)式

    這篇文章主要介紹了JDK8新特性——Lambda表達(dá)式的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JAVA開發(fā),感興趣的朋友可以了解下
    2020-08-08
  • 基于Hutool的圖片驗(yàn)證碼功能模塊實(shí)現(xiàn)

    基于Hutool的圖片驗(yàn)證碼功能模塊實(shí)現(xiàn)

    為了提高系統(tǒng)的安全性,防止接口被暴力刷新,驗(yàn)證碼是個(gè)好的手段,圖片驗(yàn)證碼沒有短信驗(yàn)證碼的費(fèi)用,其是個(gè)人開發(fā)者學(xué)習(xí)的重點(diǎn),這篇文章主要介紹了基于Hutool的圖片驗(yàn)證碼功能模塊實(shí)現(xiàn),需要的朋友可以參考下
    2022-10-10
  • java8實(shí)現(xiàn)List中對(duì)象屬性的去重方法

    java8實(shí)現(xiàn)List中對(duì)象屬性的去重方法

    這篇文章主要介紹了java8實(shí)現(xiàn)List中對(duì)象屬性的去重方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中List轉(zhuǎn)Map List實(shí)現(xiàn)的幾種姿勢(shì)

    Java中List轉(zhuǎn)Map List實(shí)現(xiàn)的幾種姿勢(shì)

    本文主要介紹了Java中List轉(zhuǎn)Map List實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論