【发布时间】:2016-04-01 16:00:53
【问题描述】:
我对这个例子感到困惑:
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
我的问题是:为什么 ch = e 并没有创建异常?
我的想法:
我有一个 StringBuilder,一个非不可变对象,如果我在对象上使用方法,它将返回具有相同引用对象的对象的新值。
- 为什么当我使用
a.substring ( int a, int b )时,它没有修改对象 StringBuilder ? - 为什么如果我使用方法
a.append("value")我正在修改StringBuilder对象的值?
【问题讨论】:
-
您的问题令人困惑——请尝试澄清。
-
调用
subString(...)是一个非变异方法调用。它只是返回 String 或 StringBuilder 的一段。为清楚起见,请自行编辑您的问题。准确说明 API 中让您感到困惑的地方。 -
@AadityaGavandalkar:非常感谢您提供这些信息。我以前不知道这个有趣的方面。
标签: java substring stringbuilder