美文网首页
java基础系列04--常用API方法(2)

java基础系列04--常用API方法(2)

作者: addin_gao | 来源:发表于2019-01-13 23:23 被阅读12次

java常用API方法二

正则表达式

规则:

  • [abc] a、b 或 c
  • [^abc] 任何字符,除了 a、b 或 c
  • [a-zA-Z] a到 z 或 A到 Z
  • [a-d[m-p]]: a - d 或者 m - p === [a-dm-p]并集
  • [a-z && [def] ]d,e ,或者f,交集
  • . 任何字符
  • \d 数字:[0-9]
  • \w 单词字符:[a-zA-Z_0-9]
// 检测手机号码
String reg = "1\\d{10}";
boolean s = "13652367482".matches(reg);
System.out.println(s); // true

// 正则替换
String reg1 = "\\d";
String s1 = "abc12c222df".replaceAll(reg1, "");
System.out.println(s1);  //abccdf

// 正则分组
String reg2 = "(.)\\1(.)\\2";
System.out.println("快快乐乐".matches(reg2)); // true
String reg3 = "(..)\\1";
System.out.Println("快乐快乐".matches(reg3)); // true

Pattern 和 Matcher类:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
// 获取到正则表达式
Pattern p = Pattern.compile("a*b");
// 获取匹配器
Matcher m = p.matcher("aaaaaab");
// 获取匹配结果
boolean b = m.matches();
System.out.println(b); //true

把一个字符串中的手机号码获取出来

public static void main(String[] args){
    String str = "爱我中华,13652367485aabbccdd13652368778,初始号码:15168329322";
    // 获取到正则表达式
    Pattern p = Pattern.compile("1\\d{10}");
    // 获取匹配器
    Matcher m = p.matcher(str);
    // 找寻获取匹配结果
    while(m.find()){
        System.out.println(m.group()); // 13652367485 13652368778  15168329322
    }
        
}

Math类,都是静态方法

* public static int abs(int a) 绝对值
* public static double ceil(double a) 天花板函数
* public static double floor(double a) 地板函数
* public static int max(int a,int b) 还一个min方法
* public static double pow(double a,double b) 指数 a ^ b
* public static double random() 生成[0.0,1.0)
* public static int round(float a) 参数为double的自学, 四舍五入
* public static double sqrt(double a)开平方。Math.sqrt(4) == 2

Random类,属于util包,需要导包

import java.util.Random;
Random r = new Random();
int i = r.nextInt(100); // 生成0-99的随机数
System.out.println(i);

System类

System 类包含一些有用的类字段和方法。它不能被实例化。

* public static void gc()
* public static void exit(int status)
* public static long currentTimeMillis()
* pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 拷贝数组
System.arrayCopy( arr1, 2, arr2, 5, 10);
//将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个

BigInteger 类

要引入:import java.math.BigInteger;

import java.math.BigInteger;
BigInteger bi1 = new BigInteger("100");
BigInteger bi2 = new BigInteger("12");
System.out.println(bi1.add(bi2)); //112,
System.out.println(bi1);  // 100
System.out.println(bi1.divide(bi2));// 100/12 == 8

BigDecimal类

由于在运算的时候,float类型和double很容易丢失精度,为了能精确的表示、计算浮点数,Java提供了BigDecimal.

System.out.println(2.0-1.1); // 0.8999999999999999

BigDecimal bd1 = new BigDecimal(2.0); 
BigDecimal bd2 = new BigDecimal(1.1);
System.out.println(bd1.subtract(bd2));//0.899999999999999911182158029987476766109466552734375

//以上2种都不能正确表示,通过构造函数传递数字创建的大小数还不够精确,需要通过字符串
BigDecimal bd3 = new BigDecimal("2.0"); 
BigDecimal bd4 = new BigDecimal("1.1");
System.out.println(bd3.subtract(bd4));  // 0.9
// 或者也可以这样
BigDecimal bd5 = BigDecimal.valueOf(2.0); 
BigDecimal bd6 = BigDecimal.valueOf(1.1);
System.out.println(bd5.subtract(bd6));  // 0.9

Date类

import java.util.Date;
/*
* A:Date类的概述
    * 类 Date 表示特定的瞬间,精确到毫秒。 
* B:构造方法
    * public Date()
    * public Date(long date)
* C:成员方法
    * public long getTime()
    * public void setTime(long time)
*/
    
Date d1 = new Date();
System.out.println(d1); // Fri Nov 23 14:42:30 CST 2018
System.out.println(d1.getTime()); // 获取毫秒值
System.out.println(System.currentTimeMillis()); // 通过方法获取时间毫秒值

Date d2 = new Date(0); //得到1970年01.01 00:00
d2.setTime(1000); //可以设置时间

SimpleDateFormat类

DateFormat 是日期/时间格式化子类的抽象类,我们使用其子类SimpleDateFormat

import java.text.ParseException;
import java.text.SimpleDateFormat;
/*
* B:SimpleDateFormat构造方法
    * public SimpleDateFormat()
    * public SimpleDateFormat(String pattern)
* C:成员方法
    * public final String format(Date date)
    * public Date parse(String source)
*/
Date d1 = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
System.out.println(sdf.format(d1));  // 18-11-23 下午2:56

//SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");  2018年11月23日14:58:19
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  //2018/11/23 14:59:30
System.out.println(sdf1.format(d1));  

String str = "2000/11/23 14:55:00";
Date d = sdf1.parse(str);  // 需要抛出异常  throws ParseException

Calendar类

Calendar 类是一个抽象类, Calendar.getInstance()获取Calendar对象,再操作

import java.util.Calendar;
// 得到日历实例
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
// 获取日历的一些东西
System.out.println(c.get(Calendar.YEAR)); // 2018
System.out.println(c.get(Calendar.MONTH)); // 10 月份要+1
System.out.println(c.get(Calendar.DAY_OF_MONTH)); // 23 日
System.out.println(c.get(Calendar.DAY_OF_WEEK));  // 6 周几,需要-1,因为国外是周天认为周一

/* public void add(int field,int amount)
* public final void set(int year,int month,int date)*/
c.add(Calendar.YEAR, 1); // 将日历的年份加1,要减1的话填 -1
System.out.println(c.get(Calendar.YEAR)); // 2019
c.set(2022,8,22); //设置日历年月日
System.out.println(c.get(Calendar.YEAR));// 2022

相关文章

网友评论

      本文标题:java基础系列04--常用API方法(2)

      本文链接:https://www.haomeiwen.com/subject/pbxskqtx.html