Java教程

Java String不可移植

在Java中, 字符串对象是不可变的。不可变只是表示不可修改或不可更改。
一旦创建了字符串对象,其数据或状态便无法更改,但创建了新的字符串对象。
让我们尝试理解不变性概念通过以下示例:
class Testimmutablestring{
    public static void main(String args[]){
        String s="Sachin";
        s.concat(" Tendulkar");
        System.out.println(s);
    }
Output:Sachin
现在可以通过下面的图表来理解。此处Sachin不变,但使用sachintendulkar创建了一个新对象。这就是为什么字符串被称为不可变的原因。
堆图
如上图所示,两个对象是创建的,但是引用变量仍然引用" Sachin"而不是" Sachin Tendulkar"。
但是,如果我们明确地将其分配给引用变量,它将引用" Sachin Tendulkar"对象。例如:
class Testimmutablestring1{
    public static void main(String args[]){
        String s="Sachin";
        s=s.concat(" Tendulkar");
        System.out.println(s);
    }
}
Output:Sachin Tendulkar
在这种情况下,s指向" Sachin Tendulkar"。请注意,尚sachin对象未修改。

为什么字符串对象在Java中是不可变的?

因为java使用字符串文字的概念。假设有5个引用变量,则全部引用一个对象" sachin"。如果一个引用变量更改了对象的值,它将影响所有引用变量。这就是为什么字符串对象在Java中是不可变的。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4