String.matches() 与 Matcher.matches() 的区别
两者都可以实现正则表达式匹配,比如:
public static boolean isNumber(String s){Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");return pattern.matcher(s).matches();}
和
public static boolean isNumber(String s){return s.matches("^[-\\+]?[.\\d]*$");}
好像都能得到同样的效果。而且查看String.matches()源码,实际上String.matches()内部也是调用Matcher.matches() :
public boolean matches(String regex) {return Pattern.matches(regex, this); }
public static boolean matches(String regex, CharSequence input) {Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);return m.matches(); }
但两者还是有区别的。
如果你是对多个字符串进行匹配,那还是用Matcher.matches(),因为Pattern.compile()将正则表达式已经编译好,一次编译多次运行。而如果调用String.matches() ,则针对每个字符串都需要编译一下正则,即使正则表达式的内容都是一样的,效率会有些低。
比如上边的代码改成这样:
public static boolean isNumberAll(List<String> list){Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");for (String s : list) {if(!pattern.matcher(s).matches()) return false; }return true; }
当然Patter与Matcher的组合还有一些其他的功能,这里不细说。
String.matches() 与 Matcher.matches() 的区别相关推荐
- java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()
问题:程序会计算表达式的值 //将数值转换以K为单位 String value = "10*1000*1000"; String regex="\\s*\\*\\s*10 ...
- Matcher.matcher()与Matcher.find()的区别
关于实际项目中的应用,可见我另一篇博文:https://blog.csdn.net/weixin_40841731/article/details/82983625 Pattern pattern = ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
- php 有 stringbuffer,string,stringbuffer以及stringbuilder的区别
string,stringbuffer以及stringbuilder的区别? 小编在一次电话面试中,被问过StringBuilder是线程安全的吗,脱口而出是安全的,结果人家质疑我你是2年开发经验吗. ...
- JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别
文章目录 1. String与StringBuffer.StringBuilder的区别 2. Java创建对象的几种方法 3. Http和Https的区别 1. String与StringBuffe ...
- std::string的resize()与reserve()的区别
std::string的resize()与reserve()的区别: resize():改变的是size()与capacity()的大小 (1).比原来的变小之后,后面的会被截断 (2).比原来的变大 ...
- String、StringBuilder和StringBuffer的区别和用法
分别使用使用这三种来拼接字符串,对比各自损耗的时间: 经过测试: package com.test;public class Main{public static void main(String[] ...
- NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
Navicat mysql 建表字段 默认值.empty string.空白.NULL 的区别 总结在最后,没啥干货 简单测试了4种类型 bigint tinyint varchar char 单引号 ...
- String String.valueof() toString三者之间的区别~
String String.valueof() toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...
最新文章
- Linux监控软件之 Cacti
- 51Nod 1298 圆与三角形相交 计算几何
- C#打印0到100的素数
- qt 程序windows 上发布
- Maven依赖Scope标签用法
- c语言中用文件处理数据,C语言文件处理
-C语言从文件中读写格式化数据
- 华为tsm_台积电:如果不能向华为销售芯片,其他订单可快速取代华为空缺
- 怎么实现hover_写CSS动效的常用套路(附demo的效果实现与源码)
- 细胞亚器互作之细胞代谢调节液泡与线粒体的接触位Cellular Metabolism Regulates Contact Sites between Vacuoles and Mitochondria
- 论中国智慧城市的发展前景
- studio 3T 使用
- 统计 fastq 文件 q20 , GC 含量的软件
- LIO-SAM论文与代码阅读笔记(二)代码阅读:imuPreintergration.cpp和imageProjection.cpp
- 学Java第十三天(至Map)
- 信息二处的面上项目252项
- 叶成-人员管理-机构管理
- 动态规划(4)滑雪问题
- 华为从服务器获取安装包信息失败,华为系统恢复获取安装包信息失败
- 安徽省计算机二级考试教程,安徽省计算机二级自学教程推荐:Access(2018年版)
- quertus2逻辑或、与、或与、异或门电路verilog代码及ModelSim中testbench文件更换内容