`

String为什么是不可变的

JDK 
阅读更多

StringBuffer可变String不可变的真正原因

 

String和StringBuffer都是final类,他们生成的对象在堆中都是不可变的,在他们内部都是靠属性char数组实现的,

那为什么StringBuffer可以在对象中追加字符串呢?呵呵,因为String中的char数组是finall的,也就是常量,是不可改变 的,而StringBuffer继承自抽象类AbstractStringBuilder,他的内部实现靠他的父类完 成,AbstractStringBuilder内的char数组是变量,可以用append追加

StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,此抽象类实现Appendable接口因此可追加

(在JDK 6.0 API中StringBuilder和Stringbuff写着都继承自Object 而且在他的API中找不到AbstractStringBuilder类)

分享到:
评论

相关推荐

    Java中的String为什么是不可变的?-String源

    在Java编程语言中,String类是一个非常特殊且...总的来说,Java中的String设计为不可变对象是出于性能、安全和并发控制的考虑,这种设计在许多场景下都是有利的。理解这一特性对于编写高效、安全的Java代码至关重要。

    Java中的String为什么是不可变的共7页.pdf.z

    Java中的字符串类`String`是不可变的,这个特性在编程实践中有着深远的影响。了解其不可变性,有助于我们更好地理解和优化代码。以下是对这一核心概念的详细解释: 1. **不可变性定义**:不可变对象是指一旦创建,...

    Java中的String为什么是不可变的?

    什么是不可变对象?  众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象是不可变的。不能改变状态的...

    浅谈为什么Java里面String类是不可变的

    那么,为什么 Java 语言的设计者要把 String 类型设计成不可变对象呢?下面,我们将深入探讨字符串不可变性的原因和优点。 不可变对象的定义 不可变对象指的是对象创建之后,对象的内部状态以及对象的内存指针地址...

    Java string不可变原理实例解析

    在面试中,了解并能够解释Java中的String为什么是不可变的,是展示对Java内存模型和多线程概念理解的很好方式。阅读《Effective Java》等书籍可以帮助深入理解这一设计决策背后的思考。同时,熟悉字符串操作的最佳...

    Java中的String为什么是不可变的?? String源码分析

    什么是不可变对象?  众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象是不可变的。不能改变状态的...

    Java String类为什么是不可变的_动力节点Java学院整理

    Java String类为什么是不可变的_动力节点Java学院整理,动力节点口口相传的Java黄埔军校

    Java基础面试题 91道面试复习八股文

    String为什么是不可 变的 可变性 String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变 的。StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在...

    String型的不可变性

    什么是不可变性呢?简单来说,就是 String 对象一旦被创建,不能被修改。那么,为什么 String 对象不能被修改呢?这就需要从 Java 的内存分配机制说起。 Java 把内存划分为两种:一种是栈(stack)内存,一种是堆...

    Java中的String对象是不可变的吗Java开发Jav

    在Java编程语言中,String对象被认为是不可变的。这个特性是Java设计者为了优化性能、安全性和线程安全性而有意设定的。理解String对象的不可变性对于Java开发者来说至关重要,因为它影响着代码的编写、内存管理和多...

    Java 中的 String对象为什么是不可变的

    首先,理解什么是不可变对象至关重要。不可变对象是指在创建后其状态无法改变的对象。对于String来说,这意味着一旦创建了一个String实例,如`String s = "Hello"`,就不能通过任何公共方法(如`append()`或`...

    Java语法基础-面试专题及答案

    12.String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 可变性、线程安全性的研究 13.自动装箱与拆箱 14.在一个静态方法内调用一个非静态成员为什么是非法的 15.在 Java 中定义一个不做事...

    java 面对对象编程.pdf.zip

    String 为什么是不可变的? 字符串拼接用“+” 还是 StringBuilder? String#equals() 和 Object#equals() 有何区别? 字符串常量池的作用了解吗? String s1 = new String("abc");这句话创建了几个

    浅谈java String不可变的好处

    为什么要将String定义为final不可变?因为在程序编写的过程中,会大量地用到String常量,如果每次声明一个String引用都要新建一个String对象,那么会造成空间的极大浪费。于是,在java的堆中开辟了一块存储空间...

    markdown.md

    String为什么是不可变的? 在Java中,`String` 类是一个非常重要的类,它用于表示不可变的字符序列。`String` 的不可变性主要体现在以下几个方面: - **成员变量的不可变性**:`String` 类内部包含一个 `char[]` ...

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

     流行的Java面试题之一是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类型?  不可变对象,顾名思义是创建后不可以...

    AndyJennifer#Android_Interview#为什么 String 被设计为不可变的1

    这样的话,以后每次想要用到 HashCode 的时候,不需要重新计算,直接返回缓存过的 hash 的值就可以了,因为它不会变,这样可以提高效率,所以这就使得字符

    String和string区别以及string详解

    `string`类型是不可变的,这意味着一旦创建了一个`string`对象,就不能更改它的内容。例如: ```csharp string str = "Hello"; str += " World"; // 实际上是创建了新的字符串对象 ``` 在这个例子中,虽然表面上看...

    Java的string类为什么是不可变的

    主要介绍了Java的string类为什么是不可变的,总结了三个答案,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics