java常用类(3)

目录

一. 正则表达式

二. Math类

三. Random类

四. Date类

五. Calendar类 

六. SimpDateFormate类

七. BigInteger类 

八. BigDecimal类


一. 正则表达式

正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方法去匹配字符串

这里只介绍一些常用的正则表达式,当需要使用时可以自己在网上查找

*表示匹配0次或多次
+至少匹配一次或多次
[]只允许出现括号内的内容
{n}只能出现n次
{n,}至少出现n次
{n,m}只能出现n到m次
\d匹配数字
\D匹配非数字
\w匹配数字,字母,下划线
\W匹配非数字,字母,下划线
\s匹配空格字符
\S匹配非空格字符
|逻辑或
.匹配除了换行符的任意字符

public class RegExDemo1 {
    /*
    正则表达式 (Regular Expression),简称 regex
    正则表达式是一种规则(模式)匹配语法,
    可以使用一些正则表达式中定义的特殊符号来定义一种规则,然后用此规则去匹配某个字符串
    如果字符串与规则相匹配返回true,否则返回false

    验证一个字符串是否是中国大陆地区的手机号格式? //长度是11位 是不是1开头 判断第二位 判断之后的每位是数字
    可以使用正则表达式定义一个规则去匹配即可
     */
    public static void main(String[] args) {
        String s = "704447306";
        System.out.println(s.matches("[0-9]*"));//[0-9]* 允许出现0次或多次数字
        System.out.println(s.matches("[0-9]+"));//[0-9]+ 允许出现至少一次或多次数字
        System.out.println(s.matches("1[0-9]{3}"));//[0-9]{3}只能是n次
        System.out.println(s.matches("1[0-9]{3,}"));//[0-9]{3}至少n次
        System.out.println(s.matches("[0-9]{3,6}")); // [0-9]{3,6}至少n次  不大于m次
        System.out.println(s.matches("[1-9]{3,6}"));
        System.out.println(s.matches("[357]{3,6}"));//只能是3 5 7 3-6位
        System.out.println(s.matches("\\d{3,6}")); //\d == [0-9] 匹配数字   \D 匹配非数字
        System.out.println(s.matches("1[358]\\d{9}"));//匹配手机号
        System.out.println(s.matches("[1-9]\\d{5,9}"));//匹配qq号

    }
}
public class RegExDemo2 {
    /*
    正则表达式 (Regular Expression) 简称regex
    正则表达式是一种规则(模式)匹配语法
    可以使他一些正则表达式中定义的特殊符号来定义一种规则,然后用此规则去匹配某个字符串
    如果字符串与规则匹配返回true,否则返回false
    [0-9] [1-9] [357] [a-z] [A-z0-9]* + {n} {n,} {n,m}
    \d匹配数字
    \D匹配非数字
    \w匹配数字,字母,下划线
    \W匹配非数字 字母 下划线
    \s匹配空格字符
    \S非空格字符
    |逻辑或
    .匹配任意字符,要使用本来的.要转义
    [\\u4e00-\\u9fa5] 匹配汉字

    验证一个字符串是否是中国大陆地区的手机号格式? //长度11位 是不是1开头 判断第二位 判断之后的每位是数字
    可以使用正则表达式定义一个规则去匹配
     */
    public static void main(String[] args) {
        String s = "704447306@asd.com";
        System.out.println(s.matches("[a-z]*"));//匹配小写字母
        System.out.println(s.matches("[A-Z]+"));//匹配大写字母
        System.out.println(s.matches("[a-zA-Z]*"));//匹配所有字母
        System.out.println(s.matches("[0-9A-Z]*"));//匹配数字和大写字母
        System.out.println(s.matches("\\w*"));//匹配数字 字母 下划线
        System.out.println(s.matches("[\\u4e00-\\u9fa5]*"));//匹配中文
        System.out.println(s.matches("[\\w\\s]"));//\s匹配空格
        //邮箱格式 xxxx@xx.com.cn
        System.out.println(s.matches("\\w{6,10}@\\w{1,5}((\\.com)|(\\.com\\.cn))"));
    }
}

