作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了一些困惑。
我知道 String
对象是不可变的。这意味着如果我从 String
类调用方法,例如 replace()
,则 String
的原始内容不会改变。相反,一个新的 String
被返回基于原来的。但是,可以为相同 变量分配新值。
基于这个理论,我总是编写 a = a.trim()
,其中 a
是一个 String
。 一切都很好,直到我的老师告诉我也可以使用简单的a.trim()
。这打乱了我的理论。
我与老师的理论一起检验了我的理论。我使用了以下代码:
String a = " example ";
System.out.println(a);
a.trim(); //my teacher's code.
System.out.println(a);
a = " example ";
a = a.trim(); //my code.
System.out.println(a);
我得到了以下输出:
example
example
example
当我向老师指出时,她说,
it's because I'm using a newer version of Java (jdk1.7) and
a.trim()
works in the previous versions of Java.
请告诉我谁有正确的理论,因为我完全不知道!
最佳答案
字符串在java中是不可变的。 trim()
返回一个新字符串,因此您必须通过分配它来取回它。
String a = " example ";
System.out.println(a);
a.trim(); // String trimmed.
System.out.println(a);// still old string as it is declared.
a = " example ";
a = a.trim(); //got the returned string, now a is new String returned ny trim()
System.out.println(a);// new string
编辑:
she said that it's because I'm using a newer version of java (jdk1.7) and a.trim() works in the previous versions of java.
请找一位新的java老师。这完全是没有证据的虚假陈述。
关于java - a = a.trim() 和 a.trim() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20917616/
我是一名优秀的程序员,十分优秀!