java大数据学习第十二天---Regex正则表达式 包装类 自动装箱和自动拆箱 BigDecimal File文件类

正则表达式Regex

  1. 概述:

    正确的字符串格式规则。常用来判断用户输入的内容是否符合格式的要求,注意是严格区分大小写的。

  2. 常用语法

    在这里插入图片描述

    1. String 提供了支持正则表达式的方法

      • matches(正则) : 当前字符串能否匹配正则表达式
      • replaceAll(正则,子串):替换子串
      • split(正则) : 拆分字符串
    2. 案例

      //需求:接受用户输入的身份证号,将判断的结果输出
      public class TestRegex{
          public static void main(String[] args){
               //1.编辑正则表达式
              //身份证号规律:一共18位 前17位数字,第18位有可能数字 有可能是X
            		String regex = "[0-9]{17}[0-9X]"//创建regex正则规则 作为判定标准
                     
                      
                      /*单个\在java中有特殊含义 表示转义符号 不认为是一个单纯的斜杠
              * 所以 如果想要表示斜杠 需要在它的前边加一个用来转义的\
              * 也就是\\才表示一个单纯的斜杠
              * \t 制表符     \r回车符     \n换行符*/
              //String regex = "\\d{17}[0-9X]";
              
              
               //2.提醒用户输入身份证号
                    System.out.println("请输入身份证号")  
                    String input = new Scanner(System.in).nextLine();
              //3.判断用户输入的身份证号是否符合要求
              if(input.matches(regex)){//判断语句用对象调用matches(regex)
                   System.out.println("恭喜您!身份证号输入正确") 
              }else{
                   System.out.println("您输入的身份信息有误,请输入正确的身份证号") 
              }
          }
      }
      

包装类

  1. 概念:

    把基本类型进行包装,提供更加为完善的功能.

    基本类型是没有任何功能的,只是一个变量,记录值,而包装类可以有更加丰富的功能

  2. 与基本类型的对应关系:

    在这里插入图片描述

  3. 测试包装类:-------int类型包装类Integer double类型包装类Double

    • 创建对象的方式:

      • 包装类名 对象名 = new 包装类名(参数值);------方法一

      • 包装类名 对象名 =包装类名.valueOf(参数值)-----方法二

    • 常用方法:

      • parseInt()----将String类型数据转换为int类型

        System.out.println(Integer.parseInt(“800”)+8);//808

      • parseDouble()----将String类型数据转换为double类型

        System.out.println(Double.parseDouble(“2.2”)+1.1);//3.3

    public class TestNumber{
        //创建成员变量 包装类Interger
        static Interger i0;
        public static void main(String[] args){
            
            /*1.包装类型是引用类型,存在默认值null*/
            System.out.println(i0);//null
            
            //创建int类型对应的包装类型Integer的对象---方式1
            Integer i1 = new Integer(5);
            Integer i11 = new Integer(5);
            System.out.println(i1==i11);//false   Integer是引用类型 ==比较的是地址值 
            
            //创建int类型对应的包装类型Integer的对象---方式2
            Integer i2 = Integer.valueOf(127);
            Integer i3 = Integer.valueOf(127);
            /*2.Integer有一个高效的效果,------使用valueOf()创建对象
             *并且数据在-128~127之间,相同的数据只会存一次
             *后续再存只是使用之前存过的数据*/
             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类型的包装类型Double的对象---方式1
            Double d1=new Double(3.14);
            Double d2=new Double(3.14);
            System.out.println(d1==d2);//false,引用类型 比较地址值
            //创建double类型对应的包装类型Double的对象---方法2
            /*Double没有高效效果*/
            Double d3 = Double.valueOf(3.14);
            Double d33 = Double.valueOf(3.14);
            System.out.println(d1==d3);//false
            System.out.println(d3==d33);//false
            
            
            
            
            
            //测试常用方法
            //parseInt():将String类型数据转换为int类型
            System.out.println(Integer.parseInt("800")+8);//808
            //parseDouble():将String类型数据转换为double类型
            System.out.println(Double.parseDouble("2.2")+1.1);//3.3
            
        }
    }
    
    

自动装箱和自动拆箱

  1. 概念:

    • 自动装箱: 把 基本类型 包装成对应的 包装类型 的过程 【基本类型 到 包装类型】

      • 自动装箱时,底层发生的代码: 包装类.valueOf(参数值)
    • 自动拆箱: 从包装类型的值,自动变成 基本类型的值 【包装类型 到 基本类型】

      • 自动拆箱时,底层发生的代码: 对象名.要转换的类型Value();
      //创建Integer包装类的两种方式
      Integer i1 = new Integer(127);
      Integer i2 = Integer.valueOf(127)
      
      //现在的创建方式: 自动装箱
      Integer i3 = 127;
      /*1.自动装箱:编译器会自动把基本类型int 5,包装成包装类型Integer
       * 然后交给引用类型的变量i3来保存,自动装箱时底层发生的代码:Integer.valueOf(5)
       * valueOf()的方向:int --> Integer*/
      
      
      
      
      //自动拆箱:
      int i4 = i1;
       /*2.自动拆箱:编译器会自动把包装类型的i1拆掉"箱子",变回基本类型的数据127
        * 然后把这个值交给int类型的变量i4来保存,自动拆箱时底层发生的代码:i1.intValue();
        * intValue()的方向:Integer --> int*/
      
      

