Java学习-之String深入和正则表达式
文章目录
引出
String的是怎么创建的,为什么==不能用来比较比较字符串相等
一、String的创建
String str = new String(“hello”);
String str = “hello”;
1.String str = new String(“hello”);
执行上述代码,底层进行了如下工作,在栈内存里存放变量str,在堆内存新创建一个String的对象,在常量池空间中创建常量hello,如果存在则不创建;创建了一个或两个对象。
String str = new String("hello");
2.String str = “hello”;
String str = "hello";
二、String的特点
1.String的内容
String的内容是不可写的,调用String的方法,会产生一个新的字符串
2.String的==和equals
- 基本类型:==相等
- 引用类型:==两个引用是否指向同一个对象
- 字符串比较相等,用equals,比较内容是否相等
带来的问题,字符串拼接的效率问题,每次拼接都会产生新的字符串,如何优化
三、如何提高字符串拼接操作的效率?
1.StringBuilder
实现字符串高效拼接
StringBuilder str = new StringBuilder("hello");
long t1 = System.currentTimeMillis(); // 当前毫秒数
for (int i = 0; i < 100000; i++) {
str.append(" world ");
}
long t2 = System.currentTimeMillis();
System.out.println("耗时:"+(t2-t1)+"ms");
四、正则表达式
表达式 | 作用 |
---|---|
[0-9] | :0-9的一个数字 |
[a-z] | 小写字母 |
[A-Z] | 大写字母 |
[a-zA-Z]: | 大小写字母 |
[^0-9] | 非数字 |
+ | 最少一个 |
{n} | 只有n个 |
{n,m} | n到m之间 |
? | 0个或一个 |
判断身份证号是否合法
// 判断身份证号码是否合法
String identity = "154258412707828487g";
String regex = "[1-9][0-9]{16}[0-9Xx]"; // 首位不能为0,末尾为X,x数字;
System.out.println(identity.matches(regex));
中文字符的编码范围\u4e00-\u9f85
// 输入一个随意的字符串,找出里面的所有中文字符。
String inputCinese = "你好saldf猫猫的饭盆2938930 来说较大了";
String regexChina = "[^\u4e00-\u9f85]";
String allChinese = inputCinese.replaceAll(regexChina,"");
System.out.println("找到所有中文字符如下:"+allChinese);
判断邮箱的合法性
// 判断邮箱的合法性
String email = "AWD83456a465234@qq.com";
String regex = "[0-9a-zA-Z]+[@]{1}[a-z]{1,5}[.]{1}[a-z]{3,10}";
System.out.println("邮箱合法性:"+email.matches(regex));
总结
1.String是如果实现的,拼接字符串的高效方法;
2.正则表达式初步;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/165173.html