黑马程序员<a href="http://www.itheima.com" target="blank">java培训</a>

                                 第十四天笔记

1.正则表达式概述与基本使用

正则表达式是用来校验符合正确规则的一串字符。

介绍规则:

在String类中有一个matcher方法,它有一个正则表达式的连接。

package lm.Regex;

import java.util.Scanner;

/**
*
* @author Administrator
*
/**
* 验证qq号码 需求 1.长度5-15之间的数字 2.要求0不能开头
*
* 思路: 1。考虑做一个方法 返回值:boolean 参数:String 要验证的qq号码
* 2.从键盘输入一个qq号码 Scanner
* 3.完成方法checkQQ的功能
*
*/


public class RegexDemo2 {


public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的QQ号:");
if( method2(sc.nextLine()))
{
System.out.println("验证成功");
}
else
{
System.out.println("验证失敗");
}
}
/*
* 正則表達式驗證QQ
*/
private static Boolean method2(String s) {


return s.matches("[1-9][0-9]{4,14}");


}

}

 

2.正则表达式的组成规则

字符

                            x 字符 x。举例:'a'表示字符a

                            \\ 反斜线字符。

                            \n 新行(换行)符 ('\u000A')

                            \r 回车符 ('\u000D')

                           

字符类

                            [abc] a、b 或 c(简单类)

                            [^abc] 任何字符,除了 a、b 或 c(否定)

                            [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)

                            [0-9] 0到9的字符都包括

                           

预定义字符类

                            . 任何字符。我的就是.字符本身,怎么表示呢? \.

                            \d 数字:[0-9]

                            \w 单词字符:[a-zA-Z_0-9]

                                     在正则表达式里面组成单词的东西必须有这些东西组成

 

边界匹配器

                            ^ 行的开头 (就业班js中使用)

                            $ 行的结尾 (就业班js中使用)

                            \b 单词边界

                                     就是不是单词字符的地方。

                                     举例:hello world?haha;xixi

 

                           

                           

Greedy 数量词

                            X?  X,一次或一次也没有

                            X*  X,零次或多次

                            X+  X,一次或多次

                            X{n}  X,恰好 n 次

                            X{n,}  X,至少 n 次

                            X{n,m}  X,至少 n 次,但是不超过 m 次

3.正则表达式的判断功能

String 类中

public boolean matches(String regex)

参数:是正则表达式(规则)

返回值:代表是否与给定的规则匹配。

 

4.邮箱的校验案例

正则: . 匹配的是任意字符

现在要匹配  “.”  \.

在java中”\” 需要使用 \\

在正则中的\. 到java代码中就需要写在 \\.

 

package lm.Regex;

import java.util.Scanner;

/*
 * 校验邮箱
 *      abc@163.com
 *      12345@qq.com
 *   admin@yahoo.com.cn
 *   user@itcat.cn
 *   
 * 分析:
 *     1.定义一个方法checkEmail
 *          参数:要校验的邮箱 返回值:是否符合规则
 *     2.完成checkEmail方法功能
 *         1.定义邮箱的规则
 *          [0-9a-z_A-Z]{3,10}@[0-9a-z_A-Z]{2,5}\.[a-zA-Z]{2,3}    
 *       
 */

public class RegexDemo3 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的郵箱号:");
        Boolean b=method2(sc.nextLine());
        if (b) {
            System.out.println(b);
            System.out.println("验证成功");
        } else {
            System.out.println(b);
            System.out.println("验证失敗");
        }
    }

    /*
     * 正則表達式驗證QQ
     */
    private static Boolean method2(String s) {
        Boolean flag = false;
        String regex1="[0-9a-z_A-Z]{3,10}@[0-9a-z_A-Z]{2,15}\\.[a-zA-z]{2,3}";
        String regex2="\\w{3,10}@\\w{2,10}(\\.\\w{2,3})+";
        if (s.matches(regex2)) {
            flag = true;
        }

        return flag;

    }

}

 

5.正则表达式的分割功能

使用String类的split方法

Public String[] split(String regex)

参数:正则表达式(规则);

返回值:数组,它是根据规则切割后的信息.

package lm.Regex;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 
 * @author Administrator
 *     分割操作 需求 String s="aa,bb,cc"; 要得到 ["aa","bb","cc"]
 *     String ss = "aa.bb.cc";
 *     String s1 = "D:\\java0309\\day14-常见对象\\PPT";
 */
