Thursday, 26 March 2015

String and String Pool in JAVA

Strings Class in JAVA
Strings, which are widely used in Java programming, are a sequence of characters. In the Java programming language, strings are objects.
The Java platform provides the String class to create and manipulate strings.
Creating Strings
The most direct way to create a string is to write:
String str1 = "Hello SASIDHAR”;
Creating String Object
String str=new String();
   Or
String str=new String(“String data”);

Method Summary(for more information refer http://docs.oracle.com/javase/7/docs/api/java/lang/String.html)

Methods 
Modifier and Type
Method and Description
char
charAt(int index)
Returns the char value at the specified index.
int
codePointAt(int index)
Returns the character (Unicode code point) at the specified index.
int
codePointBefore(int index)
Returns the character (Unicode code point) before the specified index.
int
codePointCount(int beginIndex, int endIndex)
Returns the number of Unicode code points in the specified text range of this String.
int
compareTo(String anotherString)
Compares two strings lexicographically.
int
Compares two strings lexicographically, ignoring case differences.
concat(String str)
Concatenates the specified string to the end of this string.
boolean
Returns true if and only if this string contains the specified sequence of char values.
boolean
Compares this string to the specified CharSequence.
boolean
Compares this string to the specified StringBuffer.
static String
copyValueOf(char[] data)
Returns a String that represents the character sequence in the array specified.
static String
copyValueOf(char[] data, int offset, int count)
Returns a String that represents the character sequence in the array specified.
boolean
endsWith(String suffix)
Tests if this string ends with the specified suffix.
boolean
equals(Object anObject)
Compares this string to the specified object.
boolean
equalsIgnoreCase(String anotherString)
Compares this String to another String, ignoring case considerations.
static String
format(Locale l, String format, Object... args)
Returns a formatted string using the specified locale, format string, and arguments.
static String
format(String format, Object... args)
Returns a formatted string using the specified format string and arguments.
byte[]
Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array.
byte[]
getBytes(Charset charset)
Encodes this String into a sequence of bytes using the given charset, storing the result into a new byte array.
void
getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
Deprecated. 
This method does not properly convert characters into bytes. As of JDK 1.1, the preferred way to do this is via the getBytes() method, which uses the platform's default charset.
byte[]
getBytes(String charsetName)
Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.
void
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Copies characters from this string into the destination character array.
int
Returns a hash code for this string.
int
indexOf(int ch)
Returns the index within this string of the first occurrence of the specified character.
int
indexOf(int ch, int fromIndex)
Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
int
Returns the index within this string of the first occurrence of the specified substring.
int
indexOf(String str, int fromIndex)
Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
Returns a canonical representation for the string object.
boolean
Returns true if, and only if, length() is 0.
int
lastIndexOf(int ch)
Returns the index within this string of the last occurrence of the specified character.
int
lastIndexOf(int ch, int fromIndex)
Returns the index within this string of the last occurrence of the specified character, searching backward starting at the specified index.
int
Returns the index within this string of the last occurrence of the specified substring.
int
lastIndexOf(String str, int fromIndex)
Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index.
int
Returns the length of this string.
boolean
matches(String regex)
Tells whether or not this string matches the given regular expression.
int
offsetByCodePoints(int index, int codePointOffset)
Returns the index within this String that is offset from the given index by codePointOffset code points.
boolean
regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
Tests if two string regions are equal.
boolean
regionMatches(int toffset, String other, int ooffset, int len)
Tests if two string regions are equal.
replace(char oldChar, char newChar)
Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.
replace(CharSequence target, CharSequence replacement)
Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence.
replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement.
replaceFirst(String regex, String replacement)
Replaces the first substring of this string that matches the given regular expression with the given replacement.
split(String regex)
Splits this string around matches of the given regular expression.
split(String regex, int limit)
Splits this string around matches of the given regular expression.
boolean
startsWith(String prefix)
Tests if this string starts with the specified prefix.
boolean
startsWith(String prefix, int toffset)
Tests if the substring of this string beginning at the specified index starts with the specified prefix.
subSequence(int beginIndex, int endIndex)
Returns a new character sequence that is a subsequence of this sequence.
substring(int beginIndex)
Returns a new string that is a substring of this string.
substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this string.
char[]
Converts this string to a new character array.
Converts all of the characters in this String to lower case using the rules of the default locale.
Converts all of the characters in this String to lower case using the rules of the given Locale.
This object (which is already a string!) is itself returned.
Converts all of the characters in this String to upper case using the rules of the default locale.
Converts all of the characters in this String to upper case using the rules of the given Locale.
trim()
Returns a copy of the string, with leading and trailing whitespace omitted.
static String
valueOf(boolean b)
Returns the string representation of the boolean argument.
static String
valueOf(char c)
Returns the string representation of the char argument.
static String
valueOf(char[] data)
Returns the string representation of the char array argument.
static String
valueOf(char[] data, int offset, int count)
Returns the string representation of a specific subarray of the char array argument.
static String
valueOf(double d)
Returns the string representation of the double argument.
static String
valueOf(float f)
Returns the string representation of the float argument.
static String
valueOf(int i)
Returns the string representation of the int argument.
static String
valueOf(long l)
Returns the string representation of the long argument.
static String
Returns the string representation of the Object argument.

Java String Pool

As the name suggests, String Pool is a pool of Strings stored in Java Heap Memory. We know that String is special class in java and we can create String object using new operator as well as providing values in double quotes.
Here is a diagram which clearly explains how String Pool is maintained in java heap space and what happens when we use different ways to create Strings.

Example Program on String Methods and String POOL 
import java.lang.*;
import java.io.*;
class DemoOnString
{
public static void main(String args[])
{
String s1="hai how r u";
String s3="    Hai How r u";
char c1[]={'s','a','s','i'};
byte ch[]={66,67,68,69};
String s4=new String(ch);
String s2=new String(c1);
System.out.println(c1);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println(s1.substring(2,6));
System.out.println(s1.toUpperCase());
System.out.println(s1);
System.out.println("fghjk".endsWith(" u"));
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareToIgnoreCase(s3));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s1.equals(s3));
System.out.println(s1.length());
System.out.println("xyz".charAt(1));
System.out.println(s1.replace('h','s'));
System.out.println(s1);
System.out.println(s3.trim());
System.out.println(s3);
System.out.println(s1.concat(s3));
System.out.println(s1);
System.out.println(s3);
// Observe String Pool 
String s6=new String("hello");
String s7=new String("hello");
if(s6==s7) // here its checking only reference but not data 
  System.out.println("Both are same");
else
 System.out.println("Not same");
String s8="hello";
String s9="hello";
if(s8==s9)  // here its checking only reference but not data 
  System.out.println("Both are same");
else
 System.out.println("Not same");
}
}


Output:-

No comments:

Post a Comment