您的位置:首页 > 职场人生

黑马程序员--Java基础学习笔记【正则表达式、常用API】

2015-09-25 01:22 971 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 正则表达式正则表达式的组成规则 java.util.regex.Pattern常见组成规则字符集合 [abc] a、b、c中任意一个字符 [^abc] 除了a、b、c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a~z、A~Z、0~9中任意一个字符 [a-z&&[^bc]] a~z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个数字字符,相当于[0-9] \w 单词字符,相当于[a-zA-Z0-9_] \s 空白字符,相当于[\t\n\x0B\f\r] \D 非数字字符 \W 非单词字符 \S 非空白字符 数量词 X? 表示0个或1个X X* 表示0个或任意多个X X+ 表示1个到任意多个X(大于等于1个X) X{n} 表示n个X X{n,} 表示n个到任意多个X(大于等于n个X) X{n, m} 表示n个到m个X 分组() 将一系列正则表达式看作一个整体,分组时可以使用 "|" 表示“或”关系 例如:匹配手机号码前面的区号 (\+86|0086)?\s*d{11} //需要出现“+86”或者“0086” 边界匹配 ^ 代表字符串开始 $ 代表字符串结束 例如:匹配用户名规则―从头到尾连续8~10个单词字符 \w{8,10} // "abcd1234_abcd"是可以通过验证的 ^\w{8,10}$ // 有从头到尾整体的限定,则验证不能通过 正则表达式的应用 判断功能 matches方法 public boolean matches(Stringregex) // 将一个字符串与正则表达式进行匹配 例如:测试email是否合法String emailRegex= "^[a-zA-Z0-9_]+@[a-z0-9-]+(\\.[a-z0-9]+)+$"; booleanb = "abc123@itcast.cn".matches(emailRegex);
System.out.println(b); // true 分割功能 public String[] split(Stringregex) // 将字符串拆分成字符串数组String string= "www.itcast.cn"; Stringregex= "\\.";
String[]strings= string.split(regex);
for (inti = 0; i < strings.length; i++) {
System.out.print(strings[i]);
} // wwwitcastcn 替换功能 public String replaceAll(Stringregex, String replacement) // 将字符串中匹配正则表达式regex的字符串替换成replacement Stringstring= "www.itcast.cn";
Stringregex= "\\.";
string = string.replaceAll(regex, "");
System.out.println(string); //wwwitcastcn 获取功能 string = "www.itcast.cn, www.itheima.com";
regex = "\\b[a-zA-Z]{3}\\b";

// 1.将给定的正则表达式编译到模式中
Patternpattern= Pattern.compile(regex);
// 2.创建匹配给定输入与此模式的匹配器,将预编译的规则和传递字符串进行匹配
Matchermatcher= pattern.matcher(string);

