java学习笔记13:正则表达式、System类、Date类、Calendar类

一、正则表达式
1、概述:是指一个用来描述或者匹配一系列符合某个句法规则的字符串;其实就是一种规则,有自己特殊的应用。
2、正则表达式的组成规则
(1)、字符

表达式 代表含义
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]

(2)、边界匹配器

表达式 代表含义
^ 行的开头
$ 行的结尾
\b 单词边界就是不是单词字符的地方。

(3)、Greedy 数量词

表达式 代表含义
X? X 一次或一次也没有 比如""空串 就是没有
X* X 零次或多次 大于等于1次 都算多次
X+ X 一次或多次
X{n} X 恰好 n 次
X{n,} X 至少 n 次
X{n,m} X 至少 n 次,但是不超过 m 次

(4)、举例

  String regx="abc";//定义正则表达式
      regx="\\|";  // \\ 转意字符
      regx="[abcdef]"; // 是我这个中括号出现的某一个字符
      regx="[12345]";
      regx="[12344abcdef]";
      regx="[0-9]";
      regx="[a-z]";
      regx="[A-Z]";
      regx="[a-zA-Z0-9]";
      regx="[^abc]"; //^ 不是我这个列表里面的一个字符
      regx=".."; //匹配单个任意字符
      regx="\\.";// \\. 代表点本身
      regx="\\d"; //等价于 [0-9]
      regx="^\\w$";// 等价于 [a - z_A - Z0 - 9]
      //数量词
      regx="[a-z]*"; //* 0次或多次  空串 就是0次  1个也算多次
      regx="[0-9a-zA-Z]+"; // + 一次 或多次
      regx="[a-z]?";//一次 或一次也没有
      regx="[a-z]{5}"; //正好几次
      regx="[a-z]{5,}"; //至少几次
      regx="[a-z]{5,15}";//  大于等与5  小于等于 15
       regx = "[1-9][0-9]{4,14}";  //正则表达式 正则表达式的语法
   boolean b = "abcd".matches(regx);

3、正则表达式的功能
(1)、判断功能

  • public boolean matches(String regex)
 public class Test {
     public static void main(String[] args) {
       //需求:校验邮箱  org cn net com
       //[email protected]
       //定义邮箱的正则  6 ~18 个字符,可使用字母、数字、下划线,需以字母开头
       String emaliRegx="[a-zA-Z]\\w{5,17}@[1-9a-z]{2,16}\\.(com|net|cn|org)";
       boolean matches = "[email protected]".matches(emaliRegx);
       System.out.println(matches);
     }
  }

(2)、截取功能

  • public String[] split(String regex);
public classTest {
    public static void main(String[] args) {
        String str="username=张三";
        String s = str.substring(0, str.indexOf("="));
        System.out.println(s);     //username
        String substring = str.substring(str.indexOf("=")+1);
        System.out.println(substring);   //张三
        String str2 = "username=|#==@张三=|||#==@password=123456";
        String[] strings = str2.split("[=\\|#@]+");
        System.out.println(strings[0]);  //username
        System.out.println(strings[1]);  //张三
        System.out.println(strings[2]);  //password
        System.out.println(strings[3]);  //123456
    }
}

(3)、替换功能

  • public String replaceAll(String regex,String replacement)
public class Test {
    public static void main(String[] args) {
        String s = "我爱学习编程".replace("编程", "java");
        System.out.println(s);    
        String str="我爱==#@@@=学习#===|||java";
        String s1 = str.replaceAll("[=#@\\|]+", "");//根据正则替换
        System.out.println(s1);
        //去掉中间空格
        String s2 = "我    爱   学       习   j ava";
        String s3 = s2.replaceAll(" +", "");
        System.out.println(s3);
    }
}

二、System类
1、概述:System 类包含一些有用的类字段和方法。它不能被实例化。
2、成员方法

  • public static void gc()//调用垃圾回收器
  • public static void exit(int status)//退出java虚拟机 0 为正常退出 非0为 异常退出
  • public static long currentTimeMillis()//获取当前时间的毫秒值

in 标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入

  • Scanner sc = new Scanner(in);

out “标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出

  • PrintStream out = System.out;

3、System类的成员方法使用

public class Test {
    public static void main(String[] args) {
      //循环耗时
      //当前系统的毫秒值,从 1970 01 01 00:00:00 来参照的
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("循环耗时"+(end-start)+"毫秒");
        //获取指定的环境变量值。
        String java_home = System.getenv("JAVA_HOME");
        System.out.println(java_home);
        String path = System.getenv("Path");
        System.out.println(path);
    }
}

三、BigDecimal类
1、概述:由于在运算的时候,float类型和double很容易丢失精度,所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal。不可变的、任意精度的有符号十进制数。
2、构造方法

  • public BigDecimal(String val)

3、成员方法

  • public BigDecimal add(BigDecimal augend)//加
  • public BigDecimal subtract(BigDecimal subtrahend)//减
  • public BigDecimal multiply(BigDecimal multiplicand)//乘
  • public BigDecimal divide(BigDecimal divisor)//除法
  • public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位,roundingMode 取舍模式 比如四舍五入

4、BigDecimal类的构造方法和成员方法使用

public class Test {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");
        BigDecimal b = new BigDecimal("3");
        BigDecimal add = a.add(b); //加法
        BigDecimal subtract = a.subtract(b);//减法
        BigDecimal multiply = a.multiply(b);//乘法
        //如果不能整除,得指定这个保留的位数,以及取舍模式
        BigDecimal divide = a.divide(b,5,BigDecimal.ROUND_CEILING);//除法
        System.out.println(add.toString());//13
        System.out.println(subtract);//7
        System.out.println(multiply);//30
        System.out.println(divide);//3.33334
    }
}

四、Date类
1、概述:类 Date 表示特定的瞬间,精确到毫秒。
2、构造方法

  • public Date()
  • public Date(long date) //把一个long类型的毫秒值转换成一个日期对象

3、成员方法

  • public long getTime(): 获取一个日期对象对象毫秒值
  • public void setTime(long time): 给一个日期对象设置上指定的毫秒值

4、使用举例

public classTest {
    public static void main(String[] args) {
        Date date = new Date();
        long time = date.getTime();//获取系统当前的毫秒值
        System.out.println(time);
        Date date2 = new Date();
        date2.setTime(1000 * 60 * 60 * 24 * 5); //在计算机元年上增加相应的毫秒值
        System.out.println(date2);
    }
}

五、Calendar类
1、概述:Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
2、成员方法

  • public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象
  • public int get(int field) 获得给定日历字段对应的值 field通过Calendar提供的字段来拿

3、add()和set()方法

  • public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • public final void set(int year,int month,int date) 设置日历时间 年月日

4、Calendar类的方法使用

public class MyDemo2 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.YEAR,-2);
        System.out.println(instance.get(Calendar.YEAR));
        Calendar instance1 = Calendar.getInstance();
        instance1.set(Calendar.YEAR,2016);
        System.out.println(instance1.get(Calendar.YEAR));
    }
}
发布了24 篇原创文章 · 获赞 11 · 访问量 2054

猜你喜欢

转载自blog.csdn.net/weixin_43791069/article/details/87306101