Java 基础篇:第十一章:常用工具类、正则表达式和List集合

目录

一、常用的工具类:

1.1 Math类:

1.2 Random类:

1.3 System类:

1.4 java.util.Date类:

1.5 Date类型转换String类型——SimpleDateFormat:

1.6 Calendar类:


 

 

1、常用工具类

2、正则表达式

3、List集合

 

byte->java.lang.Byte

short->java.lang.Short

int->Integer

char->Character

long->Long

float->Float

double->Double

boolean->Boolean

 

一、常用的工具类:

1.1 Math类:

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

成员方法:

public static int abs(int a);  取绝对值

public static int max(int a,int b);  最大值

public static int min(int a,int b);  最小值

public static double pow(double a,double b)返回第一个参数的第二个参数次幂的值

public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

public static double sqrt(double a)  算术平方根

 

public static double floor(double a)返回最大的(最接近正无穷大) double 值,该值小于等于参数,并等于某个整数【向下取整】

public static double ceil(double a)返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数.【向上取整】

public static long round(double a)返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。换句话说,结果等于以下表达式的值:(long)Math.floor(a + 0.5d)

public class MathDemo {

    public static void main(String[] args) {

       // 返回最大的(最接近正无穷大) double 值,该值小于等于参数,并等于某个整数【向下取整】

       int i1 = (int) Math.floor(-20.875); // -21

       System.out.println(i1);

       // 返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数.【向上取整】

       int i2 = (int) Math.ceil(-20.875); // -20

       System.out.println(i2);

       // 四舍五入(long)Math.floor(a + 0.5d)

       int i3 = (int) Math.round(-20.875); // -21

       System.out.println(i3);

 

       System.out.println("===========================");

       // 返回最大的(最接近正无穷大) double 值,该值小于等于参数,并等于某个整数【向下取整】

       int i4 = (int) Math.floor(-20.475); // -21

       System.out.println(i4);

       // 返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数.【向上取整】

       int i5 = (int) Math.ceil(-20.475); // -20

       System.out.println(i5);

       // 四舍五入(long)Math.floor(a + 0.5d)

        int i6 = (int) Math.round(-20.475); // -20

       System.out.println(i6);

 

    }

}

 

1.2 Random类:

此类的实例用于生成伪随机数流。

如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

 

构造方法摘要

Random() 创建一个新的随机数生成器。

Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。

 

方法:
         public int nextInt()

返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 nextInt 的常规协定是,伪随机地生成并返回一个 int 值。所有 2 32 个可能 int 值的生成概率(大致)相同。

public int nextInt(int n)

返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int

public class RandomDemo {

    public static void main(String[] args) {

       // 使用无参构造器

       Random random1 = new Random();

       // 使用有参构造器

       Random random2 = new Random(99L);

 

       // 使用nextInt方法,返回随机数

       int i1 = random1.nextInt();

       System.out.println(i1);

 

       int i2 = random2.nextInt(10);

       System.out.println(i2);

    }

}

1.3 System类:

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

 

static PrintStream   err  “标准”错误输出流。

static InputStream  in  “标准”输入流。

static PrintStream   out   “标准”输出流。

 

public static void gc()   运行垃圾回收器。

public static void exit(int status) 终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

public static long currentTimeMillis() 返回以毫秒为单位的当前时间。

public class SystemDemo {

    public static void main(String[] args) {

       // demo01();

       // demo02();

       demo03();

    }

 

    // exit()方法

    public static void demo03() {

       System.out.println("000000000");

       System.exit(1); // 非0状态是异常终止,退出JVM

       System.out.println("11111111");

    }

 

    // gc()方法的使用

    public static void demo02() {

       for (int i = 0; i < 1000; i++) {

           System.out.println("gc()");

           System.gc(); // 运行垃圾回收器

       }

    }

 

    public static void demo01() {

       long start = System.currentTimeMillis(); // 毫秒单位系统时间

       for (int i = 0; i < 1000; i++) {

           System.out.println(i + "--中国海军v587!");

       }

       long end = System.currentTimeMillis();

       System.out.println("花费时间:" + (end - start) + "ms.");

    }

}

 

1.4 java.util.Date类:

Date 表示特定的瞬间,精确到毫秒

 

构造方法:

public Date() 【获取系统当前时间】分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

public Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 1 1 00:00:00 GMT)以来的指定毫秒数。

 

方法:

public long getTime() 返回自 1970 1 1 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

public void setTime(long time)设置此 Date 对象,以表示 1970 1 1 00:00:00 GMT 以后 time 毫秒的时间点。

public class DateDemo {

    public static void main(String[] args) {

       // demo01();

       demo02();

    }

 

    public static void demo01() {

       Date current = new Date();

       System.out.println(current);

       System.out.println(current.getTime()); // 通过时间对象获取毫秒值

       System.out.println(System.currentTimeMillis()); // 通过系统类的方法获取当前时间毫秒值

    }

 

    public static void demo02() {

       Date date1 = new Date();

       Date date2 = new Date(0);

       System.out.println(date1);

       System.out.println(date2);

    }

}

1.5 Date类型转换String类型——SimpleDateFormat:

SimpleDateFormat

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

 

构造方法:

public SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

 

成员方法:

