Java编程思想之字符串

1.不可变String

String对象是不可变的。String类中每一个看起来会修改String值的的方法,实际上都创建了一个全新的String对象,以包含修改后的字符串的内容。而最初的String对象则丝毫未动。

String作为方法入参时,实际传递的是引用的一个拷贝。

操作符重载的意思是,当一个操作符在应用于特定的类时,被赋予了特殊的意义(Java不允许程序员重载任何操作符)

2.String的“+”操作符是本质是通过StringBuilder的append方法实现的。

3.打印对象的内存地址,需要调用super.toString();

4.格式化输出:

d整数型(十进制)
cUnicode字符
bBoolean值

sString
f浮点数(十进制)
e浮点数(科学计数法)
x 整数(十六进制)
h 散列码(十六进制)
% 字符“%”

5.String.format()格式化字符串

6.正则表达式

字符类

* 任意字符

[abc] 包含a、b和c的任意字符

[^abc] 除了a、b和c之外的任意字符(否定)

[a-zA-Z] 从a-z或者从A-Z的任意字符(范围)

[abc[hij]] 任意a、b、c、h、i和j的字符(合并)

[a-z&&[hij]] 任意h、i和j字符(交)

\s 空白符()

\S 非空白符

\d 数字[0-9]

\D 非数字[0-9]

\w 词字符[a-zA-Z0-9]

\W 非词字符

^ 一行的起始

$ 一行的结束

\b 词的边界

\B 非词的边界

\G 前一个匹配的结果

6.1基础

在Java的正则表达式中\\的意思是,我想在正则表达式中插入一个正则表达式的反斜杠,所以其后面的字符具有特殊的意义。"

\\d 表示一位数字

\\\\表示一个\

+ 一个或多个之前的表达式

-?\\d+ 负数,后面跟着一个或者多个数字

应用表示是最简单的途径,就是运用String内建的功能

"-1234".matches("-?\\d+") //true

"5678"matches("-?\\d+") //true

"+911"matches("-?\\d+") //false

"+911"matches("(-|\\+)?\\d+") //true

String类自带的正则表达式工具:

split() 将字符串从正则表达式匹配的地方切开

replaceFirst() 替换匹配到的第一个

replaceAll()替换匹配到的所有

6.2创建正则表达式

Pattern和Matcher类

String reg = “abc+”;
String str = "abcabcabcdefabc";
Pattern p = Pattern.compile(reg);
Mathcher m = p.matcher(str);

Pattern对象表示编译后的正则对象。

static方法matches(String reg,CharSequence input),用以检查regex是否匹配整个CharSequence类型的input参数

split方法,返回分割后字符串的String数组

Matcher方法

matches()判断整个输入字符串是否匹配正则表达式

lookingAt()判断部分是否匹配

find()用来查找多个匹配,像迭代器那样前向遍历输入字符串

find(i)表示从i处开始查找

组是用括号划分的正则表达式,可以根据某个组的编号,来引用某个组。组号0表示整个表示式,组号1表示被第一队括号括起来的组

A(B(C))D

组0 ABCD

组1 BC

组3 C

start()返回先前匹配的起始位置的索引

end()返回所匹配的最后一个字符的索引加一

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值