您的位置:首页 > 编程语言 > Java开发

java编程自学记录(day11)

2016-08-26 22:43 225 查看
正则表达式(续)

 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

 年,从而对与时间相关的程序或数据造成严重影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: