小编lir*_*iro的帖子

修改非不可变对象,java

我对这个例子感到困惑:

StringBuilder a = new StringBuilder("abcde");
String subStr = a.substring( a.indexOf("a") , a.indexOf("c")  );
int leng = a.length();
char ch = a.charAt(4);
System.out.println( subStr + " " + leng + " " + ch);
//the result will be : subStr = abc  , leng = 5  ch = e
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么ch = e并且它不会创建异常?

我的想法:
我有一个 StringBuilder,一个非不可变的对象,如果我在该对象上使用一种方法,它将返回一个具有相同引用对象的对象的新值。

  • 为什么我使用时a.substring ( int a, int b ),没有修改StringBuilder对象?
  • 为什么如果我使用该方法,a.append("value")我会修改 StringBuilder 对象的值?

java stringbuilder substring

-5
推荐指数
1
解决办法
241
查看次数

标签 统计

java ×1

stringbuilder ×1

substring ×1