API-正则表达式,包装类,Date,SimpleDateFormat,Calendar

正则表达式:
   (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]
  \w :表示匹配任意一个单词字符,相当于[a-zA-Z0-9_]
  \s :表示匹配任意一个空格字符,相当与[\t\r\n\b]
  \D :表示匹配任意一个非数字字符 相当于[^0-9]
  \W :表示匹配任意一个非单词字符,相当于[^a-zA-Z0-9_]
  \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();
        作用是将包装类的对象拆箱成基本数据类型
    static int parseInt(String s)
        作用是将字符串转成10进制的基本数据类型
    static Integer valueOf(String s)
        作用是将字符串转成Integer对象
 
注意:将字符串转成基本数据类型时,有可能出现运行时异常:
    java.lang.NumberFormatException
包装类的常量池:
       当将基本数据类型进行自动装箱时,装箱后的对象的字面值,如果
       是在-128~127之间,会先检查常量池中是否有相同字面值的
       对象,如果有,则将常量池的对象的地址给引用变量。
       
总结:
    (1)八种包装类都是final修饰
    (2)一经创建,对象内容不可变
    (3)Character和Boolean的父类是Object
             其他六种的父类是Number类型  
    
    BigDecimal:大数字类型  
       如果:想进行精确无误差运算,我们可以使用BigDecimal类型
       提供了相应的加减乘除等功能方法进行精确运算。
===================================================

日期与时间
一、java中的时间:
   (1)java中采用标准类库的Date类型时间。使用距离一个固定时间点的
      毫秒数的时间点来表示时间
   (2)固定时间点即纪元(UTC)。也就是1970年1月1日 00:00:00
   (3)UTC与GMT都是世界通用的时间格式   
   
   (javase:标准版本的jdk,即类库为基本类库
    javaee:企业版本的jdk,基本类库满足不了企业开发的需求,因此此jdk中,含有其他与企业开发相关的类库
    javame:移动版本的jdk,jdk中含有与移动端开发的类型)
二、Date类型
    java.util.Date类型,封装了日期与时间的信息。 
       之后里面的很多功能都弃用,渐渐的使用Calender类型来替代            
    
   (1)构造器
       Date():
             创建一个封装当前系统时间的Date对象
       Date(long time):
              创建一个距离纪元time毫秒的Date对象
   (2)常用方法
      long getTime();
            返回距离纪元的毫秒数
      void  setTime(long time);
            修改时间对象的毫秒数
=========================
SimpleDateFormat:
     作用:此类型可以对Date进行格式化及其将字符串转成Date类型。            
  
常用构造器:
     SimpleDateFormat(String format):
          创建一个指定格式的SimpleDateFromat对象。
常用方法:
     String format(Date date)          
          作用是将参数date按照构造器里的格式进行格式化成字符串
     Date parse(String str)
          作用是将指定字符串str转变成Date类型 
     需要用try catch抛异常,java.text.ParseException   解析异常
常用格式:
      yy:
      yyyy: 年
      MM:月
      dd:日
      
      HH:时(24制)
      hh:时(12制)
      mm:分
      ss:秒
      a:上下午
      E:星期              
                   
练习: 计算自己已经生活了多少毫秒  
=======================================
Calendar:
 (1)是日历类型,此类型封装了有关于日历的所有信息。主要用于
        计算时间分量。
        时间分量:日期和时间的一部分有效值。
 (2)Calendar
        是一个抽象类,提供了一方法getInstance()来获取一个通用的
        子类型对象,一般都是GregorianCalendar(格力高历,阳历)类型
        的对象。
 (3)时间分量常量:
     static int YEAR
     static int MONTH:日历里的月份是0-11。
     
     static int DATE
     static int DAY_OF_WEEK:默认从周日到周六,即1-7
     static int DAY_OF_MONTH
     .....
  (4)类型中提供了get(int field)方法,通过指定时间分量常量来获取
          相应的时间分量的值 
  (5)提供了set(int field,int value),进行设置时间分量值
         
  (6)提供了add(int field,int value),用于对当前日历信息通过
          时间分量来计算value后的日历信息
          注意:value值如果是负数,向前推算。 
          
          
   其他方法:
     Date getTime():
          将日历对象转成Date对象
     void setTime(Date date);
          将指定date日期转成日历对象的信息
          
     int getActualMaximum(int field)
          获取指定时间分量的最大值 
          如:
             指定Calendar.MONTH,获取的是11,即12月份
       Calendar.DATE,获取的是当前日历对象所在月天数的最大值


 

猜你喜欢

转载自blog.csdn.net/qq_42397691/article/details/82026436