7String类
程序员文章站
2022-07-14 11:10:57
...
String类
创建对象
String s1=new String();
String s2="3";
String s3=new Scanner(System.in).nextLine(); //等同于new Stirng() 不在常量池中操作
概念
-
字符串实际上就是一个 char 数组
private final char value[];
-
字符串不可变。
-
String str1 = new String() 是在堆中开辟新的内存空间;
-
str = “test” 是在堆中的常量池中找"test",若没有则分配新的内存。
-
str1+str2+str3 字符串拼接,会有5个对象。效率低。
-
str1+str2 JVM会隐式的改写成StringBuilder调用append()
常用方法
方法名 | 用处 |
---|---|
length() | 返回此字符串的长度 |
charAt(int index) | 返回指定索引处的值 |
concat(String str) | 在结尾连接指定字符串 |
lastIndexOf() | 返回指定字符最后一次出现的索引 |
subString(int a,int b) | 返回a-b的一个子字符串,含头不含尾 |
equals(Object obj) | 将此str与指定对象进行比较 |
startsWith(String prefix) | 测试此字符串是否以指定的前缀开头。 |
endsWith(String suffix) | 测试此字符串是否以指定的后缀结尾。 |
split(String regex) | 以regex为分隔符,分割字符串,返回string数组 |
trim() | 返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。 |
toCharArray() | 把字符串数据存入char[] |
getBytes() | 把字符串数据转换成整数并存入byte[] |
StringBuilder 、StringBuffer
用来优化字符串的拼接
特点
-
封装了char[] 数组,是可变的字符序列。
-
它们的对象可以被多次修改,不产生新的对象。
-
常用append()做字符串拼接。
-
内部字符数组默认初始容量是16,如果大于16会尝试扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。
-
stringbuffer1.0定义是线程安全的;stringbuilder1.5定义,去除线程安全以提高速度。