前面问 DNS,CDN,python 等问题,最后问了个 java 问题。我答的是 String 源码实现是 char 类型的数组,我说数组创建后,不能改变
String 底层是一个 char 类型的数组,这个数组 被 private + final 修饰,并且在 String 类内部没有对数据元素进行过修改,所以 String 是不可变的。
DNS、CDN、python 的问题也分享一下呗楼主
什么公司啊,问这个问题
string 并不是不可变的:正常情况下,string 确实是不可变的,正如 1 楼所说,但是可以使用反射来实现 string 的可变性 至于为什么要这样设计,那是为了安全
哈哈,java 的反射让你无所不能
string 类没有提供可以修改内部信息的方法,为什么不提供?因为静态字符串池的存在,如果可以修改,会导致静态字符串池内出现重复字符串
举个例子一目了然: StringBuider 是可变的,修改了 sb2,sb1 并没有修改,因为 StringBuider 可变,俩对象用的一个地址值,修改一个另一个也跟着改变了
StringBuilder sb1 = new StringBuilder("aaa"); StringBuilder sb2 = sb1; sb2.append("bbb"); System.out.println("sb1: "+sb1); System.out.println("sb2: "+sb2);