Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding Ninjas X Naukri.com
Table of contents
1.
Introduction
2.
What is String in Java?
3.
String Literals
4.
Concatenation of Strings
5.
String Conversion using toString( ) 
5.1.
java
6.
Character Extraction
6.1.
java
7.
String Comparison
7.1.
java
7.2.
java
7.3.
java
8.
Searching Strings
8.1.
java
9.
Modifying a String
9.1.
java
10.
Data Conversion Using valueOf( )
10.1.
java
11.
Java String class methods
12.
Frequently Asked Questions
12.1.
Is String a keyword in Java?
12.2.
Is String a primitive type or derived type?
12.3.
Which string operations in java are used to compare two strings?
12.4.
Which string class method is used to find a character at a particular index?
12.5.
How do we compare two String in Java? 
12.6.
What does the substring() method do in Java? 
13.
Conclusion
Last Updated: Aug 7, 2024
Easy

Special String Operations in Java

Introduction

Java has a predefined String class that represents character strings. All string literals in Java programs, such as "Hello", are implemented as instances of this class.

For a better grasp of each concept, this article on Strings in Java is split into two parts. The first part of this series covers an introduction to the Java String class, the internal implementation of strings in memory, the reason for the immutability of strings, and some of the peer classes of the Java String class.

String Operations in Java

This article is part-2 of the series and it includes Special String Operations in Java. It explains string literals, concatenation, string comparison, character extraction, modifying a string, searching a string and a lot more. 

Before moving further in this blog, we recommend you to read Strings in Java|Part-1 to ensure a great understanding of this topic.

The most direct way to create a string is to write:

String greeting = "Hello world!";

In this case, "Hello world!" is a string literal—a series of characters in your code that is enclosed in double quotes. 

Let’s see an important feature of string literals in Java.

What is String in Java?

A string in Java is a sequence of characters which is used to represent text. It is a fundamental data type and is implemented as an object of the java.lang.String class. Strings are widely used for storing and manipulating textual data. 

Strings are immutable, meaning their values cannot be changed once created. Use double-quoted literals or by instantiating the String class to create strings.

String Literals

For every string literal in the program, Java automatically creates a String object. Thus, a string literal can be used to initialize a String. 

For example: Both methods create two equivalent strings: 

  1. char chars[] = { 'a', 'b', 'c' }; 
    String s1 = new String(chars); 
     
  2. String s2 = "abc"; 
     
  • A string literal can be used in any place where a String object can be used.
  • We can call methods directly on a quoted string as an object reference, as shown below. 
     
System.out.println("abc".length());      // 3


The length( ) method is called on the string "abc". And the output comes "3". 

Check out the blog on the Fibonacci Series in Java, to know more about it.

Concatenation of Strings

One of the important string operations in Java is concatenation. Concatenation means adding things together in a series. In Java, operators are not applied to String objects except the “+” operator, which concatenates two strings, producing a String object as a result. 

For example

String age = "9";
String s = "He is " + age + " years old.";
System.out.println(s);


Output: 

He is 9 years old.

 

  • String Concatenation with Other Data Types
     

In Java, we can concatenate strings with other data types as well. Below is an example of this case:

For example: Let's consider this version of the previous example:

int age = 9;
String s = "He is " + age + " years old.";
System.out.println(s);


Output: 

He is 9 years old.


In this case, age is an integer, still, the output is the same. 

The reason is that the int value in age is automatically converted into its string representation within a String object. This string is then concatenated as before. 

Note: The Java Online Compiler converts an operand to its string equivalent whenever the other operand of the + is an instance of a string.

Here's a program based on the above concept whose output might surprise you. Let's see:

Code 1

Code 2

String s = “four: ” + 2 + 2; System.out.println(s);

String s = “four: ” + (2 + 2);System.out.println(s);

Output- four: 22

Output- four: 4

  • The reason is operator precedence. It causes the concatenation of "four" with the string equivalent of 2 as the first preference. And then concatenated with the string equivalent of 2 a second time. 
  • To complete the integer addition first, we must use parentheses, like in code 2.

String Conversion using toString( ) 

