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.cnSystem.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);//PISystem.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 时间戳qa2wesdrxftgyvhbujnkiDate 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.mzph.cn/pingmian/39881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蒙阴蜜桃节:北纬 35 度的甜蜜盛宴

蒙阴&#xff0c;这座位于北纬 35 度黄金水果带的魅力之城&#xff0c;凭借着沙壤土、长日照、大温差、好生态的天然禀赋&#xff0c;孕育出了令人陶醉的“蒙阴蜜桃——北纬 35 度的甜”。 7月2日—3日&#xff0c;主题为“蒙阴好丰景 桃香产业兴”的国家鲁中山区桃产业集群项目…

3d打开模型的时候怎么没有灯光?---模大狮模型网

在3D建模与渲染过程中&#xff0c;灯光是至关重要的元素之一&#xff0c;直接影响到最终场景的视觉效果和真实感。然而&#xff0c;有时打开3D模型时可能会发现缺乏适当的灯光设置&#xff0c;这会导致场景显得暗淡或平淡无奇。本文将探讨为何在打开3D模型时可能没有灯光的原因…

QGC添加添加QML可访问的单例

文章目录 前言一、添加文件二、修改qgroundcontrol.pro三、修改QGCApplication.cc四、修改QGroundControlQmlGlobal.h五、修改QGroundControlQmlGlobal.cc六、测试前言 QGC 4.2 一、添加文件 在src目录下添加文件夹SingletonTest,在里面新建SingletonTest.cc和SingletonTes…

OCR text detect

主干网络 VoVNet&#xff1a;实时目标检测的新backbone网络_vovnet pytorch-CSDN博客 DenseNet&#xff1a; arxiv.org/pdf/1608.06993 密集连接&#xff1a; DenseNet 的核心思想是将网络中的每一层与其前面的所有层直接连接。对于一个 L 层的网络&#xff0c;DenseNet 具有…

Git学习(常用的一些命令)

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 配置相关&#xff1a; 创建与克隆仓库&#xff1a; 基本操作&#xff1a; 分支操作&#xff1a; 远程仓库操作&#xff1a…

博客的部署方法论

博客写完后&#xff0c;当然是要发布到网络上的。如果想要部署到服务器上&#xff0c;则需编译构建成静态文件&#xff0c;然后将其上传到服务器上的路径&#xff08;该路径由我们自己决定&#xff09;&#xff0c;然后在 web 服务器&#xff08;Nginx 等&#xff09;上配置访问…

m4a如何改为mp3格式?这四种音频转换方法非常好用!

m4a如何改为mp3格式&#xff1f;在当下的生活中&#xff0c;音乐已经成为了人们疲惫时的一剂良药&#xff0c;它不仅可以舒缓心灵&#xff0c;还能够激发情感和启发思维&#xff0c;在众多音频文件格式中&#xff0c;m4a 作为一种常见的格式&#xff0c;备受广大音乐爱好者的青…

OpenCV 张氏标定法

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 “张正友标定法”是由张正友教授于1998年提出的单平面棋盘格的摄像头标定方法,该方法介于传统标定法和自标定法之间,克服了传统标定法需要高精度标定物的缺点,仅需要一个棋盘格即可。作为一种非常经典的相机内参标定…

VS开发QT程序图标修改

VS开发QT程序图标修改 1.双击打开UI界面 2.选择编辑资源 3.添加文件 4.选择ico文件 5.ok确定 6.点击保存 7.选择windowsIcon,倒三角图标 8.选择资源 9.选择图标&#xff0c;点击ok 10.保存 编译运行&#xff1a; 任务栏&#xff1a;

JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现BO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BO-Transformer-LSTM多变量回归预测&#xff0c;贝叶斯优化Transformer结合LSTM长…

农村生活污水处理监测系统解决方案

一、概述 随着国民经济的发展和农村生活水平的提高&#xff0c;农村生活用水量越来越大&#xff0c;随之而来的污水产量也越来越大&#xff0c;农村生活污染对环境的压力越来越明显。环境保护意识的逐渐增强&#xff0c;使得人们对青山绿水的希望更为迫切&#xff0c;为满足人民…

【Kali-linux for WSL】图形化界面安装

文章目录 前言图形化界面安装 前言 之前在WSL中安装了Kali 启动之后发现什么都没有&#xff01;&#xff01;&#xff01; 那我还怎么学习渗透技术&#xff1f;&#xff1f;&#xff1f; 看来&#xff0c;得改进下我的kali-linux for wsl&#xff0c;安装个图形化界面 图形化…

Omniverse、Isaac Sim、Isaac Lab入门必会之 Nucleus 部署

新手入门Omniverse、Isaac Sim、Isaac Lab时经常发现&#xff0c;要想跑通例程&#xff0c;总是usd等资源加载不出来&#xff0c;软件傻傻的进程阻塞卡在那里&#xff0c;点两下就崩溃&#xff0c;这对新手来说非常的不友好&#xff0c;这都是由于没有安装 Nucleus 或者 Nucle…

蓝蜂网关接入雄安新区物联网统一开放平台应用案例

蓝蜂网关接入雄安新区物联网统一开放平台案例 一、应用背景 为响应国家《河北雄安新区规划纲要》&#xff0c;由中国雄安集团数字城市科技有限公司牵头&#xff0c;以中移物联网有限公司为牵头单位的联合体&#xff0c;构建了雄安新区物联网统一开放平台&#xff08;简称雄安…

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 系统总体设…

第三方软件测试公司分享:软件渗透测试的测试内容和注意事项

软件渗透测试是一种通过模拟攻击的方式来评估软件系统的安全性和漏洞&#xff0c;以发现并修复系统中的安全弱点。保护用户的数据和信息不被恶意攻击者利用&#xff0c;也是软件产品开发流程中重要的环节&#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用户…

迅睿CMS 后端配置项没有正常加载,上传插件不能正常使用

首先&#xff0c;尝试迅睿CMS官方提供的【百度编辑器问题汇总】解决方案来解决你的问题。你可以访问这个链接&#xff1a;官方解决方案。 如果按照【百度编辑器问题汇总】解决方案操作后&#xff0c;依然遇到“后端配置项没有正常加载&#xff0c;上传插件不能正常使用”的问题…

昇思第8天

保存与加载 保存模型使用save_checkpoint接口&#xff0c;传入网络和指定的保存路径 要加载模型权重&#xff0c;需要先创建相同模型的实例&#xff0c;然后使用load_checkpoint和load_param_into_net方法加载参数。 使用静态图加速 AI编译框架分为两种运行模式&#xff0c…

择校秘籍:如何找到口碑爆棚的学校?以星贝育园为例

在为孩子选择学校时&#xff0c;家长们总是慎之又慎&#xff0c;希望能找到一所口碑好、教育质量高的学校&#xff0c;为孩子的未来奠定坚实的基础。今天&#xff0c;我们就以星贝育园为例&#xff0c;来探讨一下如何选择口碑好的学校。 一、考察师资力量 优秀的教师团队是一所…