java编程自学记录(day11)

正则表达式(续)
 1)正则表达式首尾(全匹配与部分匹配)
 ^:表示字符串必须以其后面约束的内容开始
 $:表示字符串必须以其前面约束的内容结尾
 若正则表达式不书写^或&,则其代表匹配字符串的部分内容,都加上则表示完全匹配。
 2)在书写正则表达式时,注意将关键字(如“.”)作为普通字符时,要使用转义
 
java对正则表达式的支持
 1)定义一个正则表达式:
  如:String regPhoneNumber = "^(\\+86)?\\d{11}$";
 2)注册一个正则表达式:
  使用Pattern类
  Pattern pattern = Pattern.compile(regStr);
 3)输入想判断的字符串:
  String maiStr = "18235145413";
 4)匹配字符串,返回描述匹配结果的Mathcer实例
  Matcher matcher = pattern.matcher(maiStr);
 5)通过调用Matcher中的find方法得知是否匹配成功
  matcher.find();返回boolean值。
  
String的方法(续):
String[] split(正则表达式字符串)
 1)以正则表达式中的字符为分界,拆分字符串,返回的是字符串数组,数组内容是拆分后字符串。
replace()
 1)把一个字符串中满足正则表达式的部分替换成我们想要的部分

Common-lang提供的StringUtils系列功能(弥补了JDK功能的不足)
 StringUtils.repeat("hello", 5)
 StringUtils.leftPad("hello", 20,"a")
 ... ...

StringBuilder类
 1)与String对象不同的是,StringBuilder封装可变的字符串,对象创建后可通过调用方法
 改变其封装的字符序列。
 2)常用构造方法:
 public StringBuilder():创建不含任何字符序列的StringBuilder对象
 public StringBuilder(String str)创建包含字符串的StringBuilder对象
 3)提供append、insert、delete、replace等方法,用于对其封装的字符序列进行追加
 插入、删除、替换等操(不能像String那样写+号直接运算了)
 4)主要应用场景:用于需要频繁更改字符串内容的情况下
 5)创建时必须使用new运算符,不能像String那样直接写字符串
 6)StringBuilder转换为字符串:调用toString()
  字符串转换为StringBuiler,直接使用StringBuilder的构造函数。
  
StringBuilder与StringBuffer
 1)相同点:
  效果和方法一模一样
 2)区别:
  a.StringBuilder是较新版本出来的,StringBuffer是旧版本出来的
  b.StringBuilder是线程不安全的,StringBuffer是线程安全的
 3)在多线程操作情况下应该使用StringBuffer,因为他是线程安全的,要估计安全问题,而
 进行必要的安全验证操作,所以效率上要比StringBuilder低。根据实际情况选择

Date
 1)java.util.Date类用于封装日期及时间信息,内部维护一个long值,表示1970年1月1日
 00时00分00秒 到程序运行(创建Date对象)的时间经历的ms数量
 2)Date类中的大多数用于进行时间分量计算的方法已经被Calender所取代,因为Date会出现
 千年虫问题,并且处理日期比较复杂,不易使用
 3)Date对toString()方法进行了重写,输出格式如下:
  Thu Aug 25 21:59:00 CST 2016
 4)使用Date场景只有一个:表示日期。对日期的计算则使用Calender
 
Calender类
 1)Calender不存在千年虫问题,并且可以方便的计算日期。
 2)Calendar是一个抽象类,使用方法:
  Calendar calendar = Calendar.getInstance();
 其中通过Calendar的静态方法获取一个实例,该方法会根据当前系统所在地区自行决定时区,帮
 我们创建Calerdar实例
 3)注意:实际上根据不同的地区,Calender有若干个子类实现,而Calender本身是抽象类,
 不能被实例化,我们不需要关心创建的实例具体为哪个子类,只需要根据Calendar规定的方法
 来使用就可以了
 4)日历类所解决的根本问题是简化日期的计算,要想表示某个日期还是应该使用Date来描述
 Calendar是可以将其描述的时间转换为Date的,我们只需要调用其getTime()方法就可
 以获取描述日期的Date对象了
 5)方法
  a.set(int field, int value)
  field是Calendar中定义的常量,表示修改哪个部分的值(年/月/日等),value
  是待写入相应位置的值。set方法用于设置当前日历的时间位置
  b.Date getTime()
  获取设置好后的Date对象
  c.add(int field, int value)
  在当前的时间上推算一段时间前后的时间,使用方法同set()
  d.get(int field)
  获取指定时间域上的日期
 6)Calendar的理解及用法
  Calendar实际上就是一个日历,通过set()方法设置想要查看 的时间,设置好后,调用
  getTime()获取Date对象,即可得到想要的结果。想要在当前的时间上推算一段时间前后的时
  间,可以使用add方法进行操作。想要获取时间的局部,可以使用get()方法

SimpleDateFormat类
 1)可以很方便地在字符串和日期类之间相互转换
 eg: 可以将字符串“2012-01-1”转换成一个Date对象
  也可以将Date对象转换成“2012-01-1”这样的字符串
 2)构造方法:SimpleDateFormat(String formatString)
  在创建对象时要指定日期格式,用于识别和得出日期格式的字符串
 3)Date parse(String dateString)
  将日期格式字符串转换为Date对象
 4)String format(Date date);
  将Date对象转换为日期格式的字符串
 5)formatString的格式字符串
 y 年  M 月  d 日  E 星期 a AM或者PM标识 
 H 小时(24小时制) h 小时(12小时制) m分钟  s 秒
 描述2016-08-26 星期五 下午 10:11 yyyy-MM-dd E a hh:mm

DateFormat
 1)是SimpleDateFormat的父类,使用不够灵活,实际情况下使用比较少。
 2)创建DateFormat对象的实例使用静态方法
  getDateinstance(style,aLocale);
 style为输出日期格式的样式:DateFormat中定义了常量
 aLocale为输出的地区信息,使用Locale类中定义的常量。按照不同的地区输出不同的时间表示
 形式
 eg:DateFormat df =
    DateFormat.getDateInstance(
      DateFormat.LONG, Locale.CHINA);
 3)DateFormat的字符串转Date对象和Date对象转字符串所用的方法与
 SimpleDateFormat一致,都是parse()和format()方法

题外话:
千年虫问题:
 由于一些计算机程序和嵌入式设备(RTC芯片)只使用两位数表示年份,当进入跨世纪时,系统
 将无法正确识别时间,如从1999.12.31进入2000.01.01时,系统可能将2000年当成1900
 年,从而对与时间相关的程序或数据造成严重影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值