In Java, every class implements the toString( ) method of the Object class. For representing any object as a string, this method is used. 

General form: String toString( )

  • By overriding toString( ) in our program, we allow them to be fully integrated inside our code.
  • It can be used in print( ) and println( ) statements as well as in concatenation expressions. 
     

For example, The following program demonstrates the above method.

  • java

java

class Demo 
{
   double width;
   double height;
   double depth;
   Demo(double w, double h, double d)
   {
       width = w;
       height = h;
       depth = d;
   }


   // overriding toString() method of the object class
   @Override
   public String toString()
   {
       return "Dimensions given " + width + " by " + depth + " by " + height + ".";
   }
}


public class toStringDemo
{
   public static void main(String args[])
   {
       Demo b = new Demo(10, 12, 14);
       String s = "Demo b: " + b; // concatenate Demo object


       /*
            println() method internally calls toString() method of the object class
            but here the toString() method is overridden by Demo class
       */
       System.out.println(b); // convert Demo to string
       System.out.println(s);
   }
}


Output:

Dimensions given 10.0 by 14.0 by 12.0
Demo b: Dimensions given 10.0 by 14.0 by 12.0


As we can see, Demo’s toString( ) method is automatically invoked when a Demo object

is used in a concatenation expression or a call to println( ).

Also see, Swap Function in Java

Character Extraction

The String class in Java provides several ways to extract characters from a String object. Just like arrays, the string indexes begin at zero. Some of the string operations in Java to perform character extraction are given below:

1. charAt(int index): 

This method is used to return the char value at the specified index. 

The value of the index must be nonnegative and specify a location within the string. 

For example:

char ch;
ch = "abc".charAt(1);


Result: 

assigns the value “b” to ch.


2. getChars( )

To extract more than one character from a String object, we can use this method.

General form: 

void getChars(int sourceStart, int sourceEnd, char target[ ], int targetStart)

Here, sourceStart specifies the starting index of the substring, and sourceEnd specifies an index that is one past the end of the desired substring. The variable target specifies the resultant array. 

For example, The following program demonstrates the above method.

  • java

java

class getCharsDemo 
{
public static void main(String args[])
{
String s = "This is a demo of the getChars method.";
int start = 10;
int end = 14;
char buf[] = new char[end - start];
s.getChars(start, end, buf, 0);
System.out.println(buf);
}
}


Output:

demo


3. getBytes( ): 

This is an alternative method to getChars( ). It stores the characters in a byte array.  

General form:

  • byte[ ] getBytes( )

 

4. toCharArray( )

To convert all the characters of a String object into a character array, this method is used. It returns a character array for the given string. 

General form:

  • char[ ] toCharArray( )

String Comparison

The String class in Java includes several methods to compare strings or substrings. Some of the important string operations in Java to compare strings are given below:

1. equals( ) and equalsIgnoreCase( )

It returns true if the strings contain the same characters in the same order and false otherwise. The comparison is case-sensitive in equals() only. The equalsIgnoreCase( ) doesn’t consider the case of a string. 

General form:

  • boolean equals(Object str)
  • boolean equalsIgnoreCase(String str)
     

For example, The below program demonstrates the above methods.

  • java

java

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));
}
}


Output :

Hello equals Hello -> true
Hello equals Good-bye -> false
Hello equals HELLO -> false
Hello equalsIgnoreCase HELLO -> true


Note: The equals( ) method and the “==”operator perform different functions. 

The equals( ) method compares the characters of a String object, whereas the == operator compares the references of two string objects to see whether they refer to the same instance.

A simple program to demonstrate the above difference is given below:

The variable s1 is pointing to the String "Hello". The object pointed by s2 is constructed with the help of s1. Thus, the values inside the two String objects are the same, but they are distinct objects.

  • java

java

class Demo 
{
public static void main(String args[])
{
String s1 = "Hello";
String s2 = new String(s1);
System.out.println(s1 + " equals " + s2 + " -> " + s1.equals(s2));
System.out.println(s1 + " == " + s2 + " -> " + (s1 == s2));
}
}


Output:

Hello equals Hello -> true
Hello == Hello -> false


