String with variable parameters

Using string with parameters is very handy in case of Constants.

Java class in focus is: java.text.MessageFormat


Output will be

Welcome Mr. Nikhil to
Welcome Mrs. Tejashree to

StringBuffer vs StringBuilder

To check StringBuffer vs StringBuilder we must check AbstractStringBuffer first coz both StringBuffer and StringBuilder extends AbstractStringBuilder.


AbstractStringBuilder has ‘char value[]’ that is used for holding string in from of char sequence. ‘int count’ is used for storing number of characters stored.

Important methods in AbstractStringBuilder:

  1. capacity(): Capacity is amount of store available for newly inserted characters
  2.  insert(int, <T>): insert <T> into character sequence at int.
  3. reverse(): Reverse of the character sequence
  4. append(): Append to the character sequence
  5.  toString(): Only abstract method in AbstractStringBuilder
  6. getValue(): This is a final method that returns char value[];

In simple words all operations are done on array of characters which is present in AbstractStringBuilder.

Now StringBuffer vs StringBuilder

  1. StringBuffer and StringBuilder extends AbastractStringBuilder
  2. Both use AbastractStringBuilder for logical operation and has minimal code written in them
  3. Both implements toString() where they create new String and do not share char value[] with String.
  4. Both implements writeObject() &  readObject()

Now the major and important difference is all important methods in StringBuffer are synchronized. Due to non synchronized methonds StringBuilder performs better than StringBuffer.

String Basics

Strings: String is a class used for manipulating strings. String is character array and implemented in same way. String is object in java.

Creating String:
String can be created in multiple ways

  1. By using one of thirteen constructors provided by String class (or using new keyword)
  2. By using ‘=’ operator (or String literal)

Important difference between them is when we create String object using String literal JVM checks string pool if found string object will be returned else new object will be created; but in case of new JVM will create new object without checking in string pool.

String equality:
String equal method check each character in character array that is present inside String; where as ‘==’ checks object memory location.

String pool:
String pool is special memory location where JVM keeps all string objects

String and security:
If we keep sensitive data in String due to immutable nature we can’t erase that data. Someone who got access to java memory like access to heap dump can read that information.
We should keep password in char array and reset them once they are no longer needed.

Character encoding:
By default String will use same encoding as underlaying platform i.e. character encoding of server. This can cause issues if server is not supporting unicode encoding like UTF-8 or UTF-16. This can be changed by using system property “file.encoding”