问题我在接受采访时被问到为什么String是不可变的我这样回答:当我们在java中创建一个字符串时,如String s1 ="hello";然后将在字符串池(hello)中创建一个对象,并且s1将指向hello.Now如果我们再次执行String s2 ="hello";然后将不会创建另一个对象,但s2将指向hello,因为JVM将首先检查字符串池中是否存在相同的对象。如果不存在,则不会创建新的对
转载
2023-07-22 11:37:10
78阅读
问: Java 中的 String 类能不能被继承?为什么 String 有不可变性?这种设计有什么好处?一、String 的不可变性String 是 final 类型,final 类不能被继承。String 是不可变的,当修改已有字符串的值的时候,(如将 str = "abc" 修改为 “abcdef”),不是在原内存地址上修改数据,而是将原引用重新指向新对象、新地址。为什么不可变呢?在 jdk
转载
2023-08-12 11:27:28
69阅读
文章目录String类String常用方法StringBuffer和StringBuilder日期时间JDK8之前java.lang.System类:java.util.Date类:java.text.SimpleDateFormat类:java.util.Calendar(日历)类JDK8之后LocalDate、LocalTime、LocalDateTimeInstantDateTimeFor
转载
2024-07-01 13:02:23
14阅读
文章目录1. String 不可变的性质1.1 String 对象连接1.2 String 不可变实现2. String 不可变的目的 1. String 不可变的性质如我们所知,String 对象通常被存在字符串常量池中,一旦一个 String 对象被创建出来,它就无法被修改。对 String 对象的所有修改操作其实都没有改变字符串本身的值,而是返回一个新的 String 对象1.1 Stri
转载
2023-11-01 16:26:26
34阅读
String是Java中的不可变类。不可变类即其对象是不修改的,对象一旦建立,就不可改变。不可变类有许多优点,下面简要介绍一下String为什么是不可变类,对内存、同步、数据结构的认识会有助于理解。1.String常量池的需要常量池(String intern pool)是方法区(method area)中的一个特殊区域。当一个String被创建时,如果该字符串在常量池中已存在,那么将会返回该字符
转载
2023-10-07 12:25:53
70阅读
1.什么是【不可变】?不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。2.String为什么不可变?从原理上分析。 翻开JDK源码,java.lang.String类起手前三行,是这样写的:public final class String implements Serializable, Comparable<String>, CharSeque
转载
2023-08-23 08:46:26
38阅读
String的不可变性关于String的不可变性,这里转一个不错的回答一、什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。二、String为什么不可变?翻开JDK源码,java.lang.String类起手前三行,是这样写的:public final class String im
转载
2023-07-22 15:02:26
52阅读
一、不可变数据类型和可变数据类型的区别(1)不可变数据类型 :我理解是这类数据类型的值如果发生了变化,则变量的地址也就发生了变化(2)可变数据类型:这类数据类型,如果值发生了变化,指向该值的变量地址并没有变二、举例:String&StringBuilderString是一个不可变数据类型public class Demo {
public static void main(Stri
转载
2023-07-02 22:02:37
87阅读
首先我们想知道为什么字符串是不可变的,就要先理解字符串的概念: 字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[0]=“a”。再弄清String类不可变是什么意思,了解什么是不可变对象。不可变对象可以理解为:如果一个对象,在它正确创建完成之后,不能再改变它的状态(包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对
转载
2023-12-25 21:24:06
26阅读
转载
2023-06-19 20:11:57
38阅读
基本概念不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。例如String 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。例如StringBuilder具体差别当一个数据只有一个引用时,可变数据与不可变数据实际上并没有太大的差别。但是很明显真正的
转载
2023-08-15 11:42:11
54阅读
Java中的可变类与不可变类可变类与不可变类可变数据类型与不可变数据类型可变类与不可变类 可变类与不可变类在学习软件构造课程时,一直对可变类与不可变类没有一个很清晰的认识,有些疑问,类似于:如果不可变类中是因为没有变值器才让他不可变的话,那么getter后得到的对象也是不可变类中的对象,那么获得之后不就是可以对其改变了吗,为什么不会影响不可变类中的对象呢?要弄清这个问题,首先要理解可变数据类型与
转载
2023-07-18 15:59:06
52阅读
如题,大多数人都知道,因为String是被final修饰的,所以它不可变。那String为啥要被final修饰呢?可以从反方向考虑下,如果String可变会发生什么?将方法或类声明为final主要目的是确保它们不会在子类中改变语义。String类是final类,这意味着不允许任何人定义String的子类。Java String最重要的一条约定就是不可变。//String源码
public fina
转载
2023-09-24 19:43:17
48阅读
1、在Java中,String类是不可变类,一个不可变类是一个简单的类,并且这个的实例也不能被修改,这个类的实例创建的时候初始化所有的信息,并且这些信息不能够被修改2、字符串常量池字符串常量池是方法区中一块特殊的存储区域,当创建一个字符串常量的时候,判断该字符串字在符串字符串常量池中是否已经存在如果存在,返回已经存在的字符串的引用;如果不存在,则创建一个新的字符串常量,并返回其引用String s
转载
2023-06-03 23:52:12
87阅读
1.什么是不可变?简单的例子: String s1= “abc”; String s1=s1; s1= “def”; 此时s1变化了吗?变了!s1的地址从指向 “abc”变成指向 “def”; 重要的不在这里,内存上的“abc”本身并没有被改变!指向 “abc”的s2也没有被改变2.怎么做到的?两个final ,一个在String的类修饰符,一个是String内部保存数据的数组value
转载
2023-07-22 11:24:50
79阅读
在python 中可变类型和不可变类型指的是内存地址与其对应的 value 值之间的关系是否可以改变二者间的关系不可改变的即为不可变类型不可变类型字符串,元组,整型,浮点型都是不可变类型如图中地址 XXX01 永远指向 1,XXX02 永远指向 2☞创建变量a=1b=2则将变量 a 的指针指向 XXX01,b 的指针指向 XXX02,使用内建函数 id() 输出可以看到此时 a 和 b 使用的内存
转载
2023-09-02 15:46:13
66阅读
这个问题很有意思,之前在面试的时候也经常会冷不丁的问一下前来应聘的毕业生,不过回答大多让人失望。而我自己有时在回想这个问题的时候,有时也会突然愣住,不知道问题的答案是什么。 今天晚上部门领导开会的时候,又突然想起来这个问题,这里记录下来自己的理解,期待以后会有更深刻的收获。 根据JDK中java.lang.String的源码进行分析,从中可以得出String类型的对象不可变的原因,大致上有如
转载
2023-09-20 22:29:57
76阅读
我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码。public final class Stringimplements java.io.Serializable, Comparable, CharSequence { /** The value is used for character storage. */ private final char v
转载
2023-08-29 09:52:43
48阅读
字符串在Java中是不可变的,因为String对象缓存在String池中。由于缓存的字符串在多个客户之间共享,因此始终存在风险,其中一个客户的操作会影响所有其他客户。例如,如果一段代码将String “Test”的值更改为“TEST”,则所有其他客户也将看到该值。由于String对象的缓存性能是很重要的一方面,因此通过使String类不可变来避免这种风险。同时,String是final的,因此没有
转载
2023-10-30 13:13:59
68阅读
一 什么是不可变对象?不可变对象指对象一旦被创建,状态就不能再改变,任何修改都会创
原创
2023-05-23 10:19:03
82阅读