二. Math类

Math类中有一些用于数学计算的方法,在java.lang包中,下面介绍一些常用的

PI数学中的PI(3.1415926)
abs(n)计算n的绝对值
sqrt(n)对n开根号
pow(n,m)计算n的m次方
floor(n)对n向下取整
ceil(n)对n向上取整
round(n)四舍五入
max()求两个数之间的较大者
random()返回0-1之间的随机数

public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.PI);//PI
        System.out.println(Math.abs(-3));//绝对值
        System.out.println(Math.sqrt(9));//开根号
        System.out.println(Math.pow(2,3));//n的m次方
        System.out.println(Math.floor(9.9));//向下取整
        System.out.println(Math.ceil(9.1));//向上取整
        System.out.println(Math.round(9.5));//四舍五入
        System.out.println(Math.max(5,10));//返回两个数之间的较大者
        System.out.println(Math.random());//返回0-1之间的随机数 可能会等于0,小于1
    }
}

三. Random类

Random类是一个用于产生随机数的类,在java.util包中

nextBoolean()返回一个随机的布尔值
nextInt()在int范围内返回一个随机数
nextInt(n)在0-(n-1)之间返回一个数
nextLong()在Long范围内返回一个随机数
nextBytes(byte[ ])随机取出byte数组个长度的随机数返回

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextBoolean());//返回一个随机的布尔值
        System.out.println(random.nextInt());//在int的取值范围内随机获取一个值
        System.out.println(random.nextLong());//在long的取值范围内随机获取一个值
        System.out.println(random.nextInt(35)+1);//在给定范围内随机获取一个数 0 <= num < 给定数
        byte[] bytes = new byte[5];
        random.nextBytes(bytes);//随机取出数组长度个byte类型的随机数
        System.out.println(Arrays.toString(bytes));
    }
}

四. Date类

在java.util包中,Date类主要是一个日期类,Date类的对象主要用来记录对象被创建那一刻的时间,里面有很多获取关于时间的方法,只不过因为该类在JDK1.0时就已经被写好了,很多方法已经被抛弃了,有其他类替换了

 

getYear()获取年份,不过该方法中用当前年份-1900,所以在使用时要+1900
getMonth()获取月份,该方法中用当前月份-1,所以在使用时要+1
getDay()获取天数
getHours()获取小时
getMinutes()获取分钟
getSeconds()获取秒
getTime()获取该对象被创建那一刻的时间
Date(long date)有参构造,传入一个时间戳,返回这个时间戳对应的日期对象

 

public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();//获取程序运行时的时刻
        System.out.println(date);
        System.out.println(date.getYear()+1900);//Date类中的有些方法已经被后面的代替,但是还可以用
        System.out.println(date.getDay());
        System.out.println(date.getMonth()+1);//月份
        System.out.println(date.getHours());//小时
        System.out.println(date.getMinutes());//分钟
        System.out.println(date.getSeconds());//秒
        //获取的是自1970 1.1 0:0:0至程序运行时刻的毫秒值
        System.out.println(date.getTime());//1719925778342 时间戳qa2wesdrxftgyvhbujnki
        Date date1 = new Date();
        System.out.println(date1.getTime() - date.getTime());
        Date date2 = new Date(17119925778342L);//将指定的long类型的时间戳构造出一个时间对象
        System.out.println(date2);

    }
}

五. Calendar类 

Calendar类是一个日历类,该类是一个抽象类,所以我们在使用时要创建他的子类对象,一般我们创建GregorianCalendar类的对象,该类就是现在我们使用的公历,Calendar类就是用来替代Date类中的一些方法的类

get()主要用来将GregorianCalendar类中的静态常量转为我们想要的时间
YEAR在GregorianCalendar类中是一个静态的常量1,配合get()方法可以返回年份
MONTH在GregorianCalendar类中是一个静态的常量2,配合get()方法可以返回月份-1,使用时记得+1
DAY_OF_MONTH在GregorianCalendar类中是一个静态的常量5,配合get()方法可以返回今天是这个月的第几天
DAY_OF_WEEK在GregorianCalendar类中是一个静态的常量7,配合get()方法可以返回今天是这周的第几天
DAY_OF_YEAR在GregorianCalendar类中是一个静态的常量6,配合get()方法可以返回今天是今年的第几天
WEEK_OF_MONTH在GregorianCalendar类中是一个静态的常量4,配合get()方法可以返回这周是这个月的第几周
HOUR_OF_DAY在GregorianCalendar类中是一个静态的常量11,配合get()方法可以返回现在是今天的第几个小时
getTimeInMillis()该方法返回对象被创建的时间,和Date类中的getTime()用法相同

六. SimpDateFormate类

SimpDateFormate类用于将字符串和日期(Date类)进行相互转换

SimpDateFormate(String pattern)传入一种匹配模式,可以将字符串转为该模式的日期对象,也可以将日期对象转为该模式的字符串
parse(String s)将字符串转为日期对象
format(Date d)将日期对象转为字符串

  

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        /*
        把字符串日期转为Date对象
         */
        String s = "2003-02-03";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(s);
        System.out.println(date.getYear()+1900);

        /*
        把Date对象转为字符串
         */
        SimpleDateFormat sdf1 = new SimpleDateFormat("y-M-d H:m:s E");
        Date date1 = new Date();
        String s1 = sdf1.format(date1);
        System.out.println(s1);
    }
}

七. BigInteger类 

主要用于对大数的计算

add()加法运算
subtract()减法运算
multiply()乘法运算
divide()除法运算

 

public class BigIntegerDemo {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("111111111111111111111111111111111111");
        BigInteger bigInteger2 = new BigInteger("999999999999999999999999999999999999");

        BigInteger bigInteger3 = bigInteger1.add(bigInteger2);
        BigInteger bigInteger5 = bigInteger1.subtract(bigInteger2);
        BigInteger bigInteger4 = bigInteger1.multiply(bigInteger2);
        BigInteger bigInteger6 = bigInteger2.divide(bigInteger1);
        System.out.println(bigInteger1);
        System.out.println(bigInteger2);
        System.out.println(bigInteger3);
        System.out.println(bigInteger4);
        System.out.println(bigInteger5);
        System.out.println(bigInteger6);
    }
}

八. BigDecimal类

小数在计算机中存储时也是用二进制的形式,但有的十进制小数对小数部分采取乘2取整的方式时会发生无限不循环的情况,这就导致了计算机在表示小数时有时候只能近似表示的情况.例如:

public class Main {
    public static void main(String[] args) {
        double result = 1-0.7;
        System.out.println(result);
        if(result==0.3){
            System.out.println("相等");
        }else{
            System.out.println("不相等");
        }
    }
}

 

此时就需要使用到BigDecimal类,来对小数进行准确的计算

add()加法运算
subtract()减法运算
multiply()乘法运算
divide()除法运算

  

public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("0.7");
        BigDecimal bigDecimal2 = new BigDecimal("0.3");
        BigDecimal bigDecimal3 = bigDecimal1.add(bigDecimal2);
        BigDecimal bigDecimal4 = bigDecimal1.subtract(bigDecimal2);
        BigDecimal bigDecimal5 = bigDecimal1.multiply(bigDecimal2);
        BigDecimal bigDecimal6 = bigDecimal1.divide(bigDecimal2,5,1);
        System.out.println(bigDecimal3);
        System.out.println(bigDecimal4);
        System.out.println(bigDecimal5);
        System.out.println(bigDecimal6);
    }
}

这里注意计算除法时,可能会出现无限循环或者无限不循环的情况,这时会报错,所以注意除法的方法(divide)可以设置两个参数,一个divide(int scale,int roundingMode),scale表示小数点后保留几位小数,roundingMode是1表示舍去后面的位,是2表示进位在舍去后面的位

