标签:buffer compile insert 插入 end lag 字符串常量 表达 多行模式
String(byte[] bytes) | 将字节数组bytes按照默认的编码方式构造一个字符串对象 |
String(byte[] bytes,int offset,int length) | 从offset索引开始... |
String(byte[] bytes,String charserName) | 按照指定的字符集...该构造器可能会抛出异常 |
String(byte[] bytes,int offset,int length,String charsetName) | ... |
String(char[] value) | ... |
String (char[] value ,int offset , int count) |
CharAt() | |
toCharArray() | 将字符串转为char[] |
concat(String s) | 字符串拼接 |
equals() | |
equalsIgnore() | |
length() | |
replace(char oldChar,char newChar) | 用newChar替换所有的oldChar |
substring(int begin) | 截取索引从begin开始的所有.. |
substring(int begin ,int end) | 截取索引从begin到end的子串 |
toLowerCase() | |
toUpperCase() | |
trim() |
public string intern(); //从普通堆中的对象找到字符串常量池中对应的对象
1. JVM将内存分为两个部分【堆】【栈】,在堆中存放的是创建的对象,栈中存放的为方法调用过程中的局部变量或引用。
2.对于java字符串的处理,其又在堆中开辟了一块小的内存【字符串常量池】,用于存放特定的字符串对象。
对于: String str = "Java字符串";
创建过程:
1. 查看字符串常量池中是否有与该内容相同的字符串对象
2. 没有,则创建一个指定为该内容的字符串对象,并将str指向创建的对象;有则将str指向该字符串对象
通过new创建的字符串有所不同:
对于:String str = new String("java_字符串");
创建过程:
1. 首先在堆中(非字符串常量池)创建一个包含指定内容的字符串对象,并将str指向该对象。
2. 在字符串常量池中查看是否有指定内容的字符串对象
3. 没有则创建一个包含指定内容的字符串对象,并将该对象与new出来的对象联系起来。
4. 有则直接将 new出来的字符串对象 和 字符串常量池中的内容相同的对象关联起来。
将字符串常量池中的与之匹配的字符串对象返回。
如果字符串对象本身就在字符串常量池中,则将自身返回。
public class string_fun {
public static void main(String[] args) {
String str1 = "java_字符串";
String str2 = new String(str1);
System.out.println( str1==str2 );
System.out.println( str1.equals(str2) );
System.out.println( str2.intern() );
System.out.println( str1.intern()==str2.intern() );
}
}
StringBuffer sb = new StringBuffer(参数);
StringBuffer() | 默认初始容量为16 |
StringBuffer(int capacity) | 指定容量 |
StringBuffer(String str) | str长度加上16的初始容量 |
append(String str) | 追加 |
insert(int offset,String str) | 插入 |
delete(int start,int end) | |
reverse() | 倒置 |
构造方法
常用方法
[xyz] | xyz中的任意一个 |
[^xyz] | xyz之外中的任意一个 |
\d | 0~9中的任意一个字符,等价于[0-9] |
\D | 0~9之外的任意一个字符,等价于[^0-9] |
\s | 空白字符(制表符,空格...)中的任意一个 |
\S | 非空白字符中的任意一个,等价于[^\s] |
\w | 字母,下划线,数字中的任意一个,等价于[0-9a-zA-Z] |
\W | 非.. |
^ | |
$ | |
\b | |
\B | |
X? | X最多出现1次 |
X+ | X至少出现一次 |
X* | X可以出现任意次 |
X{n} | X可以出现n次 |
X{n,m} | X出现至少n次,最多m次 |
X{n,} | X至少出现n次。 |
? | 非贪婪模式进行匹配,只能用于+,{m,n},{m,} ,* 后面 |
| | 或。 |
() | 分组操作 |
\n | 有分组的情况下,对分组n的引用 |
. | 任意一个字符 |
java中标准库中提供了java.util.regex.Pattern类。
Pattern的构造方法为private
Pattern compile(String regex) | 将正则regex编译成Pattern对象返回 |
Pattern compile(String regex, int flags) | flags表示匹配标志,常量 |
flags | |
---|---|
CASE_INSENSITIVE | 对ASCII字符不区分大小写进行匹配 |
MULTILINE | 多行模式 |
DOTALL | dotall模式 |
UNICODE_CASE | 对Unicode字符不区分大小写进行匹配 |
CANON_EQ | 规范等价 |
int flags() | 返回flags的值 |
Matcher matcher(CharSequence input) | |
String pattern() | |
String[] split(CharSequence input)) | |
String[] split(CharSequence input),int limit) | |
static String quote(String s) | |
String 中的matchs方法只能进行整体匹配,正则表达式错误会抛出异常。
public boolean mathes( String regex)
利用正则进行字符串部分替换
public String replaceAll( String regex,Stringf replacement )
public String replaceFirst( String regex,String replacement )
将字符串拆解成多个子串
public String[] split( String regex )
public String[] split( String regex , int limit )
package test_02;
import java.util.regex.Pattern;
public class string_fun {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "java_字符串_java";
String str2 = new String(str1);
System.out.println( str1==str2 );
System.out.println( str1.equals(str2) );
System.out.println( str2.intern() );
System.out.println( str1.intern()==str2.intern() );
System.out.println( str1.matches("java.{0,}") );
System.out.println( str1.replaceFirst("java","a") );
System.out.println( str1);
String[] strs = str1.split("a", 3);
System.out.print("---------------\n");
for (String values : strs) {
System.out.println(values);
}
System.out.println("----------------");
Pattern pa = Pattern.compile("a.a");
}
}
标签:buffer compile insert 插入 end lag 字符串常量 表达 多行模式
原文地址:https://www.cnblogs.com/zoukun/p/12257565.html