0

Here is the code:

String str="    ";
System.out.println("("+str+")");
str=str.trim();
System.out.println(str==null);
System.out.println(str=="");
System.out.println(str.length());
System.out.println("("+str+")");

and the output is:

(    )
false
false
0
()

What's the return character of Multiple spaces.trim() ? Obviously it can't be null.

akash
  • 22,664
  • 11
  • 59
  • 87
mutou
  • 51
  • 1
  • 5
  • It's an empty string - but you're comparing strings with `==`, which is confusing you. See http://tinyurl.com/so-java-string-equality – Jon Skeet Sep 17 '15 at 06:01
  • Don't compare references, compare values, `str==null`->false because String was initialized, `str==""`->false because `"" `is a new object reference which is not on the pool. – drgPP Sep 17 '15 at 06:01
  • 4
    The problem is the use of `==` - see http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java?rq=1 – user2864740 Sep 17 '15 at 06:02
  • use `System.out.println(str.equals(""));` instead of `System.out.println(str=="");` – Blip Sep 17 '15 at 06:08

3 Answers3

5

No its not null its empty String. "".

That's why

System.out.println(str==null); 

returns false.

But in case of

System.out.println(str=="");

use

str.equals("")

It will return true.

If you are wondering why

System.out.println(str=="");

return false;

Read How do I compare strings in Java? Or, Java String.equals versus ==
Or search google for String comparison, its a very popular topic .

Community
  • 1
  • 1
Saif
  • 6,804
  • 8
  • 40
  • 61
1
public String trim()

Returns a copy of the string, with leading and trailing whitespace omitted.

If this String object represents an empty character sequence, or the first and last characters of character sequence represented by this String object both have codes greater than '\u0020' (the space character), then a reference to this String object is returned.

Otherwise, if there is no character with a code greater than '\u0020' in the string, then a new String object representing an empty string is created and returned.

Otherwise, let k be the index of the first character in the string whose code is greater than '\u0020', and let m be the index of the last character in the string whose code is greater than '\u0020'. A new String object is created, representing the substring of this string that begins with the character at index k and ends with the character at index m-that is, the result of this.substring(k, m+1).

This method may be used to trim whitespace (as defined above) from the beginning and end of a string.

Returns: A copy of this string with leading and trailing white space removed, or this string if it has no leading or trailing white space.

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

Pankaj
  • 592
  • 7
  • 19
Harold Castillo
  • 2,006
  • 19
  • 23
0

If you look for some information about .trim() does is erase any space or character at the begin and end of the String in question, so, in the case you've used .trim() could be the same

"Multiple spaces".trim()

return Multiple Spaces
GAMITG
  • 3,810
  • 7
  • 32
  • 51