美文网首页
JAVA4:String__字符串

JAVA4:String__字符串

作者: DuTel | 来源:发表于2018-12-25 13:07 被阅读0次

    关于字符串:
    所有的字符串都是String类的对象

    比较常用的声明字符串的两种方式:

    1: String str = "JAva";

    2: String str = new String("java");

    也就是说,字符串的字面量可以看作是String类的一个对象

    这要考虑字符串与字符数组之间的关系:

    '''
    char ch = {'a','b','c'};
    String str = new String(ch);
    //以上两条语句可以写为
    String str = new String("abc");
    //也就是说字符数组作为参量加入到了字符串对象的定义中来了

    '''
    另外,各种字符串可以以“+“连接,字符串还可以与其他的基本数据类型连接,需要注意,这种情况下连接所得的结果为字符串。

    ————————————————————————————————————————————————————

    关于一些细节:api上说字符串是常量,一旦被赋值,不可以被改变,但是通过一些验证我们得知String引用所指向的字符串对象是可以改变的,这里是不是存在什么矛盾??

    简单来说,声明String对象(即创建字符串)时,引用放在栈内存中,对象(字符串)放在堆内存中,各自有着不同的地址。

    当我们将原字符串与新字符串连接时,新字符串会成为堆内存中的一个新对象(没有引用),有独立的地址。随后会产生第三个新的对象,该对象的字符内容为连接后的新旧字符串,也有独立的地址

    接下来引用与原字符串的引用关系解除,与第三个连接后的字符串建立引用的关系,即引用指向的地址发生了变化。

    为什么说“字符串一旦被赋值就不可被更改”呢?其实这里的字符串指的是字符串 对象 而非 引用 关系。事实上,原字符串的地址和内容在上述过程中并没有发生变化。就是说的这个意思。

    ————————————————————————————————————————————————————

    “与其说是矛盾,不如说是误会”

    这一点在生活中我确有体会

    String 类中有很多方法,将会在下一篇讨论

    相关文章

      网友评论

          本文标题:JAVA4:String__字符串

          本文链接:https://www.haomeiwen.com/subject/dpqflqtx.html