2. compareTo()

The compareTo() method of the Java String class compares the string lexicographically. It returns a positive, negative, or zero value. To perform a sorting operation on strings, the compareTo() method comes in handy. 

  • A string is less than another if it comes before in the dictionary order. 
  • A string is greater than another if it comes after in the dictionary order. 

 

General form:

  • int compareTo(String str)

 

Here, str is the string being compared with the invoking string. 

For example, Here is a sample program that sorts an array of strings. The program uses the above method to determine the sort order.

  • java

java

class SortStringFunc 
{
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]);
}
}
}


Output:

Now
aid
all
come
country
for
good
is
men
of
the
the
their
time
to
to


3. compareToIgnoreCase():

This method is the same as compareTo( ), but it ignores the lowercase and uppercase differences of the strings while comparing.

Searching Strings

The Java String class provides two methods that allow us to search a character or substring in another string. 

  • indexOf( ): It searches the first occurrence of a character or substring.
  • lastIndexOf( ): It searches the last occurrence of a character or substring.
     

For example, The program below demonstrates the above methods.

  • java

java

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));
}
}

 

Output:

Now is the time for all good men to come to the aid of their country.
indexOf(t) = 7
lastIndexOf(t) = 65
indexOf(the) = 7
lastIndexOf(the) = 55
indexOf(t, 10) = 11
lastIndexOf(t, 60) = 55
indexOf(the, 10) = 44
lastIndexOf(the, 60) = 55

Modifying a String

In Java, String objects are immutable, and to modify a String, we must use one of the following String methods, which will construct a new copy of the string with the modifications. 

Some of the important string operations in Java to modify strings are given below:

1. substring( )

As the name suggests, ‘sub + string’, is a subset of a string. By subset, we mean the contiguous part of a character array or string.

For example:

illustrative_diagram


In the diagram above, CODING, NINJA, DING all are substrings of the string ‘CODINGNINJAS’.

 

The substring() method is used to fetch a substring from a string in Java. 

General form:

  • String substring(int startIndex)
  • String substring(int startIndex, int endIndex)
     

Here, startIndex specifies the beginning index, and endIndex specifies the stopping point.

The string returned contains all the characters from the beginning index, up to, but not including, the ending index i.e [startindex,endindex-1]

For example: 

In this program, "is" is replaced with "was" every time it is encountered, the substring method is used to do so.

  • java

java

// Substring replacement.
class StringReplace
{
public static void main(String args[])
{
String org = "This is a test. This is, too.";
String search = "is";
String sub = "was";
String result = "";
int i;
do {
// replace all matching substrings
System.out.println(org);
i = org.indexOf(search);
if(i != -1)
{
result = org.substring(0, i);
result = result + sub;
result = result + org.substring(i + search.length());
org = result;
}
} while(i != -1);
}
}


Output :

This is a test. This is, too.
Thwas is a test. This is, too.
Thwas was a test. This is, too.
Thwas was a test. Thwas is, too.
Thwas was a test. Thwas was, too.


Related Article: String Args in Java and Hashcode Method in Java.

2. concat( )

To concatenate two strings in Java, we can use the concat( ) method apart from the “+” operator. 

General form:

  • String concat(String str)
     

This method creates a new object containing the invoking string with the str appended to the end. This performs the same function as the + operator. Refer to the comparison table below:

Using concat()

Using “+” operator

String s1 = “one”;String s2 = s1.concat(“two”);String s1 = “one”;String s2 = s1 + “two”;

Result: s2= “onetwo”

 

3. replace( )

This method is used to replace a character with some other character in a string. It has two forms. 

  • The first replaces all occurrences of one character in the invoking string with another character. 
     

General form:

  • String replace(char original, char replacement)

 

Here, the original specifies the character to be replaced by the character specified by replacement. The resulting string is returned. 

For example:

String s = "Hello".replace('l', 'w');

 

Result: s= “Hewwo”

  • The second form replaces one character sequence with another. 
     

General form:

  • String replace(CharSequence original, CharSequence replacement)

 

4. trim( )

The trim( ) method returns a copy of the invoking string from which any leading and trailing

