Likes

Java String


Java String                                    
Java String provides a lot of concepts that can be performed on a string such as compare, concat, equals, split, length, replace, compareTo, intern, substring etc.
In java, string is basically an object that represents sequence of char values.
An array of characters works same as java string. For example:
1.    char[] ch={'j','a','v','a','t','p','o','i','n','t'};  
2.    String s=new String(ch);  
is same as:
1.    String s="javatpoint";
The java.lang.String class implements SerializableComparable and CharSequence interfaces.
The java String is immutable i.e. it cannot be changed but a new instance is created. For mutable class, you can use StringBuffer and StringBuilder class.
We will discuss about immutable string later. Let's first understand what is string in java and how to create the string object.



What is String in java
Generally, string is a sequence of characters. But in java, string is an object that represents a sequence of characters. String class is used to create string object.
How to create String object?
There are two ways to create String object:
1.    By string literal
2.    By new keyword



1) String Literal
Java String literal is created by using double quotes. For Example:
1.    String s="welcome";  
Each time you create a string literal, the JVM checks the string constant pool first. If the string already exists in the pool, a reference to the pooled instance is returned. If string doesn't exist in the pool, a new string instance is created and placed in the pool. For example:
1.    String s1="Welcome";  
2.    String s2="Welcome";//will not create new instance  

In the above example only one object will be created. Firstly JVM will not find any string object with the value "Welcome" in string constant pool, so it will create a new object. After that it will find the string with the value "Welcome" in the pool, it will not create new object but will return the reference to the same instance.
Note: String objects are stored in a special memory area known as string constant pool.



Why java uses concept of string literal?
To make Java more memory efficient (because no new objects are created if it exists already in string constant pool).



2) By new keyword
1.    String s=new String("Welcome");//creates two objects and one reference variable  
In such case, JVM will create a new string object in normal(non pool) heap memory and the literal "Welcome" will be placed in the string constant pool. The variable s will refer to the object in heap(non pool).



Java String Example
public class StringExample{  
public static void main(String args[]){  
String s1="java";//creating string by java string literal  
  
char ch[]={'s','t','r','i','n','g','s'};  
String s2=new String(ch);//converting char array to string  
  
String s3=new String("example");//creating java string by new keyword  
  
System.out.println(s1);  
System.out.println(s2);  
System.out.println(s3);  
}}  
java
strings
example



Java String class methods
The java.lang.String class provides many useful methods to perform operations on sequence of char values.
Immutable String in Java
In java, string objects are immutable. Immutable simply means unmodifiable or unchangeable.
Once string object is created its data or state can't be changed but a new string object is created.
Let's try to understand the immutability concept by the example given below:
class Testimmutablestring{  
 public static void main(String args[]){  
   String s="Sachin";  
   s.concat(" Tendulkar");//concat() method appends the string at the end  
   System.out.println(s);//will print Sachin because strings are immutable objects  
 }  
}  
Output:Sachin
Now it can be understood by the diagram given below. Here Sachin is not changed but a new object is created with sachintendulkar. That is why string is known as immutable.

As you can see in the above figure that two objects are created but s reference variable still refers to "Sachin" not to "Sachin Tendulkar".
But if we explicitely assign it to the reference variable, it will refer to "Sachin Tendulkar" object.For example:
1.    class Testimmutablestring1{  
2.     public static void main(String args[]){  
3.       String s="Sachin";  
4.       s=s.concat(" Tendulkar");  
5.       System.out.println(s);  
6.     }  
7.    }  
Output:Sachin Tendulkar
In such case, s points to the "Sachin Tendulkar". Please notice that still sachin object is not modified.



Why string objects are immutable in java?
Because java uses the concept of string literal.Suppose there are 5 reference variables,all referes to one object "sachin".If one reference variable changes the value of the object, it will be affected to all the reference variables. That is why string objects are immutable in java.
Java String compare

We can compare string in java on the basis of content and reference.
It is used in authentication (by equals() method), sorting (by compareTo() method), reference matching (by == operator) etc.
There are three ways to compare string in java:
  1. By equals() method
  2. By = = operator
  3. By compareTo() method
1) String compare by equals() method
The String equals() method compares the original content of the string. It compares values of string for equality. String class provides two methods:
  • public boolean equals(Object another) compares this string to the specified object.
  • public boolean equalsIgnoreCase(String another) compares this String to another string, ignoring case.
1.    class Teststringcomparison1{  
2.     public static void main(String args[]){  
3.       String s1="Sachin";  
4.       String s2="Sachin";  
5.       String s3=new String("Sachin");  
6.       String s4="Saurav";  
7.       System.out.println(s1.equals(s2));//true  
8.       System.out.println(s1.equals(s3));//true  
9.       System.out.println(s1.equals(s4));//false  
10.  }  
11. }  
Output:true
       true
       false
class Teststringcomparison2{  
 public static void main(String args[]){  
   String s1="Sachin";  
   String s2="SACHIN";  
  
   System.out.println(s1.equals(s2));//false  
   System.out.println(s1.equalsIgnoreCase(s3));//true  
 }  
}  
Output:false
       true



2) String compare by == operator
The = = operator compares references not values.
1.    class Teststringcomparison3{  
2.     public static void main(String args[]){  
3.       String s1="Sachin";  
4.       String s2="Sachin";  
5.       String s3=new String("Sachin");  
6.       System.out.println(s1==s2);//true (because both refer to same instance)  
7.       System.out.println(s1==s3);//false(because s3 refers to instance created in nonpool)  
8.     }  
9.    }  
Output:true
       false



