为什么如下代码我用注释1输出的就是456注释2就还是123
public class Test {
public void chuli(String s){
s="456";
}
public static void main(String[] args) {
String string=new String("123");
/*string="456";*/注释1
/*Test test=new Test();
test.chuli(string);*/注释2
System.out.println(string);
}
}
java string 为什么不可变?
总的来说,Java中将String设计为不可变的是为了提高安全性、性能和效率。不可变性使得字符串对象在使用过程中更加稳定,避免了潜在的问题和错误。
为什么 String 被设计为是不可变的?
String 不可变的原因在于其内部实现。其关键在于 private final 的 char 数组,即 value。一旦值被赋给 value,引用就不能改变。源码中未提供修改 value 数组的其他方法,且 value 的访问权限为 private,外部类无法访问,确保了 value 的不变性。考虑到 String 类被 final 修饰,无法被继承,因此不存...
JAVA String不变性的问题
注释1 对象引用string 指向了 "456",显然打印后是456 注释2 s 为局部变量 ,只在chuli方法代码块中有效,出了方法不起作用 显然打印 “123”
扒开外衣仔细分析:String为什么不可变
String源码分析String在日常开发中的使用频率相当高,所以今天就要扒开String的外衣,看看它究竟为什么这么受欢迎。2.1不可变性publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,CharSequence{...}从代码中可以看到,String类由final关键字修饰,这也意为着String类不可被继承,创建后不...
为什么在Java中String被设计成不可变
总体来说, String不可变的原因包括 设计考虑,效率优化问题,以及安全性这三大方面. 事实上,这也是Java面试中的许多 "为什么" 的答案。细分一下:假若字符串对象允许改变,那么将会导致各种逻辑错误,比如改变一个对象会影响到另一个独立对象 字符串不变性保证了hash码的唯一性,因此可以放心地进行缓存.这也是...
java中string是什么意思?
首先,我们需要理解String类是一个不可变的类,这意味着一旦一个字符串对象被创建了,它就无法被修改了。所以,如果需要修改字符串,需要创建新的字符串对象。其次,由于字符串的不可变性,当我们使用String类的方法时,每次调用方法都会创建一个新的字符串对象,这会导致内存使用问题。因此,建议使用...
java中string是什么类型
1. String类的基础定义:在Java中,String是字符串的抽象表示形式。它是一个预定义的类,位于java.lang包中,这意味着在Java程序中可以直接使用String类而无需导入额外的包。由于它是不可变的,所以每次对字符串进行修改的操作都会创建一个新的String对象。这种特性使字符串在内存中的处理变得高效,因为...
String的"缓冲池特性"和"不可变性"是什么意思啊?
不可变性是java中的String一但创建,是永远不可改变的,每次改变都是创建一个新的String对象。回到题目,为什么可能一个,可能2个呢?如果在new String的时候String缓冲池中已经存在了fdfd这个char数组,那么会直接创建一个String对象引用这个数组,否则创建一个新的char数组放在池中,再创建一个String对象...
在java中,如图:有人能解释一下它的过程吗
首先要知道,String具有不变性,这一点性质类似于int、long等原始类型值。String的对象,一经创建,便无法改变。如String str = "123";那么,无论怎么操作,只要不用赋值语句给str赋新值,那么str中始终存的是"123"。除非你用str = "456";给他重新赋值。如果执行str + "456"str中依旧存的是"123...
java string最大能存多少个字符
1、不可变性。Java String对象是不可变的,一旦创建就不能修改其内容。因此,在编写字符串处理程序时,需要格外小心和处理。2、强大的操作符。Java String对象提供了大量的操作符,可以对字符串进行加、减、乘、除等操作,也可以使用等于、不等于、比较大小等操作判断字符串是否相等。3、支持多种遍历方式...