我们再来看上面的例子

public class Main {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("1");
        BigDecimal bigDecimal2 = new BigDecimal("0.7");
        BigDecimal bigDecimal3 = new BigDecimal("0.3");
        BigDecimal result = bigDecimal1.subtract(bigDecimal2);
        System.out.println(result);
        if(result.equals(bigDecimal3)){
            System.out.println("相等");
        }else{
            System.out.println("不相等");
        }
    }
}

 

注意:BigDecimal的构造方法中如果用到小数,一定要传字符串,而不是直接传该小数,否则计算机在转换时仍旧无法将该小数准确表示导致构造的BigDecimal对象也是一个不精确的 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767804.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D Gaussian Splatting代码中的train和render两个文件代码解读

现在来聊一聊训练和渲染是如何进行的 training train.py line 31 def training(dataset, opt, pipe, testing_iterations, saving_iterations, checkpoint_iterations, checkpoint, debug_from):# 初始化第一次迭代的索引为0first_iter 0# 准备输出和日志记录器tb_writer p…

滚珠花键促进汽车产业整体升级与发展!

滚珠花键能够实现高效的传动和连接&#xff0c;确保物体在运动过程中的精确位置和稳定性&#xff0c;被广泛应用于机械制造、航空航天、工业自动化、工业汽车、工业机器人、高速铁路等领域。为各个行业的发展提供了重要支持&#xff0c;尤其是在工业汽车领域中&#xff0c;为我…

数据库管理系统中的磁盘、文件、页和记录管理

1. 引言 数据库管理系统&#xff08;DBMS&#xff09;是一个复杂的软件系统&#xff0c;用于管理和操作数据库中的数据。DBMS需要有效地在磁盘和内存之间组织和管理数据&#xff0c;以确保高效的数据存储和检索。本文将详细介绍DBMS中关于磁盘、文件、页和记录的管理&#xff…

关于电子画册的制作方法

在这个数字化飞速发展的时代&#xff0c;电子画册以其便捷的分享方式和环保的理念&#xff0c;逐渐成为艺术家和设计师的新宠。如果你也想将自己的作品集或品牌故事以电子画册的形式呈现&#xff0c;那么就跟随我们的脚步&#xff0c;一起探索电子画册的制作方法吧&#xff01;…

鸿蒙开发设备管理:【@ohos.runningLock (Runninglock锁)】

Runninglock锁 该模块主要提供Runninglock锁相关操作的接口&#xff0c;包括创建、查询、持锁、释放锁等操作。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import runningLock f…

龙迅 国产原装 低成本高性能转换器 Type-C with 2lane@8.1Gbps/lane 4K60

2.一般说明 LT8711UXE1是一款高性能的Type-C/DP1.2至HDMI2.0转换器&#xff0c;设计用于将USBType-C源或DP1.2源连接至HDMI2.0收发器。该LT8711UXE1集成了一个DP1.2兼容接收器&#xff0c;和一个HDMI2.0兼容发射器。此外&#xff0c;还包括用于CC通信的两个CC控制器&#xff0c…

VS生成类图

VS生成类图 1、启动visualstudioinstaller&#xff0c;点击“单个组件“&#xff0c;“代码工具”&#xff0c;勾选”类设计器“。 2、右键要查看的项目&#xff0c;选“查看类图”

css---before和after伪元素

1.什么是伪元素 伪元素不是真正的页面元素&#xff0c;html没有对应的元素&#xff0c;但是其所有用法和表现行为与真正的页面元素一样&#xff0c;可以对其使用如页面元素一样的CSS样式&#xff0c;表面上看上去貌似是页面的某些元素来展现&#xff0c;实际上CSS样式展现的行…

揭秘JWT:从CTF实战到Web开发,py使用JWT令牌验证

