Skip to main content

String Pool Vs String Definition (Using 'new' Operator)

Strings can be defined in Java in two ways.

1. String Literals
2  Traditional way(using 'new' operator)

String Literals

If a String is created by using String literal notation, memory will be allocated directly in string pool.
String pool is subset of Heap memory (Where objects will be created).

e.g. String companyName = "Surimenus";
     String empName= "Bhargav";
     
Using 'New' Operator

If a String is created using new operator, memory will be allocated in Heap Memory not in String pool.

e.g.

String companyName = new String("Surimenus");
String empName= new String("Bhargav");


String Pool vs Using 'new' Operator

String which are created in String pool will re-reference by reference which contains the same content.


For example consider the following.

String cn1 = "Surimenu";
String cn2 = "Surimenu";

In the above scenario cn1 and cn2 references having the same content and these are created in String Pool. So for only one Object memory will be allocated for the two references (cn1 and cn2)


For suppose if you create String Objects as follows.

String cn1 = new String("Surimenu");
String cn2 = new String("Surimenu");

In the above scenario cn1 and cn2 references having the same content and these are created in Heap memory. So memory will be allocated for two Objects for two references (cn1 and cn2).



















Comments

Popular posts from this blog

Maven Build Life Cyles

Following are the maven build life cycles.

Clean - Removes the generated files in 'target' folder.

command : mvn clean

Validate - It validates your project and verify all the necessary information is there in project or not.

mvn  valiate

Compile - It compiles your project code.

mvn compile

Package - It takes the compiled code and packaged to JAR/WAR/EAR. It also compiles your code if your code is not compiled.

mvn package

Install -   It takes the packaged code and puts in your local maven repository (M2_HOME). It also does the compile and package if these are not already been done.

mvn install

Deploy - It takes the package and puts in remote repository for sharing accross team members or for other projects.

mvn deploy


FYI - Above commands can be used as variety of combinations.
e.g. mvn clean install
mvn clean package
mvn clean compile package install

To skip the tests to run 
mvn clean install -DskipTests



NO SQL Types and vendors in market

NO SQL

KEY - VALUE Store  - Similar to a  MAP.
   e.g. Dynamo DB or REDIS

DOCUMENT Sore  - Similar to KEY-VALUE, value can be JSON/XML and key will be unqiuely idnetified this document.
   e.g. Coutch DB or mongoDB.

Column Store - Multi timentional table, identifying data with row and column numbers.
  e.g.  Cassandra or Apache HBase

Graph Store - Store relation between nodes (record entities). It has better transaction management
e.g. Neo4J and Orient DB.