面试必背,深入理解Java String

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 新特性
          文本段落
                   """;
打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页

打赏

兴趣使然的程序猿

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值