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.


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).


Popular posts from this blog

NO SQL Types and vendors in market


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.

Compress a String


public class StringCompression {

public StringCompression() {
// TODO Auto-generated constructor stub

public static void main(String[] args) {

public static String compressString(String str) {
//String str = "aaaabbbbbcccc";
char[] charArray = str.toCharArray();
String compressedString = "";
int i = 0;
while (i < charArray.length) { int counter = 1; int j = i + 1; while (j < charArray.length && charArray[i] == charArray[j]) { counter++; j++; i++; } compressedString = compressedString + charArray[i] + counter; i++; } //System.out.println(compressedString); String output =(compressedString.length() > charArray.length)? str: compressedString;
return output;