Day14
一.正则表达式 – 了解
含义:用来描述或者匹配一系列符合某个语句规则的字符串
案例:把一个字符串中带电话号码替换成111****1234
public static void main(String[] args) { String str = "张三11112341234"; String regex = "(1\\d{2})(\\d{4})(\\d{4})"; str = str.replaceAll(regex , "$1****$3"); System.out.println(str); }
总结:利用正则表达式对字符串进行替换,校验,分割,爬数据。
常用表达式:见正则表达式常用表达式。
二.日期时间类
Date(java.util.Date) – 日期类
SimpleDateFormat – 格式化日期类
Calendar – 日历类
1.日期类
Date日期类案例:
import java.util.Date; public class Test { public static void main(String[] args) { Date date = new Date(); //星期 月份 日期 时:分:秒 时区 年份 //Sat May 11 10:42:59 CST 2024 System.out.println(date); } }
2.SimpleDateFormat格式化日期类
案例:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //将Date对象转换为符合格式的日期时间字符串 String datetime = sdf.format(new Date()); System.out.println(datetime);//2024年05月13日 10:49:21 //将符合格式的日期时间字符串转换为Date对象 Date date = sdf.parse("2024年05月13日 10:65:21"); System.out.println(date); } }
3.Calendar日历类
案例:
import java.util.Calendar; public class Test03 { public static void main(String[] args) { //获取日历对象 Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1;//0~11月 int day = c.get(Calendar.DAY_OF_MONTH); 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(day); System.out.println(hour); System.out.println(minute); System.out.println(second); } }
总结:Calendar类(日历)是一个抽象基类,主要用于完成日期字段之间相互操作的功能。
- Date 和 SimpleDateFormat联合使用,获取出想要的日期时间格式
- Calendar获取单个日历数据
三 .Math
- Math 类提供了一序列基本数学运算和几何函数的方法。
- Math类是final类,并且它的所有成员变量和成员方法都是静态的。
1. Math类的常量和常用方法
案例:
public class Test { public static void main(String[] args) { System.out.println("求次方:" + Math.pow(3, 2));//9.0 System.out.println("求平方根:" + Math.sqrt(9));//3.0 System.out.println("获取绝对值:" + Math.abs(-100));//100 System.out.println("向上取整(天花板):" + Math.ceil(1.1));//2.0 System.out.println("向下取整(地板):" + Math.floor(1.9));//1.0 System.out.println("四舍五入:" + Math.round(1.5));//2 System.out.println("最大值:" + Math.max(10, 20));//20 System.out.println("最小值:" + Math.min(10, 20));//10 System.out.println("获取随机值(0包含~1排他):" + Math.random());//0.39661220991942137 //需求:随机出1~100的数字 System.out.println((int)(Math.random()*100) + 1); } }
注意:Math类的abs()是有可能会返回负数的。
//-2的31次方
System.out.println(“获取int类型最小值:” + Integer.MIN_VALUE);//-2147483648//2的31次方-1
System.out.println(“获取int类型最大值:” + Integer.MAX_VALUE);//2147483647
//结果为负数:-2147483648静态导入:将类里的静态属性和方法导入到本类来,成为本类自己的静态属性和方法,但可读性不高,有可能会与本类的静态属性和方法出现命名冲突。
四.Random
作用:此类用于生成随机数
案例:
Random ran = new Random(); System.out.println("随机出int类型范围里的数字:" + ran.nextInt()); System.out.println("随机出double类型范围里的数字:" + ran.nextDouble()); System.out.println("随机出boolean类型范围里的数字:" + ran.nextBoolean()); System.out.println("随机出0~9的int数字:" + ran.nextInt(10));//0~9
点名器:
String[] names = {"张三","李四","王五","赵六"}; Random ran = new Random(); int index = ran.nextInt(names.length); System.out.println(names[index]);
Random的种子数
当Random(100)种子数固定时,随机出的数据也是固定的。
五.Runtime
Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。
应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。
Runtime类可以访问jvm的相关信息,如处理器数量,内存信息等
public static void main(String[] args) { //获取运行时系统(单例模式) Runtime run = Runtime.getRuntime(); System.out.println("获取处理数:" + run.availableProcessors());//8 System.out.println("获取最大内存数(字节):" + run.maxMemory()); System.out.println("获取闲置内存数(字节):" + run.freeMemory()); }
单例模式:
概念:
实例化:new对象的过程
单例模式:该类只有1个对象
六.System
Java程序的运行平台
- System类提供了一些静态属性和方法,允许通过类名直接调用。
- System类提供了代表标准输入、标准输出、错误输出的类属性。
- System类提供了一些静态方法用于访问环境变量、系统属性的方法。
1. System类属性
- 案例:
public static void main(String[] args) { //系统标准的输入流(方向:控制台->程序) InputStream in = System.in; Scanner scan = new Scanner(in); String next = scan.next(); //系统标准输出流(方向:程序->控制台) //PrintStream out = System.out; //out.println(next); //系统标准的错误输出流(方向:程序->控制台) PrintStream err = System.err; err.println(next); scan.close(); }
研究System.out 和 System.err
System.out.println("小明"); System.err.println("小红"); System.out.println("小强");
多次输出的结果会出现不同
根本原因是out与err是两个不同的线程
当两个同时出现时会从出现抢线程的情况
2. System(系统类)的方法
案例:
public static void main(String[] args) { //获取自1970.1.1 0:0:0到现在的毫秒数 long currentTimeMillis = System.currentTimeMillis(); System.out.println("获取毫秒数:" + currentTimeMillis); //获取当前系统配置文件对象 Properties properties = System.getProperties(); System.out.println(properties); //通过配置文件里的键获取值 String property = System.getProperty("os.name"); System.out.println(property); //退出当前虚拟机(0表示正常提出) //System.exit(0); //拷贝数组 String[] names = {"张三","李四","王五","赵六"}; String[] newNames = new String[3]; System.arraycopy(names, 1, newNames, 0, 3);//(原数组,开始下标,目标数组,开始下标,拷贝长度) System.out.println(Arrays.toString(newNames)); //删除数组的功能 System.arraycopy(names, 2, names, 1, 6); System.out.println(Arrays.toString(names)); }
七.大数值的运算类
整数大数值运算类:BigInteger: 能表示比Integer更大的数字
案例:
public static void main(String[] args) { BigInteger big1 = new BigInteger("1234567890000"); BigInteger big2 = new BigInteger("1234567890000"); BigInteger add = big1.add(big2); System.out.println("加法:" + add); BigInteger subtract = big1.subtract(big2); System.out.println("减法:" + subtract); BigInteger multiply = big1.multiply(big2); System.out.println("乘法:" + multiply); BigInteger divide = big1.divide(big2); System.out.println("除法:" + divide); }
小数大数值运算类:BigDecimal:浮点数的计算
案例1:
public static void main(String[] args) { BigDecimal big1 = new BigDecimal("0.5"); BigDecimal big2 = new BigDecimal("0.4"); BigDecimal add = big1.add(big2); System.out.println("加法:" + add); BigDecimal subtract = big1.subtract(big2); System.out.println("减法:" + subtract); BigDecimal multiply = big1.multiply(big2); System.out.println("乘法:" + multiply); BigDecimal divide = big1.divide(big2); System.out.println("除法:" + divide); }
案例2:
public static void main(String[] args) { BigDecimal big1 = new BigDecimal("10"); BigDecimal big2 = new BigDecimal("3"); BigDecimal divide = big1.divide(big2, 3, BigDecimal.ROUND_HALF_UP); System.out.println("除法:" + divide); }