public final String format(Date date):将一个 Date 格式化为日期/时间字符串。[此方法属于父类DateFormat

public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期.

public class DateFormatDemo {

    public static void main(String[] args) {

       // demo01();

       demo02();

    }

 

    // String ->Date

    public static void demo02() {

       DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH-mm-ss");

       String time = "2017年07月15日 15-50-04";

       Date date = null;

       try {

           date = df.parse(time);

       } catch (ParseException e) {

           e.printStackTrace();

       }

       System.out.println(date);

    }

 

    // Date->String

    public static void demo01() {

       // DateFormat/SimpleDateFormat

       // yyyy-年,MM-月,dd-日,HH-24进制的小时、hh-12进制的小时,mm-分钟,ss-秒,a-上午/下午

       DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH-mm-ss a");

       Date current = new Date();

       // 2017/07/15 15:40:00

        String time = df.format(current);

       System.out.println(time);

    }

}

 

需求:计算你来到这个世界有多少天?

public class DateFormatPractice {

    // 需求:计算你来到这个世界有多少天?

    // 1、当前时间的毫秒数

    // 2、出生时间(文本)

    // 3、出生时间由String转成Date

    // 4、获取出生时间的毫秒数

    // 5、两个毫秒数做差值,除以1000、除以60、除以60除以24得到天

    public static void main(String[] args) {

       long current = new Date().getTime();// 当前时间的毫秒数

       String birthStr = "1996年01月30日"; // 出生时间(文本)

       DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");

       Date birthday = null;

       try {

           birthday = df.parse(birthStr);

       } catch (ParseException e) {

           e.printStackTrace();

       }

       long birth = birthday.getTime();// 获取出生时间的毫秒数

       int day = (int) ((current - birth) / 1000 / 60 / 60 / 24);

       System.out.println("我来到这个世界" + day + "天了!");

    }

}

 

1.6 Calendar类:

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

public static Calendar getInstance():使用默认时区和语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了默认时区和默认语言环境。

public int get(int field):返回给定日历字段的值。

public void add(int field,int acount):根据日历的规则,为给定的日历字段添加或减去指定的时间量.

public final void set(int year,int month,int date); 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。

public class CalenderDemo {

    public static void main(String[] args) {

       // demo01();

       // demo02();

       demo03();

    }

 

    public static void demo03() {

       Calendar calendar = Calendar.getInstance();

       calendar.set(2017, 6, 15);

       System.out.println(calendar.getTime());

    }

 

    public static void demo02() {

       Calendar calendar = Calendar.getInstance(); // 得到一个Calender对象

       calendar.add(Calendar.MONTH, 20);

       calendar.add(Calendar.DATE, 9);

       Date newDate = calendar.getTime();

       System.out.println(newDate);

    }

 

    public static void demo01() {

       Calendar calendar = Calendar.getInstance(); // 得到一个Calender对象

       // 获得当前的年

       int year = calendar.get(Calendar.YEAR);

       System.out.println(year);

       // 获取当前月(在Calendar类中,月份默认是从0开始)

       int month = calendar.get(Calendar.MONTH);

       System.out.println(month);

       // 今天是本月的第几天?

       int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

       System.out.println(dayOfMonth);

       // 今天是本周的第几天?

       int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

       System.out.println(dayOfWeek);

       // 今天是本年的第几天

       int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);

       System.out.println(dayOfYear);

 

       // 今天是本月的第几周

       int dayOfweekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);

       System.out.println(dayOfweekInMonth);

    }

}

 

 

需求:从键盘录入一个年份,判断该年是闰年还是平年?

public class LeapYear {

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       System.out.println("请输入一个年份(正整数):");

       int year = scanner.nextInt();

       if (isLeapYear3(year)) {

           System.out.println("闰年");

       } else {

           System.out.println("平年");

       }

    }

 

    // 四年一年、百年不润、四百年再润

    public static Boolean isLeapYear(int year) {

       if (year % 4 == 0) {

           if (year % 100 == 0 && year % 400 != 0) { // 不是闰年

              return false;

           } // else :year%100!=0||year%400==0

           else {

              return true;

           }

       }

       return false;

    }

 

    // 让日期定位到2月的最后一天,判断这一天是28还是29.

    public static Boolean isLeapYear2(int year) {

       // 创建Calendar对象

       Calendar calendar = Calendar.getInstance();

       // 设置日期为year对应的这一年的3月1日

       calendar.set(year, 2, 1);

       // 日期往前推一天

       calendar.add(Calendar.DATE, -1);

       return calendar.get(Calendar.DAY_OF_MONTH) == 29;

    }

 

    // 让年份定位到year、月份定位2月、日期定位到2月的最后一天,看2月的最后一天是28还是29?

    public static Boolean isLeapYear3(int year) {

       // 创建Calendar对象

       Calendar calendar = Calendar.getInstance();

       calendar.set(Calendar.YEAR, year);

       calendar.set(Calendar.MONTH, 1);

       calendar.set(Calendar.DAY_OF_MONTH,

              calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

       // 此时当前日期刚好就是当前年2月最后一天

       return calendar.get(Calendar.DAY_OF_MONTH) == 29;

    }

}

 

 

 

预习:正则表达式:

思考问题

         * 需求:校验qq号码.

                   * 1:要求必须是5-15位数字

                   * 2:0不能开头

                   * 3:必须都是数字

         * a:非正则表达式实现

         * b:正则表达式实现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逼哥很疯狂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值