BigDecimal

  1. 作用: 常用来解决浮点数运算不精确的问题

  2. 创建对象:

    • BigDecimal(double val)

      ​ 将double类型的数据作为参数,交给BigDecimal对象【不用,因为double本身不精确】

    • BigDecimal(String val)

      ​ 将String类型的数据作为参数,交给BigDecimal对象【用这个】

    • 注意: double数据 转为 String数据 直接拼接一个空串 “” 即可

  3. 使用对象进行加减乘除操作

    ​ 注意: 进行除法操作时,会出现除不尽的情况 抛出算数异常 这时候需要指定保留几位小数以及舍入方式

    //1.创建对象----不用
    BigDecimal  bd1 = new BigDecimal(double val)
    BigDecimal  bd2 = new BigDecimal(double val)
    //2.创建对象----用
    BigDecimal  bd3 = new BigDecimal(double val+"") 
    BigDecimal  bd4 = new BigDecimal(double val+"")  
        
    //3.加减乘除    需要定义一个新的变量来保存结果
        BigDecimal bd5;
    	bd5 = bd3.add(bd4);//加
    	bd5 = bd3.subtract(bd4);//减
    	bd5 = bd3.multiply(bd4);//乘
    	bd5 = bd3.divide(bd4);//除----------出现除不尽时,会报错
    /*解决除法报错--------使用重载的divide(m,n,o)
    				 * m是要除以那个对象
            		 * n是除不尽时保留的位数
           			 * o是舍入方式,常用的是四舍五入   可以用BigDecimal直接点出来*/
    	bd5 = bd3.divide(bd4,3,BigDecimal.ROUND_HALF_UP);//除以bd4  保留3位小数  四舍五入
        
    

File 文件类

  1. 创建File类的对象:

    ​ new File(String pathname) :这个参数是一个String类型的路径名,这个路径可能是:
    ​ 1)文件的路径 “D:\ready\1.txt”
    ​ 2)文件夹的路径 “D:\ready\a”
    ​ 3)之前不存在的文件/文件夹的路径:这个路径暂时在windows中还未创建出来
    注意:new File类的对象只是在内存中多个一个Java对象,并不会真的帮我们在外部创建一个新的文件/文件夹
    在这里插入图片描述

 //1.创建File类对象
        /*1.File需要导包:import java.io.File
        * 2.路径是String类型,必须写正确,不然找不到文件
        * 3.完整的文件名包含两部分:文件名+后缀名
        * 4.ready文件夹  和  1.txt文件  需要自己手动创建*/
        File file = new File("D:\\ready\\1.txt");
 //2.测试常用方法
        System.out.println(file.length());//3    获取当前文件的字节量
        System.out.println(file.exists());// true   判断文件是否存在
        System.out.println(file.isFile());//true    判断当前file对象是文件吗
        System.out.println(file.isDirectory());//false  判断当前file对象是文件夹吗
        System.out.println(file.getName());//1.txt    获取当前file对象的完整的文件名
        System.out.println(file.getParent());//D:\ready  获取当前file对象的父级路径
        System.out.println(file.getAbsolutePath());//D:\ready\1.txt  获取当前file对象的 带盘符的文件的绝对路径

        //3.测试创建 与 删除
        /*new只会帮你在内存中创建一个File类型的对象
        * 并不会帮你在磁盘中创建一个真实存在的2.txt*/
        File file2 = new File("D:\\ready\\2.txt" );
        //创建一个之前不存在的2.txt 如果创建成功 会返回true
        /*如果指定创建文件的路径不对 会抛出异常
        * 所以我们需要提前处理这个问题,暂时选择在main()上抛出
        * 这个IO异常是目前我们遇见的强制要求必须预先处理的异常
        * 如果不处理,方法的调用会报错,通不过编译*/
        System.out.println(file2.createNewFile());//创建不存在的文件


        File file3 = new File("D:\\ready\\m");
        System.out.println(file3.mkdir());//创建不存在的单层文件夹

        File file4 = new File("D:\\ready\\a\\b\\c");
        System.out.println(file4.mkdirs());//创建不存在的多层文件夹


        /*delete()只能删除文件和空文件夹*/
        file2.delete();  //删除文件2.txt
        file4.delete();  //删除空文件夹c  delete删除文件夹时只能删除空文件夹
        file3.delete();  //删除空的m文件夹

        //4.测试展现文件列表
        File file5 = new File("D:\\ready");
        String[] list = file5.list();/*不常用*/
        System.out.println(Arrays.toString(list));//[1.txt,a]
        //System.out.println(list[0].getName()); // 会报错 因为list这是一个String[],数组中每个元素都是String类型的
                                                //那么我们只能使用String类中的方法,getName()是File类的方法,在这里不能用


        File[] fs = file5.listFiles();/*常用*/
        System.out.println(Arrays.toString(fs));//[D:\ready\1.txt, D:\ready\a]
        System.out.println(fs[0].getName());//fs是file对象 可以直接使用file方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值