Hun*_*Dev 6 java string jdk1.4 java-7
我遇到了一点混乱.
我知道那个String对象是不可变的.这意味着如果我从String类中调用一个方法,replace()那么原始内容String就不会改变.而是基于原始返回new 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);
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
example
example
example
Run Code Online (Sandbox Code Playgroud)
当我向老师指出时,她说,
这是因为我使用的是较新版本的Java(jdk1.7)并且
a.trim()在以前版本的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
Run Code Online (Sandbox Code Playgroud)
编辑:
她说这是因为我使用的是较新版本的java(jdk1.7),而a.trim()在以前版本的java中有效.
请找一位新的java老师.这完全是一个没有证据的虚假陈述.