揭秘JWT&#xff1a;从CTF实战到Web开发&#xff0c;使用JWT令牌验证 介绍 JWT&#xff08;JSON Web Tokens&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在网络上安全地传输信息。这种信息可以验…

Eclipse运行main函数报 launch error

右键run as java application&#xff0c;运行main函数的时候报launch error 解决方式&#xff1a;文件右键run configurations 旧的是Project JRE&#xff0c;改成下图这个样子

【Java学习笔记】java图形界面编程

在前面的章节中&#xff0c;我们开发运行的应用程序都没有图形界面&#xff0c;但是很多应用软件&#xff0c;如Windows下的Office办公软件、扑克牌接龙游戏软件、企业进销存ERP系统等&#xff0c;都有很漂亮的图形界面。素以需要我们开发具有图形界面的软件。 Java图形界面编程…

Linux线程:编织并发的梦幻世界

目录 &#x1f6a9;引言 &#x1f6a9;听故事&#xff0c;引概念 &#x1f6a9;生产者消费者模型 &#x1f680;再次理解生产消费模型 &#x1f680;挖掘特点 &#x1f6a9;条件变量 &#x1f680;条件变量常用接口 &#x1f680;条件变量的原理 &#x1f6a9;引言 上一篇…

学习LLM的随笔

1、信息量、信息熵、交叉熵和困惑度 &#xff08;1&#xff09;信息熵&#xff1a;信息熵中使用 l o g 2 ( p ( x ) ) log_2(p(x)) log2​(p(x)) 来表示对 x x x 编码需要的编码长度。由于不同事件发生的概率不同&#xff0c;我们不能简单地将这些信息量相加&#xff0c;而应…

Day01-02-gitlab

Day01-02-gitlab 1. 什么是gitlab2. Gitlab vs Github/Gitee3. Gitlab 应用场景4. 架构5. Gitlab 快速上手指南5.0 安装要求5.1 安装Gitlab组件5.3 配置访问url5.6 初始化5.8 登录与查看5.9 汉化5.10 设置密码5.11 目录结构5.12 删除5.13 500 vs 5025.14 重置密码 6. Gitlab用户…

springboot美术馆售票管理系统-计算机毕业设计源码17485

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 2.2.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

PMP报考条件是什么?很多人都没读懂...

最近正值8月份考试报名期&#xff0c;想计划考8月份考试的宝子可以准备起来了&#xff0c;下面是报名时间和考试安排 8月考试时间安排&#xff1a; &#x1f449;报名时间在7.9日—12日 &#x1f449;考试时间在8.31日&#xff08;周六&#xff09; 一、PMP报名条件是什么&am…

vue3中 slot使用

默认插槽&#xff1a; 这是最基本的插槽类型&#xff0c;当没有指定 name 属性时&#xff0c;插槽是默认插槽。 子组件&#xff1a; <template><div class"child"><h2>子组件内容</h2><slot></slot> <!-- 默认插槽&#x…

反射快速入门

反射就是通过字节码文件获取类的成员变量、构造方法和成员方法的所有信息。 利用反射&#xff0c;我们可以获取成员变量的修饰符、名字、类型、取值。我们可以获取构造方法的名字、形参&#xff0c;并利用通过反射获取的构造方法创建对象。我们可以获取成员方法的修饰符、名字、…

LeetCode 子集

原题链接78. 子集 - 力扣&#xff08;LeetCode&#xff09; 这是一道暴力搜索问题参考大佬们的题解&#xff0c;对这类题目做出一下总结 1.确定递归参数变量 2.递归结束条件 3.做出选择&#xff0c;递归调用进入下一层 4.回溯&#xff0c;返回到递归前的状态 要完成前面这…

2024Datawhale-AI夏令营——机器学习挑战赛——学习笔记

#ai夏令营#datawhale#夏令营 Day1:入门级demo运行 这个其实比较简单&#xff0c;按照操作来做就行了&#xff0c;特征工程和调参暂时都没有做&#xff0c;后续的才是重头戏。