I've ran into a bit of a confusion.
I know that String
objects are immutable. This means that if I call a method from the String
class, like replace()
then the original contents of the String
are not altered. Instead, a new String
is returned based on the original. However the same variable can be assigned new values.
Based on this theory, I always write a = a.trim()
where a
is a String
. Everything was fine until my teacher told me that simply a.trim()
can also be used. This messed up my theory.
I tested my theory along with my teacher's. I used the following code:
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);
I got the following output:
example
example
example
When I pointed it out to my teacher, she said,
it's because I'm using a newer version of Java (jdk1.7) and
a.trim()
works in the previous versions of Java.
Please tell me who has the correct theory, because I've absolutely no idea!
String is immutable in java. And
trim()
returns a new string so you have to get it back by assigning it.Edit:
Please find a new java teacher. That's completely a false statement with no evidence.