正则表达式、 包装类、

*正则表达式:
   (1)很多时候,我们都需要对一些字符进行匹配,查找,替换等复杂的
                操作.我们可以通过"正则表达式"来帮助实现这些复杂操作。
   (2)正则表达式, 它是一个有“特殊意义”的字符串,定义了一种
                 "校验规则"
 --常用字符集
         []:表示匹配括号内的一个字符 
         [abc]:表示匹配abc中的任意一个字符
         [a-z]:表示匹配a-z中的任意一个字符
         [0-9]:表示匹配0-9中的任意一个字符
         [a-zA-Z0-9]:表示匹配这些字符中的任意一个字符
         [^a]:表示匹配除了a字符的任意一个字符 
         [a-z&&[^a]]:表示匹配a-z中除了a的任意一个字符
   
 --预定义字符集  
   .  :表示匹配任意一个字符
   \d :表示匹配任意一个数字字符,相当于[0-9]
   \D :表示匹配任意一个非数字字符 相当于[^0-9]
   \w :表示匹配任意一个单词字符,相当于[a-zA-Z0-9_]
   \W :表示匹配任意一个非单词字符,相当于[^a-zA-Z0-9_]
   \s :表示匹配任意一个空格字符,相当与[\t\r\n\b]
   \S :表示匹配任意一个非空格字符,相当于[^\t\r\n\b]
  
   ###:一些特殊字符需要使用转义字符:  "\"
 
 --数量词: 
    X:表示字符集
    X?:匹配X 0个或1个
    X+:匹配X 1个或1个以上
    X*: 匹配X 0个或0个以上
    X{m}: 匹配X   m个
    X{m,}:匹配X   m个以上
    X{m,n}:匹配X  m到n个   

 --():分组
      ()将正则表达式的部分规则进行了划分,可以使用|来进行选择其中一组规则
       reg:手机号前带有区号
           +861375651674
         0086 1375651674
               正则表达式:
         (+86|0086)?\\s?1\\d{10} 
      
 --判断一个字符串是不是一个网址
    http://www.baidu.com
    https://www.baidu.com
    www.baidu.com
    www.baidu.cn
    www.baidu.com.cn
    www.baidu.net
    www.baidu.edu
 -- ^和$
          有时,我们想校验一个字符串是不是从头到尾都符合一个规则校验
          此时需要在正则表达式前后添加相应的符号:
    ^:添加在正则表达式前,表示要校验的普通字符串的开头就必须符合规则
    $:添加在正则表达式后,表示要校验的普通字符串的末尾必须符合规则
          
          前后都有此符号时:考虑的普通字符串的整体
          
    reg:
        "^[\\d]{6,8}"        
      
        "123456aaaaaaaaa"可以满足上述正则表达式
  
        "[\\d]{6,8}$"
        "abc12345678" 可以满足上述正则表达式
       
        "^[\\d]{6,8}$"
        "12345678"
       
    matchs(String regex):此方法验证不了我们自定义添加的^或$
           因此当把正则表达式传入方法内后,
           内部逻辑帮助添加了^和$ 
      
 总结:正则表达式 是一个灵活,逻辑性强的规则校验语法。
           通常用于文本中
=======================================================================
 *包装类:
        java语言是面向对象的语言,而基本数据类型的数据不是对象,但是
        有的时候我们需要研究使用基本数据类型的数据,需要将之转换成对象来使用。
        这个时候,我们可以将基本数据类型包装成 引用类型。
        
       每一个基本数据类型都对应一个包装类:
    byte--->    Byte 
    short-->    Short
    int-->        Integer
    long-->        Long
    float-->    Float
    double-->    Double
    char-->        Character
    boolean-->    Boolean   
 --特点:
    (1)都是final修饰的
    (2)一经创建的对象里的数据不可变 
 --常用构造器:
     Integer(int value):
             通过指定的基本数据类型的数据构建一个Integer对象
             
     Integer(String str):
             通过指定的字符串的数据构建一个Integer对象   
 --常用方法:
     int intValue():
              作用是将包装类的对象拆箱成基本数据类型
      
 ###:把字符串类型的值转换为基本类型的值有2种方式         
     1)static int parseInt(String s):
                   作用是将字符串转成10进制的基本数据类型
       [除了Character之外的所有包装类都提供了该方法]
     2)Integer(String str):
                   利用包装类提供的构造器
                   通过指定的字符串的数据构建一个Integer对象
     
      static Integer valueOf(String s)
                 作用是将字符串转成Integer对象
             
             
   ***:如果希望把基本数据类型转换成字符串,还有一种更简单的方法:
        将基本类型变量和""进行拼接运算,
        系统会自动把基本数据类型变量转换成字符串
     eg:
        String intStr = 5 + "";   // intStr的值为"5"
                 
 
   注意: 将字符串转成基本数据类型时,有可能出现运行时异常:
      java.lang.NumberFormatException
    
      JDK1.5以后支持自动装箱和拆箱   
=======================================================================================================
   String replace(char oldchar,char newchar);
   String replaceAll(String regex,String newStr);
   String[] split(String regex);


包装类的常量池:
           当将基本数据类型进行自动装箱时,装箱后的对象的字面值,
           如果是在-128~127之间,会先检查常量池中是否有相同字面值的对象
           如果有,则将常量池的对象的地址给引用变量
           如果没有,系统总是重新创建一个Integer实例
       
总结:
     (1)八种包装类都是final修饰
     (2)一经创建,对象内容不可变
     (3)Character和Boolean的父类是Object
         其他六种的父类是Number类型
    
    BigDecimal:

                 大数字类型  
                 如果:想进行精确无误差运算,我们可以使用BigDecimal类型
                 提供了相应的加减乘除等功能方法进行精确运算

  


 

猜你喜欢

转载自blog.csdn.net/yk_3215123/article/details/82931154