Run this simple java program and create scenerio of String object creation in your mind.You will see huge difference than expectation.
I would recommend to first try on your own then follow the solution .
As you execute the above line of codes in your Java Runtime Environment .As compiler
read the lines .In case of
String a= new String("Hello");
As it will allow compiler to create a new string object .It is always mandatory for
compiler to allocate a memory space in heap whenever new keyword is used.So String
class object created successfully in heap with reference variable a.And a very important point
need to be noted down that here "new String("Hello');" It will make a literal object in String
pool with value "Hello".So total number of object created equals two.so if you print value of a
using System.out.println(a); It will print Hello as reference variable for object a contain same
value. Similarly it happens with the next line
String b= new String("Java");
it also creates the same scenerio as String referenced above.But in case of next following line
String c="HelloJava";
In this case there will be a literal stored in constant pool.It also rise three most important question.
Que:What is difference between constant pool and heap?
Que:What makes String immutable & why?
Que:How JVM utilize the need of constant pool?
As next lines of code executed it work as follow.In the given case when evaluation for
System.out.print("c==a+b");
Here a & b are object of type String .While c is an string literal which contain value "HelloJava".
So when + operator work between two different object .It does not evaluate result equal to any
String literal which is stored in Constant pool. So for "c==a+b" it will result to boolean result
which comes out to be false.So only false will be printed.
In the following next line while evaluating c=="Hello"+"Java";
It will work as operator overloading between two String literals.And as describe "Hello" &
"Java" both are stored in Constant bool which concat and result equals to c.
So true will pe printed in System.out.print(c=="Hello"+"Java");
StringBuffer
is faster than String
when performing simple concatenations. In String
manipulation code, character strings are routinely concatenated.
Toptal Software Developers Community. can be a good place to work
ReplyDelete