3) String compare by compareTo() method
The String compareTo() method compares values lexicographically and returns an integer value that describes if first string is less than, equal to or greater than second string.
Suppose s1 and s2 are two string variables. If:
  • s1 == s2 :0
  • s1 > s2   :positive value
  • s1 < s2   :negative value
class Teststringcomparison4{  
 public static void main(String args[]){  
   String s1="Sachin";  
   String s2="Sachin";  
   String s3="Ratan";  
   System.out.println(s1.compareTo(s2));//0  
   System.out.println(s1.compareTo(s3));//1(because s1>s3)  
   System.out.println(s3.compareTo(s1));//-1(because s3 < s1 )  
 }  
}  
Output:0
       1
       -1
String Concatenation in Java
In java, string concatenation forms a new string that is the combination of multiple strings. There are two ways to concat string in java:
  1. By + (string concatenation) operator
  2. By concat() method
1) String Concatenation by + (string concatenation) operator
Java string concatenation operator (+) is used to add strings. For Example:
class TestStringConcatenation1{  
 public static void main(String args[]){  
   String s="Sachin"+" Tendulkar";  
   System.out.println(s);//Sachin Tendulkar  
 }  
}  
Output:Sachin Tendulkar
The Java compiler transforms above code to this:
1.    String s=(new StringBuilder()).append("Sachin").append(" Tendulkar).toString();  
In java, String concatenation is implemented through the StringBuilder (or StringBuffer) class and its append method. String concatenation operator produces a new string by appending the second operand onto the end of the first operand. The string concatenation operator can concat not only string but primitive values also. For Example:
1.    class TestStringConcatenation2{  
2.     public static void main(String args[]){  
3.       String s=50+30+"Sachin"+40+40;  
4.       System.out.println(s);//80Sachin4040  
5.     }  
6.    }  
80Sachin4040
Note: After a string literal, all the + will be treated as string concatenation operator.

2) String Concatenation by concat() method
The String concat() method concatenates the specified string to the end of current string. Syntax:
1.    public String concat(String another)  
Let's see the example of String concat() method.
1.    class TestStringConcatenation3{  
2.     public static void main(String args[]){  
3.       String s1="Sachin ";  
4.       String s2="Tendulkar";  
5.       String s3=s1.concat(s2);  
6.       System.out.println(s3);//Sachin Tendulkar  
7.      }  
8.    }  
Sachin Tendulkar

Substring in Java
A part of string is called substring. In other words, substring is a subset of another string. In case of substring startIndex is inclusive and endIndex is exclusive.
Note: Index starts from 0.

You can get substring from the given string object by one of the two methods:
  1. public String substring(int startIndex): This method returns new String object containing the substring of the given string from specified startIndex (inclusive).
  2. public String substring(int startIndex, int endIndex): This method returns new String object containing the substring of the given string from specified startIndex to endIndex.
In case of string:
  • startIndex: inclusive
  • endIndex: exclusive
Let's understand the startIndex and endIndex by the code given below.
1.    String s="hello";  
2.    System.out.println(s.substring(0,2));//he  
In the above substring, 0 points to h but 2 points to e (because end index is exclusive).
Example of java substring
1.    public class TestSubstring{  
2.     public static void main(String args[]){  
3.       String s="Sachin Tendulkar";  
4.       System.out.println(s.substring(6));//Tendulkar  
5.       System.out.println(s.substring(0,6));//Sachin  
6.     }  
7.    }  
Tendulkar
Sachin

Java String class methods
The java.lang.String class provides a lot of methods to work on string. By the help of these methods, we can perform operations on string such as trimming, concatenating, converting, comparing, replacing strings etc.
Java String is a powerful concept because everything is treated as a string if you submit any form in window based, web based or mobile application.
Let's see the important methods of String class.
Java String toUpperCase() and toLowerCase() method
The java string toUpperCase() method converts this string into uppercase letter and string toLowerCase() method into lowercase letter.
1.    String s="Sachin";  
2.    System.out.println(s.toUpperCase());//SACHIN  
3.    System.out.println(s.toLowerCase());//sachin  
4.    System.out.println(s);//Sachin(no change in original)  
SACHIN
sachin
Sachin
Java String trim() method
The string trim() method eliminates white spaces before and after string.
1.    String s="  Sachin  ";  
2.    System.out.println(s);//  Sachin    
3.    System.out.println(s.trim());//Sachin  
  Sachin 
Sachin
Java String startsWith() and endsWith() method
1.    String s="Sachin";  
2.     System.out.println(s.startsWith("Sa"));//true  
3.     System.out.println(s.endsWith("n"));//true  
true
true
Java String charAt() method
The string charAt() method returns a character at specified index.
1.    String s="Sachin";  
2.    System.out.println(s.charAt(0));//S  
3.    System.out.println(s.charAt(3));//h  
S
h
Java String length() method
The string length() method returns length of the string.
1.    String s="Sachin";  
2.    System.out.println(s.length());//6  
6
Java String intern() method
A pool of strings, initially empty, is maintained privately by the class String.
When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
1.    String s=new String("Sachin");  
2.    String s2=s.intern();  
3.    System.out.println(s2);//Sachin  
Sachin
Java String valueOf() method
The string valueOf() method coverts given type such as int, long, float, double, boolean, char and char array into string.
1.    int a=10;  
2.    String s=String.valueOf(a);  
3.    System.out.println(s+10);  
Output:
1010
Java String replace() method
The string replace() method replaces all occurrence of first sequence of character with second sequence of character.
1.    String s1="Java is a programming language. Java is a platform. Java is an Island.";    
2.    String replaceString=s1.replace("Java","Kava");//replaces all occurrences of "Java" to "Kava"    
3.    System.out.println(replaceString);    
Output:
Kava is a programming language. Kava is a platform. Kava is an Island.


No comments: