Programming in Java
String Handling
Lovely Professional University, Punjab
String
In java, String is basically an object that
represents sequence of char values. An array of
characters works same as java string. For
example:
char[] ch={'j','a','v','a','t','p','o','i','n','t'};
String s=new String(ch);
is same as:
String s="javatpoint";
Introduction
Every string we create is actually an object of type String.
String constants are actually String objects. String
Constant
Example:
System.out.println("This is a String, too");
Objects of type String are immutable i.e. once a String object
is created, its contents cannot be altered.
Why String is Immutable or Final?
String has been widely used as parameter for many java classes e.g.
for opening network connection we can pass hostname and port
number as string ,
we can pass database URL as string for opening database
connection,
we can open any file in Java by passing name of file as argument to
File I/O classes.
In case if String is not immutable , this would lead serious security
threat, means some one can access to any file for which he has
authorization and then can change the file name either deliberately
or accidentally and gain access of those file.
String Class
The java.lang.String class implements
Serializable, Comparable and
CharSequence interfaces.
CharSequence Interface
The CharSequence interface is used to represent
sequence of characters. It is implemented by
String, StringBuffer and StringBuilder classes. It
means, we can create string in java by using
these 3 classes.
The java String is immutable i.e. it cannot
be changed. Whenever we change any
string, a new instance is created. For
mutable string, you can use StringBuffer
and StringBuilder classes.
Introduction
In java, 4 predefined classes are provided that either represent
strings or provide functionality to manipulate them. Those
classes are:
◦ String
◦ StringBuffer
◦ StringBuilder
◦ StringTokenizer
String, StringBuffer, and StringBuilder classes are defined
in java.lang package and all are final.
All of them implement the CharSequence interface.
Important
String Objects are IMMUTABLE.
StringBuffer is MUTABLE and SYNCHRONIZED.
StringBuilder is MUTABLE and NON-SYNCHRONIZED.
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:
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:
String s1="Welcome";
String s2="Welcome";
//will not create new instance
Note:
String objects are stored in a special
memory area known as string constant pool.
2) By new keyword
String s=new String("Welcome");
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);
}
}
Why String Handling?
String handling is required to perform following operations
on some string:
Compare two strings
Search for a substring
Concatenate two strings
Change the case of letters within a string
Creating String objects
class StringDemo
{
public static void main(String args[])
{
String strOb1 = “Java”;
String strOb2 = “Programming”;
String strOb3 = strOb1 + " and " + strOb2;
System.out.println(strOb1);
System.out.println(strOb2);
System.out.println(strOb3);
}
}
String Constructor
public String ()
public String (String)
public String (char [])
public String (byte [])
public String (char [], int offset, int no_of_chars)
public String (byte [], int offset, int no_of _bytes)
Examples
char [] a = {'c', 'o', 'n', 'g', 'r', 'a', 't', 's'};
byte [] b = {82, 65, 86, 73, 75, 65, 78, 84};
String s1 = new String (a); System.out.println(s1);
String s2 = new String (a, 1,5); System.out.println(s2);
String s3 = new String (s1); System.out.println(s3);
String s4 = new String (b); System.out.println(s4);
String s5 = new String (b, 4, 4); System.out.println(s5);
String Concatenation
Concatenating Strings:
String age = "9";
String s = "He is " + age + " years old.";
System.out.println(s);
Using concatenation to prevent long lines:
String longStr = “This could have been” +
“a very long line that would have” +
“wrapped around. But string”+
“concatenation prevents this.”;
System.out.println(longStr);
String Concatenation with Other Data Types
We can concatenate strings with other types of data.
Example:
int age = 9;
String s = "He is " + age + " years old.";
System.out.println(s);
Methods of String class
1.String Length:
length() returns the length of the string i.e. number of
characters.
public int length()
Example:
char chars[] = { 'a', 'b', 'c' };
String s = new String(chars);
System.out.println(s.length());
2. concat( ): used to concatenate two strings.
String concat(String str)
This method creates a new object that contains the invoking string
with the contents of str appended to the end.
concat( ) performs the same function as +.
Example:
String s1 = "one"; String s2 = s1.concat("two");
It generates the same result as the following sequence:
String s1 = "one"; String s2 = s1 + "two";
Character Extraction
3. charAt(): used to obtain the character from the specified index
from a string.
public char charAt (int index);
Example:
char ch;
ch = "abc".charAt(1);
Methods Cont…
4. toCharArray(): returns a character array initialized by the
contents of the string.
public char [] toCharArray();
Example: String s = “India”;
char c[] = s.toCharArray();
for (int i=0; i<c.length; i++)
{
if (c[i]>= 65 && c[i]<=90)
c[i] += 32;
System.out.print(c[i]);
}
Methods Cont…
5. getChars(): used to obtain set of characters from the string.
public void getChars(int start_index, int end_index, char[], int
offset)
Example: String s = “KAMAL”;
char b[] = new char [10];
b[0] = ‘N’; b[1] = ‘E’;
b[2] = ‘E’; b[3] = ‘L’;
s.getChars(0, 4, b, 4);
System.out.println(b);
STRING COMPARISON
There are three ways to compare string in java:
1.By equals() method
2.By = = operator
3.By compareTo() method
1. By equals() Method
equals(): used to compare two strings for equality.
Comparison is case-sensitive.
public boolean equals (Object str)
equalsIgnoreCase( ): To perform a comparison that ignores case
differences.
Note:
This method is defined in Object class and overridden in String class.
equals(), in Object class, compares the value of reference not the content.
In String class, equals method is overridden for content-wise comparison
of two strings.
Example
class equalsDemo {
public static void main(String args[]) {
String s1 = "Hello";
String s2 = "Hello";
String s3 = "Good-bye";
String s4 = "HELLO";
System.out.println(s1 + " equals " + s2 + " -> " +
s1.equals(s2));
System.out.println(s1 + " equals " + s3 + " -> " +
s1.equals(s3));
System.out.println(s1 + " equals " + s4 + " -> " +
s1.equals(s4));
System.out.println(s1 + " equalsIgnoreCase " + s4 +
" -> “ +s1.equalsIgnoreCase(s4));
}
}
2. String compare by == operator
The = = operator compares references not values.
class Teststringcomparison3
{
public static void main(String args[])
{
String s1="Sachin";
String s2="Sachin";
String s3=new String("Sachin");
System.out.println(s1==s2);
//true (because both refer to same instance)
System.out.println(s1==s3);
//
false(because s3 refers to instance created in nonpool
)
}
}
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 )
}
}
String Comparison
startsWith( ) and endsWith( ):
◦ The startsWith( ) method determines whether a given String
begins with a specified string.
◦ Conversely, endsWith( ) determines whether the String in
question ends with a specified string.
boolean startsWith(String str)
boolean endsWith(String str)
Example
String s="Sachin";
System.out.println(s.startsWith("Sa"));
//true
System.out.println(s.endsWith("n"));
//true
String Comparison
compareTo( ):
A string is less than another if it comes before the other in
dictionary order.
A string is greater than another if it comes after the other in
dictionary order.
int compareTo(String str)
Example
class SortString {
static String arr[] = {"Now", "is", "the", "time", "for", "all", "good",
"men",
"to", "come", "to", "the", "aid", "of", "their",
"country"};
public static void main(String args[]) {
for(int j = 0; j < arr.length; j++) {
for(int i = j + 1; i < arr.length; i++) {
if(arr[i].compareTo(arr[j]) < 0) {
String t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
System.out.println(arr[j]);
}
}
}
Searching Strings
The String class provides two methods that allow us to search a
string for a specified character or substring:
indexOf( ): Searches for the first occurrence of a character or
substring.
int indexOf(int ch)
lastIndexOf( ): Searches for the last occurrence of a character or
substring.
int lastIndexOf(int ch)
To search for the first or last occurrence of a substring, use
int indexOf(String str)
int lastIndexOf(String str)
We can specify a starting point for the search using these forms:
int indexOf(int ch, int startIndex)
int lastIndexOf(int ch, int startIndex)
int indexOf(String str, int startIndex)
int lastIndexOf(String str, int startIndex)
Here, startIndex specifies the index at which point the search
begins.
For indexOf( ), the search runs from startIndex to the end of the
string.
For lastIndexOf( ), the search runs from startIndex to zero.
Example
class indexOfDemo {
public static void main(String args[]) {
String s = "Now is the time for all good men " +
"to come to the aid of their country.";
System.out.println(s);
System.out.println("indexOf(t) = " + s.indexOf('t'));
System.out.println("lastIndexOf(t) = " + s.lastIndexOf('t'));
System.out.println("indexOf(the) = " + s.indexOf("the"));
System.out.println("lastIndexOf(the) = " + s.lastIndexOf("the"));
System.out.println("indexOf(t, 10) = " + s.indexOf('t', 10));
System.out.println("lastIndexOf(t, 60) = " + s.lastIndexOf('t', 60));
System.out.println("indexOf(the, 10) = " + s.indexOf("the", 10));
System.out.println("lastIndexOf(the, 60) = " + s.lastIndexOf("the",
60));
}
}
Modifying a String
Because String objects are immutable, whenever we want to modify a
String, it will construct a new copy of the string with modifications.
substring(): used to extract a part of a string.
public String substring (int start_index)
public String substring (int start_index, int end_index)
Example: String s = “ABCDEFG”;
String t = s.substring(2); System.out.println (t);
String u = s.substring (1, 4); System.out.println (u);
Note: Substring from start_index to end_index-1 will be returned.
Example of java substring
public class TestSubstring
{
public static void main(String args[])
{
String s="SachinTendulkar";
System.out.println(s.substring(6));
//Tendulkar
System.out.println(s.substring(0,6));
//Sachin
}
}
replace( ): The replace( ) method has two forms.
The first replaces all occurrences of one character in the invoking
string with another character. It has the following general form:
String replace(char original, char replacement)
Here, original specifies the character to be replaced by the character
specified by replacement.
Example: String s = "Hello".replace('l', 'w');
The second form of replace( ) replaces one character sequence with
another. It has this general form:
String replace(CharSequence original, CharSequence
replacement)
Example:
String s1="Java is a programming language
. Java is a platform. Java is an Island.";
String replaceString=s1.replace("Java","Kav
a");
//
replaces all occurrences of "Java" to "Kava"
System.out.println(replaceString);
trim( )
The trim( ) method returns a copy of the invoking string from which
any leading and trailing whitespace has been removed.
String trim( )
Example:
String s = " Hello World ".trim();
This puts the string “Hello World” into s.
The string trim() method eliminates white spaces before and after
string.
Example
String s=" Sachin ";
System.out.println(s);// Sachin
System.out.println(s.trim());//Sachin
Changing the Case of Characters Within a String
toLowerCase() & toUpperCase()
Bothmethods return a String object that contains the
uppercase or lowercase equivalent of the invoking String.
String toLowerCase( )
String toUpperCase( )
Example
String s="Sachin";
System.out.println(s.toUpperCase());
//SACHIN
System.out.println(s.toLowerCase());
//sachin
System.out.println(s);
//Sachin(no change in original)