Java中的常用类(三)

一、正则表达式

正则表达式 regex,全称Regular Expression。正则表达式是一种规则(模式)匹配语法
可以使用一些正则表达式中的特殊符号来定义一种规则,然后用此规则匹配某个字符,如果字符串与规则匹配则返回true,不匹配返回false。
其常用方法如下:
\\d 匹配数字 \\D匹配非数字 \\w 匹配数字字母下划线  \\W 匹配非数字 字母 下划线
\\s匹配空格 \\非空格 |逻辑或 .匹配任意字符 使用时需要转义 []表示范围 {}表示数量
*零或多 +一或多 ?最多1

大多常用情景可以在网上搜索生成拿来使用,本文提供相关网站为

https://www.sojson.com/regex/generate    生成regex
        String s="a";System.out.println(s.matches("b"));//定义s里是否有b/*//数字*/String s1="123456";//定义s里只能有数字,但是数字只能有一次,[]表示范围System.out.println(s1.matches("[0-9]"));//*表示允许零次或多次出现数字System.out.println(s1.matches("[0-9]*"));//+表示至少一次出现数字System.out.println(s1.matches("[0-9]+"));//?表示至多一次出现数字System.out.println(s1.matches("[0-9]?"));//{num}必须有几次,本例中表示0-9必须有三位System.out.println(s1.matches("[0-9]{3}"));//第一位是1,后面三位数字System.out.println(s1.matches("1[0-9]{3}"));//{num1,num2}表示区间System.out.println(s1.matches("[0-9]{3,6}"));//只允许出现357System.out.println(s1.matches("[357]{3}"));//  \\d表示数字、\\D表示非数字System.out.println(s1.matches("\\d{3,6}"));System.out.println(s1.matches("\\D{3,6}"));//验证手机号String phoneNum="13691309195";System.out.println(phoneNum.matches("1[3578]\\d{9}"));/*//字母*/String eng ="abcdABCD";System.out.println(eng.matches("[a-z]*"));System.out.println(eng.matches("[A-Z]*"));System.out.println(eng.matches("[a-zA-Z]*"));//编码中A比a小System.out.println(eng.matches("[A-z]*"));//数字加字母加下划线System.out.println(eng.matches("\\w*"));//允许System.out.println(eng.matches("\\W*"));//不允许/*//空格*/String k =" ";System.out.println(k.matches("\\s"));//例子 :邮箱 xxxxxxx@xxx.com 或者xxxxxx@xxxx.com.cnString s3 = "1790352490@qq.com";System.out.println(s3.matches("\\w{6,10}" +// .有特殊含义 需要转义"@[0-9A-z]{2,6}\\.(com|com\\.cn)"));

二、Date类和Calendar 类

1、Date类

   Date类是 Java 中表示日期和时间的类,可以用来获取和设置日期和时间的各个部分,比如年、月、日、小时、分钟、秒等。Date 类也可以用于日期和时间的计算、比较和格式化。

方法:

1、构造方法:

Date date = new Date();

2、获取时间

System.out.println(date.getTime());

此时获取的时间是自1900年1月1日到构造方法运行时的毫秒数,通常需要定义1个long类型的变量来接收。

这时候有人就要说了,我要这个毫秒数有什么用呢?其实是有大用处的,当我们想要测试运行效率时,可以这样做

例如我们要测试String类和StringBuffer类各自拼接十万次的运行效率,可以这样

//要求:测试String字符串和StringBuffer字符串循环拼接10万次,程序运行耗时.    public static void main(String[] args) {String string =new String("abc");Date date1=new Date();for (int i=0;i<100000;i++){string +="a";}Date date2=new Date();System.out.println("String 拼接十万次用时:");System.out.println(date2.getTime()-date1.getTime());StringBuffer stringBuffer=new StringBuffer("abc");Date date3 =new Date();date3.getTime();for (int i=0;i<100000;i++){stringBuffer.append("a");}Date date4 =new Date();System.out.println("StringBuffer 拼接十万次用时:");System.out.println(date4.getTime()-date3.getTime());}

这时我们可以明显发现,StringBuffer拼接效率高于String类,这也源自与他底层没有final限制

2、toString方法

打印程序运行开始的那一时刻

3、getYear();getMonth();getDay();

这三个方法已启用需要自己手动“配平”

 System.out.println(date.getYear()+1900);//2024System.out.println(date.getMonth()+1);//3System.out.println(date.getDay());//6 显示周几

非常难用

所以在使用这些功能时,推荐使用Calendar类的方法

3、时间戳

//传入运行时的毫秒数可以转回具体时间  1709376357241称为时间戳Date date2 = new Date(1709376357241L);System.out.println(date2);//Sat Mar 02 18:45:57 CST 2024

