两者都可以实现正则表达式匹配,比如:

   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() 的区别相关推荐

  1. java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()

    问题:程序会计算表达式的值 //将数值转换以K为单位 String value = "10*1000*1000"; String regex="\\s*\\*\\s*10 ...

  2. Matcher.matcher()与Matcher.find()的区别

    关于实际项目中的应用,可见我另一篇博文:https://blog.csdn.net/weixin_40841731/article/details/82983625 Pattern pattern = ...

  3. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  4. php 有 stringbuffer,string,stringbuffer以及stringbuilder的区别

    string,stringbuffer以及stringbuilder的区别? 小编在一次电话面试中,被问过StringBuilder是线程安全的吗,脱口而出是安全的,结果人家质疑我你是2年开发经验吗. ...

  5. JavaSE(二十五)——String与StringBuffer、StringBuilder的区别、创建对象的几种方法、Http和Https的区别

    文章目录 1. String与StringBuffer.StringBuilder的区别 2. Java创建对象的几种方法 3. Http和Https的区别 1. String与StringBuffe ...

  6. std::string的resize()与reserve()的区别

    std::string的resize()与reserve()的区别: resize():改变的是size()与capacity()的大小 (1).比原来的变小之后,后面的会被截断 (2).比原来的变大 ...

  7. String、StringBuilder和StringBuffer的区别和用法

    分别使用使用这三种来拼接字符串,对比各自损耗的时间: 经过测试: package com.test;public class Main{public static void main(String[] ...

  8. NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别

    Navicat mysql 建表字段 默认值.empty string.空白.NULL 的区别 总结在最后,没啥干货 简单测试了4种类型 bigint tinyint varchar char 单引号 ...

  9. String String.valueof() toString三者之间的区别~

    String  String.valueof()  toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...

最新文章

  1. Linux监控软件之 Cacti
  2. 51Nod 1298 圆与三角形相交 计算几何
  3. C#打印0到100的素数
  4. qt 程序windows 上发布
  5. Maven依赖Scope标签用法
  6. c语言中用文件处理数据,C语言文件处理 -C语言从文件中读写格式化数据
  7. 华为tsm_台积电:如果不能向华为销售芯片,其他订单可快速取代华为空缺
  8. 怎么实现hover_写CSS动效的常用套路(附demo的效果实现与源码)
  9. 细胞亚器互作之细胞代谢调节液泡与线粒体的接触位Cellular Metabolism Regulates Contact Sites between Vacuoles and Mitochondria
  10. 论中国智慧城市的发展前景
  11. studio 3T 使用
  12. 统计 fastq 文件 q20 , GC 含量的软件
  13. LIO-SAM论文与代码阅读笔记(二)代码阅读:imuPreintergration.cpp和imageProjection.cpp
  14. 学Java第十三天(至Map)
  15. 信息二处的面上项目252项
  16. 叶成-人员管理-机构管理
  17. 动态规划(4)滑雪问题
  18. 华为从服务器获取安装包信息失败,华为系统恢复获取安装包信息失败
  19. 安徽省计算机二级考试教程,安徽省计算机二级自学教程推荐:Access(2018年版)
  20. quertus2逻辑或、与、或与、异或门电路verilog代码及ModelSim中testbench文件更换内容

热门文章

  1. 微服务中常用的限流算法(一)
  2. 字符类型 char 的值域
  3. 阻击iPad! --十款热门大屏触控手机
  4. Dtree目录树的总结
  5. node 多版本管理(mac)
  6. PhotoView 缩放 使用
  7. 什么叫电脑高手,进来看看?
  8. 深圳最高的山有多高?用双脚去寻找答案
  9. 12306订票抢票攻略:2013春节我要回家
  10. 神经网络可解释性、深度学习新方法,2020 年 AI 有哪些势不可挡的研究趋势?...