Java String
Java String本质上是一个连续的字符数组。
创建字符串
1. 直接String对象赋值创建。
String s1 = "Hello World!";
2. 使用String类的构造函数创建。
String s2 = new String("Hello World!");
String是单例的(常量)
举例说明,如下列结果为true,为什么s1和s3是两个不同的变量为什么会相同呢? 这是因为在同一个运行环境下直接赋值创建的String对象会放在一个常量池里,当创建相同的String时,二者会指向同一个引用的字符串。
String s1 = "Hello World!";
String s3 = "Hello World!";
System.out.println(s1 == s3);
字符串常用操作
方法 | 作用 |
---|---|
+ | 可用于字符串拼接。更高效的方法:使用StringBuilder的append方法进行字符串拼接 |
length() | String的length方法,返回字符串的长度,注意数组的length不是方法,不需要使用括号 |
subString(from,to) | 字符串截取,返回结果从索引from位置到to的前一个位置 |
trim() | 去除字符串前后的空格 |
split() | 字符串拆分,返回拆分后的数组 |
toUpperCase() | 大写转换 |
toLowerCase() | 小写转换 |
字符串比较
Java String的比较常常作为面试题来考面试者。 如String的equals方法和==的区别?String用哪种方式进行比较?使用String直接赋值和new String()的区别等等…这些都是常见的面试题。
equals方法源码:可知,String的字符串比较思路为先判断是否是同一个引用,同一个引用一定是相同的。若不是同一个引用则先比较长度,长度一样再确定是否每一个位置的字符都相同。
public boolean equals(Object anObject) {
//同一个引用一定是相同的
if (this == anObject) {
return true;
}
//不同引用先比较长度,长度一样再确定是否每一个位置的字符都相同
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
String新特性
Java 9起,增加了压缩字符串
的机制,即当一个String字符串中只含有SO-8859-1/Latin-1编码集合内的字符时,一个字符只需要1 byte来存储,而不是4 byte。
Java 13中又增加了String文本段落的用法,当然很多其他的语言早就支持了,使用方法如下。
String s= """
Java 13 新特性
文本段落
""";
转载:https://blog.csdn.net/weixin_44671737/article/details/116615066
查看评论