Strings Notes
Strings Notes
The basic aim of String Handling concept is storing the string data in the main memory (RAM), manipulating the
data of the String, retrieving the part of the String etc. String Handling provides a lot of concepts that can be
performed on a string such as concatenation of string, comparison of string, find sub string etc.
Java String contains an immutable sequence of Unicode characters. Java String is differ from string in C or C++,
where (in C or C++) string is simply an array of char. String class is encapsulated under java.lang package.
Immutable class means that once an object is created, we cannot change its content. In Java, . In Java String,
Integer, Byte, Short, Float, Double and all other wrapper classes are immutable.
// An immutable class
public final class Student
{
final String name;
final int roll_no;
// Driver class
class Result
{
public static void main(String args[])
{
Student s = new Student("Hitesh", 18);
System.out.println(s.name);
System.out.println(s.roll_no);
}
}
Character
String:
String is a sequence of characters enclosed within double quotes (" ") is known as String.
In java programming to store the character data we have a fundamental datatype called char. Similarly to store
the string data and to perform various operation on String data, we have three predefined classes they are:
String
StringBuffer
StringBuilder
It is a predefined class in java.lang package can be used to handle the String. String class is immutable that
means whose content can not be changed at the time of execution of program.
String class object is immutable that means when we create an object of String class it never changes in the
existing object.
Example:
Example
class StringHandling
{
public static void main(String arg[])
{
String s=new String("java");
s.concat("software");
System.out.println(s);
}
}
Output
java
Explanation: Here we can not change the object of String class so output is only java not java software.
length()
class StringHandling
{
public static void main(String arg[])
{
int l;
String s=new String("Java");
l=s.length();
System.out.println("Length: "+l);
}
}
Output
Length: 4
charAt(index)
class StringHandling
{
public static void main(String arg[])
{
char c;
String s=new String("Java");
c=s.charAt(2);
System.out.println("Character: "+c);
}
}
Output
Character: v
toUpperCase()
toUpperCase(): This method is use to convert lower case string into upper case.
Example
class StringHandling
{
public static void main(String arg[])
{
String s="Java";
System.out.println("String: "+s.toUpperCase());
}
}
Output
String: JAVA
toLowerCase()
toLowerCase(): This method is used to convert lower case string into upper case.
Example
class StringHandling
{
public static void main(String arg[])
{
String s="JAVA";
System.out.println("String: "+s.toLowerCase());
}
}
Output
String: java
concat()
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="Raddy";
System.out.println("Combined String: "+s1.concat(s2));
}
}
Output
equals()
equals(): This method is used to compare two strings, It return true if strings are same otherwise return false. It is
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="Raddy";
String s3="Hitesh";
System.out.println("Compare String: "+s1.equals(s2));
System.out.println("Compare String: "+s1.equals(s3));
}
}
Output
equalsIgnoreCase()
equalsIgnoreCase(): This method is case insensitive method, It return true if the contents of both strings are
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="HITESH";
String s3="Raddy";
System.out.println("Compare String: "+s1.equalsIgnoreCase(s2));
System.out.println("Compare String: "+s1.equalsIgnoreCase(s3));
}
}
Output
compareTo()
compareTo(): This method is used to compare two strings by taking unicode values, It return 0 if the string are
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="Raddy";
int i;
i=s1.compareTo(s2);
if(i==0)
{
System.out.println("Strings are same");
}
else
{
System.out.println("Strings are not same");
}
}
}
Output
compareToIgnoreCase()
compareToIgnoreCase(): This method is case insensitive method, which is used to compare two strings similar
to compareTo().
Example
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="HITESH";
int i;
i=s1.compareToIgnoreCase(s2);
if(i==0)
{
System.out.println("Strings are same");
}
else
{
System.out.println("Strings are not same");
}
}
}
Output
startsWith()
startsWith(): This method return true if string is start with given another string, otherwise it returns false.
Example
class StringHandling
{
public static void main(String arg[])
{
String s="Java is programming language";
System.out.println(s.startsWith("Java"));
}
}
Output
true
endsWith()
endsWith(): This method return true if string is end with given another string, otherwise it returns false.
Example
class StringHandling
{
public static void main(String arg[])
{
String s="Java is programming language";
System.out.println(s.endsWith("language"));
}
}
Output
true
subString()
class StringHandling
{
public static void main(String arg[])
{
String s="Java is programming language";
System.out.println(s.substring(8)); // 8 is starting index
}
}
Output
programming language
Example
class StringHandling
{
public static void main(String arg[])
{
String s="Java is programming language";
System.out.println(s.substring(8, 12));
}
}
Output
prog
indexOf()
indexOf(): This method is used find the index value of given string. It always gives starting index value of first
occurrence of string.
Example
class StringHandling
{
public static void main(String arg[])
{
String s="Java is programming language";
System.out.println(s.indexOf("programming"));
}
}
Output
lastIndexOf()
lastIndexOf(): This method used to return the starting index value of last occurence of the given string.
Example
class StringHandling
{
public static void main(String arg[])
{
String s1="Java is programming language";
String s2="Java is good programming language";
System.out.println(s1.lastIndexOf("programming"));
System.out.println(s2.lastIndexOf("programming"));
}
}
Output
13
trim()
trim(): This method remove space which are available before starting of string and after ending of string.
Example
class StringHandling
{
public static void main(String arg[])
{
String s=" Java is programming language ";
System.out.println(s.trim());
}
}
Output
split()
split(): This method is used to divide the given string into number of parts based on delimiter (special symbols like
@ space , ).
Example
class StringHandling
{
public static void main(String arg[])
{
String s="[email protected]";
String[] s1=s.split("@"); // divide string based on @
for(String c:s1) // foreach loop
{
System.out.println(c);
}
}
}
Output
contact
@tutorial4us.com
replace()
replace(): This method is used to return a duplicate string by replacing old character with new character.
Note: In this method data of original string will never be modify.
Example
class StringHandling
{
public static void main(String arg[])
{
String s1="java";
String s2=s1.replace('j', 'k');
System.out.println(s2);
}
}
Output
kava
It is a predefined class in java.lang package can be used to handle the String, whose object is mutable that means
StringBuffer class is working with thread safe mechanism that means multiple thread are not allowed
StringBuffer class object is mutable that means when we create an object of StringBulder class it can be
change.
Example StringBuffer
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java");
sb.append("software");
System.out.println(sb);
}
}
Output
javasoftware
Explanation: Here we can changes in the existing object of StringBuffer class so output is javasoftware.
String StringBuffer
Both of them are belongs to public final. so that they never participates in inheritance that is is-A
relationship is not possible but they can always participates in As-A and Uses-A relationship.
reverse()
reverse(): This method is used to reverse the given string and also the new value is replaced by the old string.
Example
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java code");
System.out.println(sb.reverse());
}
}
Output
edoc avaj
insert()
insert(): This method is used to insert either string or character or integer or real constant or boolean value at a
Output
append()
append(): This method is used to add the new string at the end of original string.
Example
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java is easy");
System.out.println(sb.append(" to learn"));
}
}
Output
replace()
replace() This method is used to replace any old string with new string based on index value.
Example
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("This is my code");
System.out.println(sb.replace(8, 10, "java"));
}
}
Output
Explanation: In above example java string is replaced with old string (my) which is available between 8 to 10
index value.
deleteCharAt()
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java");
System.out.println(sb.deleteCharAt(3));
}
}
Output
jav
delete()
delete(): This method is used to delete string form given string based on index value.
Example
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java is easy to learn");
StringBuffer s;
s=sb.delete(8, 13);
System.out.println(sb);
}
}
Output
java is to learn
Explanation: In above example string will be deleted which is existing between 8 and 13 index value.
toString()
toString(): This method is used to convert mutable string value into immutable string.
Example
class StringHandling
{
public static void main(String arg[])
{
StringBuffer sb=new StringBuffer("java");
String s=sb.toString();
System.out.println(s);
s.concat("code");
}
}
Output
java
By == operator
By compreTo() method
equals() method always used to comparing contents of both source and destination String. It return true if both
string are same in meaning and case otherwise it returns false. It is case sensitive method.
Example
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="Raddy";
String s3="Hitesh";
System.out.println("Compare String: "+s1.equals(s2));
System.out.println("Compare String: "+s1.equals(s3));
}
}
Output
== Operator is always used for comparing references of both source and destination objects but not their contents.
Example
class StringHandling
{
public static void main(String arg[])
{
String s1=new String("java");
String s2=new String("java");
if(s1==s2)
{
System.out.println("Strings are same");
}
else
{
System.out.println("Strings are not same");
}
}
}
Output
comapreTo() method can be used to compare two string by taking Unicode values. It returns 0 if the string are
Example
class StringHandling
{
public static void main(String arg[])
{
String s1="Hitesh";
String s2="Raddy";
int i;
i=s1.compareTo(s2);
if(i==0)
{
System.out.println("Strings are same");
}
else
{
System.out.println("Strings are not same");
}
}
}
Output
equals() method always used to comparing contents of both source and destination String.
== Operator is always used for comparing references of both source and destination objects but not their contents.
String Concatenation
By concat() method
By + operator
Using Java string concatenation operator (+) you can combined two or more strings.
Example
class StringHandling
{
public static void main(String arg[])
{
String s= "Java" + "Code";
System.out.println(s);
}
}
Output
JavaCode
By concat() method
class StringHandling
{
public static void main(String arg[])
{
String s1="Java";
String s2="Code";
String s3=s1.concat(s2);
System.out.println(s3);
}
}
Output
JavaCode
StringBuilder
It is a predefined class in java.lang package can be used to handle the String. StringBuilder class is almost similar
The main difference StringBuffer and StringBuilder class is StringBuffer is thread safe that means only one
threads allowed at a time to work on the String where as StringBuilder is not thread safe that means multiple
All the things between StringBuffer and StringBuilder are same only difference is StringBuffer is
synchronized and StringBuilder is not synchronized. synchronized means one thread is allow at a time
so it thread safe. Not synchronized means multiple threads are allow at a time so it not thread safe.
StringBuffer StringBuilder
Its methods are synchronized and provide Its methods are not synchronized and unable
2
thread safety. to provide thread safety.
If content is not fixed and keep on changing but thread safety is required then we use StringBuffer
If content is not fixed and keep on changing and thread safety is not required then we use
StringBuilder
StringTokenizer in Java
It is a pre defined class in java.util package can be used to split the given string into tokens (parts) based on
Suppose that we have any string like "Features of Java_Language" when we use stringTokenizer this string is split
into tokens whenever spaces and special symbols present. After split string are :
Example
Features
of
Java
Language
Methods of StringTokenizer
hasMoreTokens()
nextToken()
hasMoreTokens()
It is predefined method of StringTokenizer class used to check whether given StringTokenizer having any
elements or not.
nextToken()
Example of StringTokenizer:
Example of StringTokenizer
import java.util.*;
class Stringtokenizerdemo
{
public static void main(String args[])
{
String str="He is a gentle man";
StringTokenizer st=new StringTokenizer(str," ");
System.out.println("The tokens are: ");
while(st.hasMoreTokens())
{
String one=st.nextToken();
System.out.println(one);
}
}
}
Output
He
is
gentle
man
Data Conversion
1 Converting numeric string type data into numerical / fundamental type values
In order to convert numerical string into numerical or fundamental values we use the following generalized
Example
String s1="100";
int x=Integer.parseInt(s1);
Example
String s2="100.75f";
Float y=Float.parseFloat(s2);
In order to convert numeric / fundamental type values into string values, we use the following predefined static
overloaded method.
Example
int a=10;
3 Converting fundamental type values into object type values:
In order to convert the fundamental data into equivalent wrapper class object type data we use the following
Example:
in JDK 1.4 converting fundamental data type values into wrapper class object is known as boxing. In the case of
JDK 1.5 and in higher version it is optional to the java programmer to convert fundamental data type value into
equivalent wrapper class object. That is implicitly taken care by JVM and it is known as auto boxing.
boxing.
In order to convert wrapper class object data into fundamental type data, we use the following predefined instance
In case of JDK 1.5 and in higher version it is optional to the java programmer to convert object data into
fundamental type data and this process is known as auto un-boxing and its takes care by JVM.
In process of implicitly conversion objects type data into fundamental type data is known as auto un-boxing.
In order to convert String type numeric data into equivalent wrapper class object, we use the following predefined
parameterized constructor by each and every wrapper class except character class.
6 Converting wrapper class object type data into String type data
To convert wrapper class object type data into string type data we use the following generalized predefined instant
Example
int a=10;
String is=String.valueOf(a);
int x=io.intValue();
String so=io.toString();
int x=Integer.parseInt(so);