whitespace has been removed. 

General form:

  • String trim( )
     

For example:

String s = "    Hello World    ".trim();


Result: s= “Hello World” 

Data Conversion Using valueOf( )

For converting different data types into strings, the valueOf() method is used. It is a static method defined in the Java String class. 

General form:

  • static String valueOf(double num) 
  • static String valueOf(long num) 
  • static String valueOf(Object ob) 
  • static String valueOf(char chars[ ])

 

For example:

int num=20;  
String s1=String.valueOf(num);  
s1 = s1+10; //concatenating string s1 with 10 


Result s1=2010
 

Changing the Case of Characters in a String

Sometimes while dealing with real-life programs and in competitive programming, we need to change lower case strings into upper case strings and vice versa. The String class in Java provides the following methods to change the case of a string:

  • The method toLowerCase( ) converts all the characters in a string from uppercase to lowercase. 
  • The toUpperCase( ) method converts all the characters in a string from lowercase to uppercase.

 

Here is an example to demonstrate the the above methods:

  • java

java

// Demonstrate toUpperCase() and toLowerCase().
class ChangeCase
{
public static void main(String args[])
{
String s = "This is a test.";
System.out.println("Original: " + s);
String upper = s.toUpperCase();
String lower = s.toLowerCase();
System.out.println("Uppercase: " + upper);
System.out.println("Lowercase: " + lower);
}
}


Output:

Original: This is a test.
Uppercase: THIS IS A TEST.
Lowercase: this is a test.


Let’s see some frequently asked questions on this topic.

Check out this article - C++ String Concatenation

Java String class methods

Below is the table explaining the commonly used Java string methods: 

MethodDescriptionReturn Type
charAt(int index)Returns the character at the specified indexchar
concat(String str)Concatenates the specified string to the end of this stringString
equals(Object obj)Compares this string to the specified objectboolean
equalsIgnoreCase(String str)Compares this string to the specified string, ignoring caseboolean
indexOf(int ch)Returns the index of the first occurrence of the specified character in this stringint
lastIndexOf(int ch)Returns the index of the last occurrence of the specified character in this stringint
length()Returns the length of this stringint
replace(char oldChar, char newChar)Replaces all occurrences of the specified character in this string with the specified replacement characterString
substring(int beginIndex)Returns a substring of this string starting from the specified indexString
substring(int beginIndex, int endIndex)Returns a substring of this string starting from the specified index and ending at the specified index (exclusive)String
toLowerCase()Converts all characters in this string to lowercaseString
toUpperCase()Converts all characters in this string to uppercaseString
trim()Removes all leading and trailing whitespace characters from this stringString

Frequently Asked Questions

Is String a keyword in Java?

String is not a keyword in Java. It is a final class in java.lang package which is used to represent the set of characters in Java.

Is String a primitive type or derived type?

String is a derived or non-primitive type.

Which string operations in java are used to compare two strings?

There are multiple string operations in java to compare two String like equals() method, equalsIgnoreCase().

Which string class method is used to find a character at a particular index?

The charAt() method of the Java String class is used to find a character at a particular index.

How do we compare two String in Java? 

There are multiple ways to compare two String like equals() method, equalsIgnoreCase().

What does the substring() method do in Java? 

This method is used to find a substring in a given string in Java.

Conclusion

In this tutorial, we learnt about various methods of Java String class with the help of various programs and code snippets. String class is undoubtedly the special class in Java, and it has a rich library of methods and constructors.

To read more about Strings in Java, its memory implementation, StringBuffer and StringBuilder class, we recommend you to visit the Strings in Java| part-1 of this tutorial.

Apart from the above String class methods, there are several other Java regular expressions methods. To learn more about Java regex and the methods, check out this amazing blog: Tutorial On Java Regular Expressions.
 

Recommended problems -

Java is one of the most popular languages. It finds wide applications in Android development and server development. Learning Java in-depth will get you a lucrative placement.

To learn more about Java, take a look at various courses offered by Coding Ninjas. To know more about the best books of Java, check out our blog on 21 Best Java Programming Books for Beginners & Experts.

Happy Learning!

Live masterclass