当构造函数时传入时间戳时,可以返回获取时间戳时的时间

时间戳就是我们在getTime时获取的一大串毫秒数

2、Calendar类 

刚刚讲到,我们在用Date类获取时间时相当的麻烦,而且其相关方法都已经弃用了,这里Java给我们提供了更加方便的包,日历Calendar类

1、构造方法:

Calendar calendar=Calendar.getInstance();

2、相关方法

System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)+1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天是月的第几天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);//是周的第几天,老外周日是第一天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//年的第几天
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));//年的第几周
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));//月的第几周//设置时间
calendar.set(year,month,date);

相当的方便

3、Math类与Random类

见名知意,这两个类中为我们提供了数学与随机数的相关方法

 System.out.println(Math.PI);//Π的值System.out.println(Math.abs(-1));//求绝对值System.out.println(Math.sqrt(9));//开方System.out.println(Math.pow(2,3));//n次幂System.out.println(Math.max(1,2));//返回最大值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.random());//返回[0,1)之间的随机数

 

public class RandomDemo {static Random random=new Random();public static void main(String[] args) {System.out.println(random.nextBoolean());//布尔值随机数System.out.println(random.nextInt());//int型随机数System.out.println(random.nextLong());//long型随机数System.out.println(random.nextInt(5));//给定范围,[0,范围)随机整数}
}

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

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

相关文章

【Docker1】Docker镜像和容器基本操作

Docker基本管理一、Docker概述1、为什么要用到容器&#xff1f;2、Docker是什么&#xff1f;3、Docker的设计宗旨4、容器的优点5、Docker与虚拟机的区别6、Docker的三大核心概念 二、安装Docker1、yum安装2、二进制安装 三、Docker镜像创建与操作1、Docker 镜像操作1.1 搜索镜像…

【JavaEE进阶】Spring中事务的实现

文章目录 &#x1f343;前言&#x1f334;事务简介&#x1f6a9; 什么是事务?&#x1f6a9;为什么需要事务?&#x1f6a9;事务的操作 &#x1f340;Spring 中事务的实现&#x1f6a9;Spring 编程式事务&#x1f6a9;Spring声明式事务Transactional&#x1f6a9;Transactional…

数字人民币钱包(二)

文章目录 前言一 什么是数字人民币钱包&#xff1f;二 怎么开通数字人民币钱包&#xff1f;三 数字人民币钱包有哪些&#xff1f;四 数字人民币钱包升级 前言 上篇文章梳理了什么是数字人民币&#xff0c;及其特征和相关概念&#xff0c;这篇文章来整理下数字人民币钱包。数字人…

selenium常用操作汇总

本文总结使用selenium进行web/UI自动化时&#xff0c;会用到的一些常用操作。 定位元素 driver.find_element_by_xpath()#1、绝对路径 2、元素属性 3、层级和属性结合 4、使用逻辑运算符 driver.find_element_by_id()#根据id定位&#xff0c;HTML规定id属性在HTML文档中必须是唯…

App拉起微信小程序参考文章

App拉起微信小程序参考文章h5页面跳转小程序-----明文URL Scheme_weixin://dl/business/?appid*appid*&path*path*&qu-CSDN博客文章浏览阅读561次&#xff0c;点赞16次&#xff0c;收藏5次。仅需两步&#xff0c;就能实现h5跳转小程序&#xff0c;明文 URL Scheme&…

vue2 vue-cli vue-router vuex

Vue2 插值表达式 利用表达式进行插值渲染&#xff0c;将数据渲染到页面中。 语法&#xff1a;{{ 表达式 }} PS&#xff1a; 使用的数据要存在支持的是表达式&#xff0c;不是语句 if、for不能在标签属性中使用{{ }} v-show和v-if v-show底层原理&#xff1a;切换css的dis…

SRC学习-成为赏金猎人

你是否对漏洞挖掘充满好奇&#xff1f;零基础或有基础但想更进一步&#xff1f;想赚取可观的漏洞赏金让自己有更大的自由度&#xff1f; 那么&#xff0c;不妨了解下土拨鼠的安全屋 这或许也是你成为漏洞赏金猎人的第一课。 逻辑漏洞挖掘手法与创新思路&#xff0c;带你突破…

@EnableWebMvc介绍和使用详细demo

EnableWebMvc是什么 EnableWebMvc 是 Spring MVC 中的一个注解&#xff0c;它用于启用 Spring MVC 框架的基本功能&#xff0c;以便你可以使用 Spring MVC 提供的特性来处理 Web 请求。 通常情况下&#xff0c;在基于 Spring Boot 的应用中&#xff0c;并不需要显式地使用 Ena…

GC--垃圾回收

目录 垃圾回收概念 什么是垃圾? 垃圾回收机制什么时候会进行GC&#xff1f;&#xff1f; 应该关心垃圾回收那些哪些区域的回收 垃圾回收相关算法 垃圾回收算法&#xff1a;[标记阶段、回收阶段] 垃圾标记阶段 标记阶段的目的 引用计数算法&#xff08;目前没有在使用&…

实现类似 Word 协同编辑--Canvas-Editor

前言 对于word的协同编辑&#xff0c;已经构思很久了&#xff0c;但是没有找到合适的插件。今天推荐基于canvas/svg 的富文本编辑器 canvas-editor&#xff0c;能实现类似word的基础功能&#xff0c;如果后续有更好的&#xff0c;也会及时更新。 Canvas-Editor效果图: 官方文…

FFmpeg--AAC音频解码流程

文章目录 AAC 组成函数分析读aac帧写aac帧aac的head参数设置 运行结果 AAC 组成 AAC音频格式&#xff1a;是⼀种由MPEG-4标准定义的有损⾳频压缩格式 ADTS:是AAC音频的传输流格式 AAC音频文件的每一帧由ADTS Header和AAC Audio Data组成 每⼀帧的ADTS的头⽂件都包含了⾳频的采…

llama-index调用qwen大模型实现RAG

背景 llama-index在实现RAG方案的时候多是用的llama等英文大模型&#xff0c;对于国内的诸多模型案例较少&#xff0c;本次将使用qwen大模型实现llama-index的RAG方案。 环境配置 &#xff08;1&#xff09;pip包 llamaindex需要预装很多包&#xff0c;这里先把我成功的案例…

计算机网络——概述

计算机网络——概述 计算机网络的定义互连网&#xff08;internet&#xff09;互联网&#xff08;Internet&#xff09;互联网基础结构发展的三个阶段第一个阶段——APPANET第二阶段——商业化和三级架构第三阶段——全球范围多层次的ISP结构 ISP的作用终端互联网的组成边缘部分…

Python 映射函数map()详解

一、映射函数定义 它用于对容器中的元素进行映射&#xff08;或变换&#xff09; 二、映射函数语法 map(function, iterable) function&#xff1a;一个提供变换规则的函数&#xff0c;返回变换之后的元素iterable&#xff1a;一个或多个序列&#xff08;可迭代对象&#xff09…

新零售SaaS架构:订单履约系统架构设计(万字图文总结)

什么是订单履约系统&#xff1f; 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。 它连接了上游交易&#xff08;客户在销售平台下单环&#xff09;和下游仓储配送&#xff08;如库存管理、物流配送&#xff09;&#xff0c;确保信息流顺畅、操作协同&…

【ElasticSearch】es索引、映射、文档基本操作复杂查询

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的ElasticSearch专栏&#xff0c;本篇博客由B战尚硅谷的ElasticSearch视频总结而来&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f306; 内容速览 1 es数据格…

【node版本问题】运行项目报错 PostCSS received undefined instead of CSS string

最近该项目没有做任何修改&#xff0c;今天运行突然跑不起来报错了 PostCSS received undefined instead of CSS string 【原因】突然想起来期间有换过 node 版本为 16.17.1 【解决】将 node 版本换回之前的 14.18.0 就可以了

vue3中基于路由层面和组件层面进行用户角色及权限控制的方法解析

文章目录 一、权限控制二、路由层面控制三、组件层面控制1、使用自定义指令2、使用方法控制3、封装一个权限控制组件来实现组件层面控制权限3.1、组件页面 Authority.vue3.2、使用页面 app.vue3.3、效果预览 一、权限控制 随着前端技术的不断发展&#xff0c;越来越多的前端框…

Linux命令记不住?保姆级教程来了

在软件开发过程中&#xff0c;Linux操作系统因其稳定性、安全性和高效性而备受青睐。作为开发者&#xff0c;熟练掌握Linux常用命令&#xff0c;不仅可以提高工作效率&#xff0c;还能更好地管理服务器和进行代码部署。本文将介绍一些开发常用的Linux命令及其应用场景&#xff…

JavaScript数组常见实例方法:forEach、filter、map、reduce、find、every等

博客背后的故事 其实我23年7月就学过这些数组方法了&#xff0c;但是为什么24年3月才做笔记呢&#xff1f;这就要讲一个小故事了&#xff08;不想听故事的同学自行拖动滚动条&#xff09; 24年年初我和两个队友合作开发一个小程序。JavaScript中数组的实例方法我已经学了很久…