Java之常用类

正则表达式

用于字符串的替换

String str = "小红13012341111 小绿15112342222";

String regex = "(1\\d{2})(\\d{4})(\\d{4})";
str = str.replaceAll(regex , "$1****$3");

System.out.println(str);

用于字符串校验

String email = "144558498011@qq.com";

String regex = "\\d{4,11}@qq.com";
boolean matches = email.matches(regex);

System.out.println(matches);

用于字符串分割

String str = "C:\\资源\\日韩\\波多野结衣.avi";

String regex = ":?\\\\";// :\\  或   \\
String[] split = str.split(regex);
for (String string : split) {
    System.out.println(string);
}

Patten类和Match类(爬虫)

String str = "<img src  ='hhy/aaa.jpg'/><div><div/> <input type='image' src='submit.gif' /><img src='bbb.jpg'/>";

//正则表达式的字符串
String regex = "<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg)\\b)[^>]*>";

//获取正则表达式对象
Pattern pattern = Pattern.compile(regex);
//匹配结果
Matcher matcher = pattern.matcher(str);

//循环遍历
while(matcher.find()){//查询匹配结果

    String group = matcher.group(2);//获取匹配结果(第2组-第二个小括号里的数据)
    System.out.println(group);
}

时期类

Date类(import java.util.Date

Date date = new Date();
//星期 月份 日期 时:分:秒 时区 年份
//Sat May 11 10:42:59 CST 2024
System.out.println(date);

SimpleDateFormat类(import java.text.SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

//将Date对象转换为符合格式的日期时间字符串
String datetime = sdf.format(new Date());
System.out.println(datetime);//2024年05月11日 10:49:21

//将符合格式的日期时间字符串转换为Date对象
Date date = sdf.parse("2024年05月11日 10:65:21");
System.out.println(date);

Canlendar类(import java.util.Calendar

Canlendar类底层使用简单工厂模式

//获取日历对象
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);
小结

Date类和SimpleDateFormat类联合使用

Canlendar类获取单个日历数据

Math类

Math类是final类,并且它的所有成员变量和成员方法都是静态的,提供了一些数学运算

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. Math.abs()的结果有可能是负数嘛?可能

    System.out.println(Math.abs(Integer.MIN_VALUE));//-2147483648
    

静态导入

将类里的静态属性和方法导入到本类来,成为本类自己的静态属性和方法

==缺点:==代码可读性不高

import static java.lang.Math.*;
666
public class Demo {
	public static void main(String[] args) {
		System.out.println("获取绝对值:" + abs(-100));
	}
	
	public static int abs(int i){
		return 1234567890;
	}
}

Random类

生成0~9的数字

Random random = new Random();
System.out.println(random.nextInt(10));

生成固定的伪随机数字数字

Random random = new Random(100);
System.out.println(random.nextInt());//生成一个固定的伪随机数

用于生成随机数

import java.util.Random;

public class TestRandom {
    public static void main(String[] args) {
        Random random = new Random();
        for(int i = 0; i < 5; i++){
            System.out.println(random.nextInt(11));//0-10的随机数
        }
    }
}

Runtime类

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

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

Runtime rt = Runtime.getRuntime();
System.out.println("空闲内存:" + rt.freeMemory());
System.out.println("分配最大内存(字节单位):" + rt.maxMemory());
System.out.println("处理器数量(字节单位):" + rt.availableProcessors());

单例模式

懒汉式 - 通过 类.方法 时才可以new对象

public class A{

    private static A a;
    private A(){}
    
    public static A getInstance(){
        if(a == null){
            a = new A();
        }
        return a;
    }
}

饿汉式 - 加载类的时候就会new对象

public class A{

    private static A a = new A();
    private A(){}
    
    public static A getInstance(){
        return a;
    }
}

System类

系统标准输入流

InputStream in = System.in;

系统标准输出流

OutputStream out = System.out;

系统标准错误输出流

PrintStream err = System.err;//输出样式是红色

System.out和System.err

多线程,互相抢资源

即他们会互相抢夺资源,并不能保证输出完整性和逻辑正确性

System的方法

获取自1970.1.1 0:0:0到现在的毫秒数

long currentTimeMillis = System.currentTimeMillis();

获取当前系统配置文件对象

Properties properties = System.getProperties();
//os.name = Windows 11
//sun.jnu.encoding = GBK...

通过配置文件里的键获取值

String osName = System.getProperties("os.name");//Windows 11

退出当前虚拟机(0表示正常退出)

System.exit(0);

拷贝数组

String[] names = {"1","1","1","1","1","1"};
String[] newNames = new String[3];
System.arraycopy(names, 1, newNames, 0, 3);//(原数组, 开始下标,目标数组,目标数组开始下标,拷贝长度)

/*
通过拷贝数组进行数组的删除
*/
String[] names = {"1","2","3","4","5","6"};
System.arraycopy(names, 1, names, 0, 5);//拷贝结果:{"2","3","4","5","6"};

大数值运算类

当数字特别大时运算结果可能会失去精度

整数大数值类

BigInteger big1 = new BigInteger("1234567899999");//传入字符串是为了防止数值过大
BigInteger big2 = new BigInteger("1234567899999");
//加法
BigInteger add = big1.add(big2);
//减法
BigInteger subtract = big1.subtract(big2);
//乘法
BigInteger mutiply =  big1.mutiply(big2);
//除法
BigInteger divide =  big1.divide(big2);

整数小数值类

BigDecimal big1 = new BigDecimal("1234567.899999");//传入字符串是为了防止数值过大
BigDecimal big2 = new BigDecimal("1234567.899999");
//加法
BigDecimal add = big1.add(big2);
//减法
BigDecimal subtract = big1.subtract(big2);
//乘法
BigDecimal mutiply =  big1.mutiply(big2);
//除法
BigDecimal divide =  big1.divide(big2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拖把湛屎,戳谁谁死

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

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

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

打赏作者

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

抵扣说明:

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

余额充值