Java_从入门到JavaEE_14

Day14

一.正则表达式 – 了解

  1. 含义:用来描述或者匹配一系列符合某个语句规则的字符串

  2. 案例:把一个字符串中带电话号码替换成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);
    	}
    
  3. 总结:利用正则表达式对字符串进行替换,校验,分割,爬数据。

  4. 常用表达式:见正则表达式常用表达式。

二.日期时间类

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类(日历)是一个抽象基类,主要用于完成日期字段之间相互操作的功能。

  1. Date 和 SimpleDateFormat联合使用,获取出想要的日期时间格式
  2. Calendar获取单个日历数据

三 .Math

  1. Math 类提供了一序列基本数学运算和几何函数的方法。
  2. Math类是final类,并且它的所有成员变量和成员方法都是静态的。

1. Math类的常量和常用方法

  1. 案例:

    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);
    		
    	}
    }
    
  2. 注意:Math类的abs()是有可能会返回负数的。

    //-2的31次方
    System.out.println(“获取int类型最小值:” + Integer.MIN_VALUE);//-2147483648

    //2的31次方-1
    System.out.println(“获取int类型最大值:” + Integer.MAX_VALUE);//2147483647
    //结果为负数:-2147483648

  3. 静态导入:将类里的静态属性和方法导入到本类来,成为本类自己的静态属性和方法,但可读性不高,有可能会与本类的静态属性和方法出现命名冲突。

四.Random

  1. 作用:此类用于生成随机数

  2. 案例:

    	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
    
  3. 点名器:

String[] names = {"张三","李四","王五","赵六"};
		
		Random ran = new Random();
		int index = ran.nextInt(names.length);
		
		System.out.println(names[index]);
  1. Random的种子数

    当Random(100)种子数固定时,随机出的数据也是固定的。

五.Runtime

  1. Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。

  2. 应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。

  3. 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());
    	}
    
  4. 单例模式:

    概念:
    实例化:new对象的过程
    单例模式:该类只有1个对象

六.System

Java程序的运行平台

  1. System类提供了一些静态属性和方法,允许通过类名直接调用。
  2. System类提供了代表标准输入、标准输出、错误输出的类属性。
  3. System类提供了一些静态方法用于访问环境变量、系统属性的方法。

1. System类属性

  1. 案例:
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();
	}
  1. 研究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));
		
	}

七.大数值的运算类

  1. 整数大数值运算类: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);
    	}
    
  2. 小数大数值运算类: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);
    	}
    
  • 32
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值