Yes, I will be talking about one of the favorite topics or maybe the most argued topic of strings in programming languages. This post will cover how to use strings in Java.
Question
One of the beginner questions in Java is how to compare Strings in java?
Solution
The short answer is .equals compare the values of two strings and see if they are equal or not. Operator == compare the two string objects and see if they are referring to the same memory address.
Example:
String str1 = new String("test"); String str2 = new String("test"); str1.equals(str2) - This will return true. str1 == str2 - This will return false.
Comment
Despite Java supports operator == for strings, it is not used for string comparison often. Object reference checks happen rarely. Another anomaly to this is if two strings are null.
Example:
String str1 = null; String str2 = null; str1 == str2 - this will return true. str1.equals(str2) - this will throw null pointer exception (NPE).
Java offers another method called compareTo for String comparison. This can be used in following way
Example:
String str1 = "test"; String str2 = "test"; str1.compareTo(str2) == 0 - This will return true.
More about Strings
We all have seen StringBuffer
, StringBuilder
, StringWriter
, StringTokenizer
or just plain String
. What are all these different aspects of String and when to use? Isn’t this too much to know when you just want to use a simple String object. This post will cover some information about all these different classes that Java offers.
StringBuffer
StringBuffers
are thread-safe, they are just synchronized version of StringBuilder
. StringBuffer
offers some helpful methods like append and reverse.
Example:
StringBuffer sb = new StringBuffer(); sb.append("first string"); sb.toString();
StringBuilder
StringBuilder
is not thread-safe, but they offer better performance than StringBuffer
. You can say StringBuffer
is thread-safe version of StringBuilder
.
StringTokenizer
StringTokenizer
is completely different from StringBuffer
and StringBuilder
as it is mainly used for splitting strings into token at a delimiter. StringBuffer
and StringBuilder
are used to build strings.
StringWriter
StringWriter
is a character stream that collects the output in a string buffer. In short, you can say it uses StringBuffer underneath. This is an IO stream, very similar to File IO, but you can still access StringWriter even after stream has been closed.
Example:
StringWriter sw = new StringWriter(); sw.write("this is first string"); sw.toString();
Conclusion
In this article, we showed String comparison and different forms of String building. If you enjoyed this post, subscribe to my blog. If you want to read more about Strings, you can read here.