您的位置:首页 > 编程语言 > Java开发

Java语言学习day 11 - 常用类API使用(日期,随机数,正则表达式)

2020-08-19 19:03 190 查看

Java入门day 11 - 常用类

  • 2 随机数
  • 3. 正则表达式
  • 4总结
  • 1 日期

    1.1 Date

    • Date类: 日期时间类, 表示年, 月, 日, 小时, 分钟, 秒.

      ​ 注意: 在使用中我们使用:java.util.Date类.

    import java.util.Date;
    
    public class DateDemo {
    public static void main(String[] args) {
    Date d = new Date();//得到当前日期
    System.out.println(d);
    //获取日期中的字段(年月日时分秒)
    System.out.println(d.toLocaleString());//本地区域时间风格
    }
    }

    1.2 SimpleDateFormat

    • SimpleDateFormat: 日期的格式化类
    • 功能:
    1. 格式化: Date类型转换为String类型: String format(Date date).
    2. 解析: String类型转换为Date类型: Date parse(String source).
    3. 简单类型的数据 -> 复杂类型的数据
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class SimpleDateFormatDemo {
    public static void main(String[] args) {
    //格式化: 将Date对象转换成String
    //Date对象 --->"2020-08-19 11:26:30"
    Date d = new Date();
    System.out.println(d);
    //SimpleDateFormat类:format
    SimpleDateFormat sdf = new SimpleDateFormat();
    //指定日期的格式
    //M表示月, m表示分钟
    sdf.applyPattern("yyyy-MM-dd hh:mm:ss");
    String sdate = sdf.format(d);
    System.out.println(sdate);
    }
    }
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class SimpleDateFormatDemo2 {
    public static void main(String[] args) throws ParseException {
    //日期的解析:String ->Date
    String s = "2020年08月19日 11时44分30秒";
    SimpleDateFormat sdf = new SimpleDateFormat();
    //需要在解析前,指定日期的格式
    //才能从字符串中获取到对应的数据
    sdf.applyPattern("yyyy年MM月dd日 hh时mm分ss秒");
    //一旦出现ParseException异常,那么肯定是指定格式错了
    Date d = sdf.parse(s);
    System.out.println(d);
    }
    }

    1.3 Calendar

    • Calendar:日历类 : 主要用来对日期做相加减, 重新设置日期时间功能.
    • Calendar本身是一个抽象类, 通过getInstance方法获取对象, 其底层创建的是Calendar的子类对象.
    import java.util.Calendar;
    
    public class CalendarDemo {
    public static void main(String[] args) {
    //获取到Calendar的子对象
    //通过Cale操作当前日期
    Calendar c =Calendar.getInstance();
    System.out.println(c);
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH)+1;
    int date = c.get(Calendar.DATE);
    int hour = c.get(Calendar.HOUR);
    int minute = c.get(Calendar.MINUTE);
    int second = c.get(Calendar.SECOND);
    System.out.println(year);
    System.out.println(month);
    System.out.println(date);
    System.out.println(hour);
    System.out.println(minute);
    System.out.println(second);
    //年份设置为2021年
    c.set(Calendar.YEAR, 2021);
    System.out.println(c.get(Calendar.YEAR));
    }
    }
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class CalendarDemo2 {
    public static void main(String[] args) throws ParseException {
    //给定一个日期字符串, 找到该前一周的日期
    String endDate = "2020-08-19 14:59:50";
    //需要一个Date, 但是目前只有String
    //String -> Date SimpleDateFormat
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d = sdf.parse(endDate);
    //结束日期设置为2020-08-19 23:59:59
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.set(Calendar.HOUR_OF_DAY,23);
    c.set(Calendar.MINUTE,59);
    c.set(Calendar.SECOND,59);
    System.out.println(c.getTime());
    //获取到一周前的时间
    c.add(Calendar.SECOND, 1);
    c.add(Calendar.DAY_OF_MONTH,-7);
    System.out.println(c.getTime());
    //得到一个开始时间 2020-08-13 00:00:00
    String beginDate = "2020-08-12 14:59:50";
    }
    }

    2 随机数

    2.1 Math

    • Math定义: Math 类包含用于执行数学运算的方法, 如初等指数、对数、平方根和三角函数等, 该类的方法都是static修饰的.
    public class MathDemo {
    public static void main(String[] args) {
    //最大值
    System.out.println(Math.max(99,22));
    //最小值
    System.out.println(Math.min(99,22));
    //生成[0,1)之间的随机小数
    System.out.println(Math.random());
    //生成[0,100)之间的随机整数
    System.out.println((int)(Math.random()*100));
    }
    }

    2.2 Random

    • Random定义: Random类用于生产一个伪随机数( 通过相同的种子, 产生的随机数是相同的 ), Math类的random方法底层使用的就是Random类的方式.
    import java.util.Random;
    
    public class RandomDemo {
    public static void main(String[] args) {
    Random r = new Random();
    //指定[0, 100)之间的随机数
    System.out.println(r.nextInt(100));
    //随机获取A~Z之间的5个字母组成的字符串
    //先生成65-90之间的随机数 0-25之间的随机数
    StringBuilder sb =new StringBuilder(5);
    for (int i=0;i<5;i++){
    sb.append((char)(r.nextInt(26)+65));
    }
    System.out.println(sb);
    }
    }

    2.3 UUID

    • UUID定义: UUID表示通用唯一标识符 (Universally Unique Identifier) , 其算法通过电脑的网卡、当地时间、随机数等组合而成, 优点是真实的唯一性, 缺点是字符串太长了.
    import java.util.UUID;
    
    public class UUIDDemo {
    public static void main(String[] args) {
    //UUID
    UUID uuid = UUID.randomUUID();
    System.out.println(uuid);
    //转成toString 拿到前5位
    String suuid = UUID.randomUUID().toString().substring(0,5);
    System.out.println(suuid);
    }
    }

    3. 正则表达式

    • 正则表达式定义: 正则表达式用来判断某一个字符串是不是符合某一种正确的规则, 在开发中通常用于判断操作、替换操作、分割操作等.

    3.1 匹配规则一

    public class REDemo {
    public static void main(String[] args) {
    //校验字符串是否匹配指定的规则
    //正则表达式中需要使用到反斜线\
    //反斜线在java中是转义符
    System.out.println("\"\"");
    System.out.println("1234567S".matches("\\d"));
    //只能匹配一个字符
    //符合ABC中其中一个字符
    System.out.println("A".matches("[ABC]"));
    //除了ABC以为的字母
    System.out.println("S".matches("[^ABC]"));
    //符合a-z A-Z 0-9的字符
    System.out.println("2".matches("[a-zA-Z0-9]"));
    //数字
    System.out.println("2".matches("\\d"));
    //非数字
    System.out.println("2".matches("\\D"));
    //字母,数字,下划线
    System.out.println("_".matches("\\w"));
    //非字母,数字,下划线
    System.out.println("_".matches("\\W"));
    //空白字符
    System.out.println(" ".matches("\\s"));
    //非空白字符
    System.out.println(" ".matches("\\S"));
    }
    }

    3.2 匹配规则二

    4总结

    4.1 StringBuilder的常用方法和作用

    StringBuilder常用方法:

    1. append: 追加, 在字符串后面加上,非静态方法.
    2. StringBuilder(int capacity): 指定容量.
    3. StringBuilder deleteCharAt(int index):删除指定索引位置的字符

    StringBuilder作用: 解决多个字符串拼接低性能的问题. 特别是在循环中连接字符时.

    4.2 如果理解StringBuilder中的容量

    StringBuilder容量: 当我们使用StringBuilder的时候,默认容量位16,但是我们不必担心容量不够得问题, 因为当容量不够的时候的会自动扩容,以16的倍数.

    4.3 String、StringBuilder、StringBuffer三者的区别

    String: 是不可变字符串, 比较适合连接几个字符串的时候.

    StringBuilder和StringBuffer: 都是可变的字符串, 本质是一个char[ ].

    StringBuilder: 线程不安去, 但是性能比较高.

    StringBuffer: 线程安全, 但是性能比较低.

    两个都可以用来拼接多个字符串.

    4.4 日期和String的相互转换(格式化和解析):SimpleDateFormat

    格式化: Date -> String : 使用String format(Date date).

    解析: String -> Date : 使用Date parse(String source).

    具体使用看代码:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class SimpleDateFormatDemo {
    public static void main(String[] args) {
    //格式化: 将Date对象转换成String
    //Date对象 --->"2020-08-19 11:26:30"
    Date d = new Date();
    System.out.println(d);
    //SimpleDateFormat类:format
    SimpleDateFormat sdf = new SimpleDateFormat();
    //指定日期的格式
    //M表示月, m表示分钟
    sdf.applyPattern("yyyy-MM-dd hh:mm:ss");
    String sdate = sdf.format(d);
    System.out.println(sdate);
    }
    }
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class SimpleDateFormatDemo2 {
    public static void main(String[] args) throws ParseException {
    //日期的解析:String ->Date
    String s = "2020年08月19日 11时44分30秒";
    SimpleDateFormat sdf = new SimpleDateFormat();
    //需要在解析前,指定日期的格式
    //才能从字符串中获取到对应的数据
    sdf.applyPattern("yyyy年MM月dd日 hh时mm分ss秒");
    //一旦出现ParseException异常,那么肯定是指定格式错了
    Date d = sdf.parse(s);
    System.out.println(d);
    }
    }

    4.5 如何方便的操作日期中的数据? Calendar中有哪些常用的方法?

    对日期数据进行操作我们可以使用Calendar: 日历类, 可以帮我们对日期做相加减, 重新设置日期时间功能.

    Calendar:

    //设置的年月日小时分钟秒的值
    c.setTime(d);
    c.set(Calendar.YEAR,2020);
    c.set(Calendar.MONTH,23);
    c.set(Calendar.DATE,10);
    c.set(Calendar.HOUR_OF_DAY,23);
    c.set(Calendar.MINUTE,59);
    c.set(Calendar.SECOND,59);
    //相加减
    c.add(Calendar.SECOND, 1);
    c.add(Calendar.DAY_OF_MONTH,-1);
    //得到设置的年月日小时分钟秒
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH)+1;
    int date = c.get(Calendar.DATE);
    int hour = c.get(Calendar.HOUR);
    int minute = c.get(Calendar.MINUTE);
    int second = c.get(Calendar.SECOND);

    4.6 说说你对正则表达式的理解? 通常用在什么地方?

    正则表达式: 是用来判断某个字符串是否满足我们设置的某些规则.

    通常用在: 开发中进行判断, 替换操作.

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: