String handling is a way of handling and manipulating strings in java with the help of lot concepts like concatenation, comparison etc.
In General – String is sequence of characters.
In Java – String is an object which is created by using String class. String objects are immutable and they can’t modified i.e. any change in the existing object will result into a new object.
How to create string object?
- By String literal.
- By new keyword.
1. By String literal:
String literal: A sequence of characters enclosed in double quotes. String literal is a concept of java language. It is not an object from java.lang.String. e.g. – “Hello java”. In the string literal case one object and one reference variable is created. Object is placed in string constant pool.
String literal/constant pool: is a special part of heap memory used to store string literals or string constants.
Every time a literal is created, JVM checks the string constant pool for it. If string literal is already in the pool then no new object will be created in the pool, a reference of the already existing object will returns. If string literal is not exist in the string constant pool then new instance will be created and placed in the string constant pool.
E.g. – String str1 = “w3spoint”
String str2 = “w3spoint”
In the above example in case of str1 JVM checks for “w3spoint” in string constant pool. First time it will be not in the pool hence JVM create new instance and placed it into the pool. In case of str2 JVM will find the “w3spoint” in the pool. Hence no new instance will be created and reference of the already existing instance will be return.
Java uses the concept of java literal to increase memory efficiency. Because, no new instance will be created for a string literal if it is already exist in string constant pool.
2. By new keyword:
String objects can be created with new keyword also. In this case two objects and one reference variable is created. One object is created in heap area (non-pool) and other (string literal) is placed in string constant pool. The variable will refer to the object in heap area.
e.g.- String str = new String(“w3spoint”).
Why string objects are immutable in java?
As we discussed above java uses the concept of String literal. Suppose n reference variables refer to one object “w3spoint” .If one reference variable changes the value of the object, it will be affected to all other n-1 reference variables. That’s why string objects are immutable in java.