public class RegexDemo5 {
    public static void main(String[] args) {
        String s="aa,bb,cc";
        String[] str=s.split(",");
        System.out.println(Arrays.toString(str));
        
        
        String ss = "aa.bb.cc";
        String[] str1=ss.split("\\.");
        System.out.println(Arrays.toString(str1));
        
        
        String s1 = "D:\\java0309\\day14-常见对象\\PPT";
        String[] str2=s1.split("\\\\");
        System.out.println(Arrays.toString(str2));
    }

}

 

6.Math类概述和方法使用

Java.lang.Math类它是一个关于数学运算操作类。

它中的方法是static,使用时直接Math.方法名.

package lm.math;
/**
 * Math 类的标记
 * @author Administrator
 *
 */
public class MathDemo1 {


    public static void main(String[] args) {
        //1.绝对值
        System.out.println(Math.abs(-10));

        // 2.四舍五入
        System.out.println(Math.round(15.9));
        
        // 3.两个数的最大值与最小值
        System.out.println(Math.max(20, 10));
        System.out.println(Math.min(20, 10));
        
        // 4.开平方
        int a=(int) Math.sqrt(9);
        System.out.println(a);
        
        // 5.求某个数的n次方
        int b=(int) Math.pow(10, 3);
        System.out.println(b);
        //6.求某个浮点数的向下值 向上值
        double c=3.14;
        double d=Math.floor(c);
        double e=Math.ceil(c);
        System.out.println(d);
        System.out.println(e);
        //求随机数
        int radom=(int) (Math.random()*100+1);
        System.out.println(radom);
        
    }

}

 

7.如何获取任意范围内的随机数

   获取50-100之间的随机数

int n=(int) (Math.random()*51+50) ;

(Math.random()*(100-50+1))+50;

package lm.math;
/**
 * 
 * @author Administrator
 * Math类中方法介绍
 */ 
public class MathDemo2 {
    public static void main(String[] args) {
        //// 公式: Math.random(end-start+1)+start
         int c=(int) (Math.random()*100)+1;
         System.out.println("1-100的随机数"+c);
         //50-100 不包含100
         int d=(int) (Math.random()*50+50);
         System.out.println("50-100的随机数"+d);
         //51-100 不包含50
         int  a=(int) (Math.random()*50+51);
         System.out.println("51-100的随机数"+a);
         //得到0-49之间的数
         
        int b=(int) (Math.random()*49);
        System.out.println("0-49的随机数"+b);
        
        //---得到的是50-101 得到了50-100之间的随机数
        int n=(int) (Math.random()*51+50) ;
        System.out.println("50-101的随机数"+n);
         
    }

}

 

8.random类,是jdk1.5以后提供的一个可以获取随机数的类

   总结:

    构造方法:

New Random () 使用毫秒值作为种子

New Random (long  seed) 使用指定值作为种子,每次的得到的随机数是一样的

     成员方法:

      NextInt();返回一个int范围的随机数

      NextInt(n);返回一个n范围之内的随机数

9.Date的概述和构造方法

  Date类要求大家掌握,在就业班中会经常使用.

Java.util包下的Date

Date类它代表一个时间点,精确到毫秒.

10.DateFormat实现日期和字符串的相互转换

 DateFormat类它可以在Date----String之间做相互转换。

Date---àString  格式化

String-àDate   解析

DateFormat类在java.text包下.

在实际开发中对字符中与Date进行相互转换,一般情况下使用DateFormat类的子类

SimpleDateFormat

 

  1. 怎样将一个Date对象格式化成指定效果的字符串

使用DateFormat类中提供的format方法。

public String format(Date date)

SimpleDateFormat类中也有这个方法。

问题:SimpleDateFormat它有无参数构造,它可以调用format方法对一个Date对象进行格式化,但是得到的不是我们想要的效果,怎样处理?

通知SimpleDateFormat它在做format操作时,得到字符串是我们指定的一个效果,就可以。

可以在创建SimpleDateFormat时指定一个模板  new SimpleDateFormat(String pattern)

 

package lm.datefomat;

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

/**
 *
 *   DateFormat进行将一个Date对象格式化成指定效果的字符串
 */
public class DateFormDemo1 {

    public static void main(String[] args) {
        
        //方法一
       Date d=new Date();
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
      String s= sdf.format(d);
       System.out.println(s);
       
       
       //方法二
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
        String s1= sdf.format(System.currentTimeMillis());
        System.out.println(s1);
           
    }

}

 

      

 

posted on 2015-04-15 23:14  星之钥匙  阅读(124)  评论(0编辑  收藏  举报