A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Echo0912 中级黑马   /  2015-9-9 23:57  /  399 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式:(Pattern)
        概述:符合某种规则的字符串。
        作用:实际开发中,一般使用正则来做校验的。
        校验QQ:
                1、不是是0开头的,
                2、必须是5-15位的数字字符
                [1-9]\\d{4,14}

        String类中的方法:
                public boolean matches(String regex);  //判断字符串是否与给定的正则匹配。

        分类:
                字符类:
                        [abc]  : a,b,c三者中的任意一个
                        [^abc] : 只要不是a,b,c三者中的任何一个就可以
                        [a-zA-Z]:所有的英文字母
                        [0-9] : 所有的数字

                预定义字符类:
                        .  任意字符
                        \d 所有的数字   
                        \w 单词字符(所有的英文字母,数字,下划线) 相当于[a-zA-Z0-9_]

                        \\  表示一个\
                        \\. 表示字符.

                数量词:
                        X? :一次或者一次也没余
                        X* :零次或者多次 (可以是零次,也可以是1次)
                        X+ :一次或多次 (至少一次)
                        X{n} : 恰好n次。
                        X{n,} : 至少n次
                        X{n,m} : 至少n次,至多不超过m次(包括m次)

        功能:
                分割功能:
                        public String[] split(String regex)
                        //张三 lisi 王五
                案例:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”   
                        思路:
                                1、切割字符串,获取到一个新的字符串数组。
                                2、遍历字符串数组,把每一个遍历到的元素 转换成 int,并将结果存到int数组中。
                                3、排序。(冒泡,选择,sort())
                                4、把排序后的int数组转成字符串。(用StringBuffer,StringBuilder)

                替换功能:
                        public String replaceAll(String regex, String replacement);
                                用给定的字符串replacement 去替换,字符串(谁调用就是谁)中符合正则规则的字符串(regex)。


                分组:
                        怎么分组?
                                通过从左至右计算其开括号的形式类分组,并且对开括号进行编号(编号是从1开始)。
                                示例:
                                        ((A)(B(C)))

                                        组零永远代表整个表达式。
                                        第一组:(A)(B(C))
                                        第二组:A
                                        第三组:B(C)
                                        第四组:C
                        叠词:
                                相同的字符连续出现两次或以上,就是叠词。
                                叠词的切割规则:
                                        (.)\\1+
                                叠词切割,保留一个:
                                        replaceAll("(.)\\1+","$1");
                                切割路径:
                                        示例:
                                                D:\\教案\\14_第十四天\\day14\\video
                                    正则表达式:
                                                \\\\


                思考:请按照叠词切割: “sdqqfgkkkhjppppkl“  (1分钟)

        Patter(模式)和Matcher(匹配器)
                //public boolean matches(String regex);  //判断字符串是否与给定的正则匹配。
                // "akskjflsjdf".matches("正则");
               
                典型的用法:
                        Patter p = Patter.compile("正则");    //获取到正则表达式
                        Matcher m = p.matcher("akskjflsjdf"); //获取匹配器
                        boolean b = m.matches();

                "我的手机号是13161290281,我以前的手机号是1314561232,在之前是12345678920"
                Matcher类中:
                        public boolean find();
                        public String group();

                   //思考:如何把一个字符串中的手机号码获取出来
                    Patter p = Patter.compile("正则");    //获取到正则表达式
                        Matcher m = p.matcher("字符串-"); //获取匹配器
                        while(m.find()){
                          String phone = m.group();
                        }


其他常用API:
        Math类:
                abs();  绝对值
                ceil();  天花板数
                floor(); 地板数
                max();         求最大值
                random();  生成一个0.0-1.0之间的随机数,包左不包右
                pow();   a^b
                sqrt();  开平方               
                round();  四舍五入
                请用代码模拟实现”四舍五入“,思路怎么做?
                        //12.3    12.5  12.8
                        思路:+0.5,然后取地板数。

        Random();
                构造:
                        public Random();
                        public Random(long seed);   //如果种子一样,则生成的随机数的顺序都是一样的。
                        企业中的应用:
                                批量生成账号和密码。

                成员方法:
                        public int nextInt();   生成一个int范围内的随机数。
                        public int nextInt(int n);   生成一个0-n之间的随机数,包左不包右
                        怎么生成1-100之间的随机数?
                                r.nextInt(100) + 1;

        System类:
                1秒 = 1000毫秒
       
                概述:里边记录的是一些有用的属性和方法,不能被实例化。

                public static void gc();
                public static void exit(int status);    //非0的状态码表示异常终止,我们一般传0.
                public static long currentTimeMillis();  获取当前系统时间的毫秒值
                        //并发修改异常:ConcurrentModificationException  并发修改异常。
                public static void arraycopy(Object obj, int objPos, Object dest,int destPos, int length); 拷贝数组

        BigInteger
                作用:可以让超出Integer范围的数据进行运算。
                构造:
                        public BigInteger(String val);
                成员方法:
                        public BigInteger add(BigInteger val) ;                        加
                        public BigInteger subtract(BigInteger val) ;        减
                        public BigInteger multiply(BigInteger val) ;        乘
                        public BigInteger divide(BigInteger val) ;                除
                        public BigInteger[] divideAndRemainder(BigInteger val) ;                        求商和余数

        BigDecimal
                作用:为了更精确的表示小数。
                public static BigDecimal valueOf(double d);

        Date日期类:
                构造:
                        public Date();     //获取的是当前的时间,
                        public Date(long date);    //如果给的种子一样,则生成的时间是一样的  

                成员方法:
                        public void setTime(long time);
                        public long getTime();

        SimpleDateFormat类:
                构造:
                        public SimpleDateFormat();
                        public SimpleDateFormat(String patter);   //模板,格式

                成员方法:
                        把日期对象转成时间字符串
                                public final String format(Date date);

                        把时间字符串转成日期对象
                                public Date parse(String str);

                示例:计算自己来到这个世界上多少天了
                        思路:
                                1、定义两个日期字符串,分别记录自己的生日和今天的日期。
                                2、定义一个日期格式化对象(SimpleDateFormat)。
                                3、通过日期格式化对象吧 日期字符串 转成 日期对象。
                                4、通过两个日期对象分别获取到毫秒值,并计算出差值。
                                5、第四步得到的毫秒值/1000/60/60/24,得到的就是天数。

        Calendar日历类:

2 个回复

倒序浏览
好多啊~~~
回复 使用道具 举报
嘻嘻,做个下最后一题

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Helist {
           public static void main(String[] args) throws ParseException {
                    Scanner sc = new Scanner(System.in);
                    System.out.println("亲,在这里输入您的生日,有惊喜噢(*^__^*) ……格式:xxx年xx月xx日");
                    String birthday = sc.nextLine();
                    long count = reckon(birthday);
                    System.out.println("嘿嘿,您在这个世界上生活了"+count+"天-_-!!");

          }

          public static long reckon(String birthday) throws ParseException {
                   SimpleDateFormat sim = new SimpleDateFormat("yyyy年MM月dd日");
                   Date d2 = sim.parse(birthday);
                   long time = (new Date().getTime()- d2.getTime());
                   return time/1000/60/60/24;
          }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马