// 3.使用匹配器对象的find方法找和规则匹配的字符串
// boolean find = matcher.find();
while (matcher.find()) {
// 4.获取查找到的字符串
Stringresult= matcher.group();
System.out.print(result+ " ");// www www com // find =matcher.find();
} Math类 java.lang.Math 包含用于执行基本数学运算的方法,全静态 常用成员方法 int abs() // 返回绝对值 double ceil(double a) // 返回大于等于a的最小整数double值 double floor(double a) // 返回小于等于a的最大整数double值 int max(int a, int b) // 返回最大值 double pow(double a, double b) // 幂运算 double random() // 0.0 <= 随机数 < 1.0 int round(float a) // 舍入 double sqrt() // 开平方根(正确舍入的double值的正平方根) Random类java.util.Random 用于生成随机数 new Random() 成员方法 int nextInt(), int nextInt(int n) System类java.lang.System 包含一些有用的类字段和方法,不能被实例化 System.gc() // 用于建议JVM马上调度GC线程回收资源 System.exit() // 终止当前正在运行的JVM System.currentTimeMillis() // 返回以毫秒值为单位的当前时间 // 实现数组的复制 源数组, 源起始位置, 目标数组, 目标起始位置, 要复制长度 System.arraycopy(Object src, intsrcPos, Object dest, int destPos, int length) BigInteger类java.math.BigIntegerBigDecimal类java.math.BigDecimal 可以让超过范围内的数据进行运算 new BigInteger(String val) // 将十进制字符串表示形式转换为BigInteger new BigDecimal(String val) // 将字符串表示形式转换为BigDecimal 常用成员方法(加减乘除四则运算) add(), subtract(), multiply(), divide() Date类 java.util.Date 表示精确到毫秒值的时间 构造方法 Date() // 当前OS时间日期(Wed Sep 09 23:54:48 CST 2015)Date(long date) // 毫秒值 --> 日期对象 成员方法 long getTime() // 获取日期对象对应的毫秒值 日期对象 --> 毫秒值 void setTime(long time) // 设置日期对象的毫秒值 DateFormat类 java.text.DateFormat 日期/时间格式化子类(SimpleDateFormat)的抽象类,以与语言无关的方式格式化并解析日期或时间。 包含大量的非抽象的静态方法,通过类型直接调用,返回值是本类对象(子类对象) 成员方法// 将一个Date对象格式化为 日期/时间字符串 final String format(Date date) //将字符串解析生成日期对象 Date parse(String source) // Date date = dateFormat.parse("2015-8-7"); // 获取日期/时间格式器 dateFormat.parse(DateFormat.LONG,DateFormat.LONG) static DateFormat getDateTimeInstance(int dateStyle, int timeStyle) DateFormatdf4= DateFormat.getDateInstance(); Datedate= df4.parse("2015-08-07Java基础班");
System.out.println(date); // Fri Aug 07 00:00:00 CST 2015
StringdateStr= DateFormat.getDateTimeInstance().format(date);
System.out.println(dateStr); //2015-8-7 0:00:00 SimpleDateFormat类 格式化和解析日期的具体类 (日期 --> 文本、文本 --> 日期) String pattern = "yyyy年MM月dd日 HH:mm:ss"; SimpleDateFormat(),SimpleDateFormat(String pattern) // 给定日期格式创建对象 newSimpleDateFormat(pattern).format(new Date()) // 调用父类方法格式化日期 计算出生天数示例
package cn.itcast; import java.text.DateFormat;import java.text.ParseException;import java.util.Date;import java.util.Scanner; /* * 算一下来到世界多少天 * 1.得到字符串类型的日期 * 2.用格式化类parse()方法将字符串类型日期转成Date对象 * 3.将Date对象转成毫秒值做运算,计算天数 * 4.判断三种情况 */public class BirthdayDemo { public static void main(String[]args) throws ParseException { System.out.println("请输入生日:(格式 2015-8-7)"); String string = newScanner(System.in).nextLine(); // 获取日期格式转换器 DateFormat df =DateFormat.getDateInstance(); Date birthday =df.parse(string); Date today = new Date(); long ms = today.getTime() -birthday.getTime(); long day = ms / 1000 / 60 / 60/ 24; /* * 今天出生的情况一定要放在还没出生情况的后面做判断,因为ms<0, day=0 */ if (ms < 0) { System.out.println("还没出生"); } else if (day == 0) { System.out.println("今天出生"); } else { System.out.println("出生 " + day + " 天"); } }} Calendar类java.util.Calendar 提供日历字段之间的转换方法和操作日历字段方法的抽象类 成员方法 static Calendar getInstance() // 返回子类对象 int get(int field) // 获取日历字段 void add(int field, int amount) //以当前日期时间进行偏移量计算 final void set(int year, intmonth, int date) voidcalendar.setTimeInMillis(long millis);// 设置毫秒值案例:计算保质期,判断某年是不是闰年
package cn.itcast; import java.text.DateFormat;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import java.util.Scanner; public class CalendarDemo { public static void main(String[]args) throws ParseException { System.out.println("计算保质期"); Scanner sc = new Scanner(System.in); System.out.println("输入生产日期:(格式 2015-8-7)"); String datestr =sc.nextLine(); System.out.println("请输入保质期(天数)"); int days = sc.nextInt(); countDate(datestr, days); System.out.println("-------------------"); System.out.println("输入年份,判断该年是否为闰年"); isLeapYear(newScanner(System.in).nextInt()); } // 利用Calendar类 add()偏移量方法计算保质期 public static voidcountDate(String datestr, int days) throws ParseException { // 将字符串形式的日期利用日期格式转换器转成Date类型 DateFormat df =DateFormat.getDateInstance(); Date date = df.parse(datestr); // 创建calendar对象,设置成生产日期当天的时间 Calendar calendar =Calendar.getInstance(); calendar.setTime(date); // 生产日期加上保质期天数进行偏移量计算 calendar.add(Calendar.DAY_OF_MONTH,days); System.out.println("过期时间"); // 利用自定义的Calendar工具类将calend对象的各字段属性打印出来 CalendarUtil.printCalendar(calendar); } // 计算某年是不是闰年 public static void isLeapYear(intyear) { // 将日期设置为该年3月1日 Calendar calendar =Calendar.getInstance(); calendar.set(year, 2, 1); // 天数向前偏移1天 calendar.add(Calendar.DAY_OF_MONTH,-1); // 获取天数日期,如果是29 则为闰年 if(calendar.get(Calendar.DAY_OF_MONTH) == 29) { System.out.println(year +" 年是闰年"); } else { System.out.println(year +" 年不是闰年"); } }}

本文出自 “听你流浪” 博客,请务必保留此出处http://zhanglianxin.blog.51cto.com/8312202/1698046
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: