Java中Integer缓存机制和正则表达式在QQ号码验证中的应用
需积分: 10 187 浏览量
更新于2024-07-19
收藏 185KB DOCX 举报
正则表达式、其他API
正则表达式是一种强大的字符串模式匹配工具,广泛应用于各种编程语言中。在Java中,正则表达式主要通过java.util.regex包中的Pattern和Matcher类来实现。正则表达式可以用来验证用户输入的数据、提取特定模式的字符串、替换字符串等。
在上面的代码中,我们可以看到一个验证QQ号码的示例。QQ号码是纯数字组成,长度在5到12位之间,不能以0开始。我们可以使用正则表达式来验证用户输入的QQ号码是否正确。下面是示例代码:
```java
public class QQCheckDemo {
public static void main(String[] args) {
// 获取录入的QQ号码
Scanner sc = new Scanner(System.in);
System.out.println("请输入QQ号码:");
String qq = sc.next();
// 使用正则表达式验证QQ号码
String regex = "^[1-9][0-9]{4,11}$";
if (qq.matches(regex)) {
System.out.println("QQ号码正确!");
} else {
System.out.println("QQ号码不正确!");
}
}
}
```
在上面的代码中,我们使用了正则表达式`^[1-9][0-9]{4,11}$`来验证QQ号码。这个正则表达式的解释如下:
* `^`:表示字符串的开始
* `[1-9]`:表示第一个字符不能是0,必须是1到9之间的数字
* `[0-9]{4,11}`:表示后面跟着4到11个数字
* `$`:表示字符串的结束
如果用户输入的QQ号码匹配这个正则表达式,那么就输出"QQ号码正确!",否则输出"QQ号码不正确!"。
在Java中,我们还可以使用其他API来实现字符串的验证和提取。例如,我们可以使用java.lang.String类中的matches方法来验证字符串是否匹配某个正则表达式。
```java
String str = "hello world";
String regex = ".*";
if (str.matches(regex)) {
System.out.println("字符串匹配!");
} else {
System.out.println("字符串不匹配!");
}
```
在上面的代码中,我们使用了正则表达式`.*`来匹配任何字符串。如果字符串str匹配这个正则表达式,那么就输出"字符串匹配!",否则输出"字符串不匹配!"。
此外,我们还可以使用java.util.regex包中的Pattern和Matcher类来实现字符串的验证和提取。
```java
String str = "hello world";
Pattern pattern = Pattern.compile("hello");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println("字符串匹配!");
} else {
System.out.println("字符串不匹配!");
}
```
在上面的代码中,我们使用了Pattern类的compile方法来编译正则表达式,得到一个Pattern对象。然后,我们使用Matcher类的find方法来查找字符串中是否存在匹配的子串。如果找到匹配的子串,那么就输出"字符串匹配!",否则输出"字符串不匹配!"。
正则表达式是Java中的一种强大的字符串模式匹配工具,广泛应用于各种编程场景中。
在Integer类中定义了成员内部类IntegerCache,用于缓存-128到127之间的Integer对象。当我们使用Integer类型的数据时,JVM会自动加载IntegerCache内部类,并将-128到127之间已经存在的对象的地址赋值给我们的程序中的引用变量。如果我们需要使用-128到127之间的Integer类型的数据时,JVM不会再将这些数据封装成对象,而是直接从IntegerCache内部维护的那个数组中找到已经存在的对象。
在上面的代码中,我们可以看到一个示例,演示了IntegerCache的工作原理:
```java
public class Test {
public static void main(String[] args) {
Integer i = -128;
Integer i2 = -128;
// 下面两行代码,其实并没有单独的去封装Integer对象,而是找缓存中的对象
System.out.println(i == i2); // true
Integer i3 = -129;
Integer i4 = -129;
// 下面两行代码,指定的数据由JVM单独去封装成Integer对象
System.out.println(i3 == i4); // false
Integer i5 = new Integer(127);
Integer i6 = new Integer(127);
System.out.println(i5 == i6); // false
}
}
```
在上面的代码中,我们可以看到,当我们使用-128到127之间的Integer类型的数据时,JVM会从IntegerCache内部维护的那个数组中找到已经存在的对象,而不是单独封装成对象。如果我们使用-129这种超出范围的数据时,JVM就会单独封装成对象,而不是从缓存中找到已经存在的对象。
266 浏览量
448 浏览量
170 浏览量
2014-07-09 上传
116 浏览量
点击了解资源详情
249 浏览量
173 浏览量
204 浏览量
frank_20080215
- 粉丝: 166
最新资源
- 奥斯卡桂:Angular CLI 项目开发快速入门指南
- 芯片制造中倒装焊技术的设备与解决方案解析
- Go开发的cmus歌词查看器
- PracticalShootingSimulatorWindows隐私政策概述
- 企业数字神经网络系统:营销人员的学习利器
- Bo-Blog新年模板发布,独特设计引领网页潮流
- React项目迁移指南:Create React App快速入门
- Java源码实例:FontSelection功能实现与源码分析
- 企业战略实施与价值最大化指南
- 使用Go开发的Bladerunner实现远程SSH命令行自动化
- 验证通2010示例net版源代码深度解析
- Primefaces UI SNMP流量监控器部署于Wildfly容器
- Golang打造去中心化网络存档工具Hermes-Archiver
- 《公司用电组组长行为规范考评表》深度分析与应用指南
- 安卓应用开发:实现连续GPS定位绘制功能
- 化学机械抛光技术与SiO2抛光浆料研究新进展