★ India’s Student Guidance Platform

String Handling in Java — ICSE Class 10 Computer Applications

String Handling in Java — ICSE Class 10 Computer Applications

Aap String ko shuru se hi use kar rahe hain — har System.out.println("...") mein. Lekin ab tak woh sirf chhaapne ki cheez thi. Is chapter mein aap dekhenge ki ek String asal mein characters ka silsila hai, jise aap kaat sakte hain, jod sakte hain, ulta kar sakte hain, aur uske andar dhoondh sakte hain. Yeh Unit 8 hai, aur syllabus ismein String class ke methods ki ek poori list naam se maangta hai — is chapter mein woh saare aa gaye hain, har ek ka asli output ke saath.

Strings as a Sequence of Characters

Ek String ke andar har character apni ek jagah par baitha hota hai, aur us jagah ka number hi uska index hai. Bilkul array ki tarah, yahan bhi index 0 se shuru hota hai.

   C   O   M   P   U   T   E   R
   0   1   2   3   4   5   6   7
Key Rule

String ke liye length() likha jaata hai — brackets ke saath, kyunki woh ek method hai. Array ke liye length likha jaata hai — bina brackets ke, kyunki woh ek variable hai. Yeh ek akshar ka fark har saal kisi na kisi ko le doobta hai. s.length() sahi, s.length galat.

trim, toUpperCase, toLowerCase

Ye teen methods ek nayi String lauta dete hain — purani ko chhoote tak nahi. Yeh baat is poore chapter ki sabse zaroori aadat hai.

Worked Example 1 — Cleaning up and changing case

class S1
{
    public static void main(String args[])
    {
        String s = "  Principal Saab  ";
        System.out.println("[" + s + "]");
        System.out.println("[" + s.trim() + "]");
        System.out.println("Length with spaces = " + s.length());
        System.out.println("Length trimmed     = " + s.trim().length());
        System.out.println(s.trim().toUpperCase());
        System.out.println(s.trim().toLowerCase());
    }
}

Output

[  Principal Saab  ]
[Principal Saab]
Length with spaces = 18
Length trimmed     = 14
PRINCIPAL SAAB
principal saab

Square brackets isliye lagaye taaki khaali jagah dikh sake. trim() ne sirf aage-peeche ki jagah hatai — beech wali jagah waisi hi rahi, isliye trimmed length 14 hai (13 akshar + 1 beech ki jagah). Aur dhyaan dijiye s.trim().length() — ek method ka jawaab par doosra method lagana bilkul jaayaz hai, ise chaining kehte hain.

Common Mistake

Yeh soch lena ki s.toUpperCase(); likhne se s khud badal jaayega. Nahi badlega. Java mein String immutable hai — ek baar bani String kabhi badalti nahi. Har method ek nayi String banata hai. Agar badla hua roop chahiye toh use pakadna padega: s = s.toUpperCase();

Extracting: charAt, indexOf, substring

Ye methods String ke andar se kuch nikaalte hain ya batate hain ki kuch kahan hai.

Worked Example 2 — The extraction methods on one word

class S2
{
    public static void main(String args[])
    {
        String s = "COMPUTER";
        System.out.println("charAt(0)     = " + s.charAt(0));
        System.out.println("charAt(7)     = " + s.charAt(7));
        System.out.println("indexOf('P')  = " + s.indexOf('P'));
        System.out.println("indexOf('Z')  = " + s.indexOf('Z'));
        System.out.println("lastIndexOf('U') = " + s.lastIndexOf('U'));
        System.out.println("substring(3)  = " + s.substring(3));
        System.out.println("substring(0,4)= " + s.substring(0, 4));
        System.out.println("replace       = " + s.replace('O', '0'));
        System.out.println("concat        = " + s.concat(" SCIENCE"));
    }
}

Output

charAt(0)     = C
charAt(7)     = R
indexOf('P')  = 3
indexOf('Z')  = -1
lastIndexOf('U') = 4
substring(3)  = PUTER
substring(0,4)= COMP
replace       = C0MPUTER
concat        = COMPUTER SCIENCE

Teen baatein yaad rakhne layak hain. indexOf jab kuch na mile toh -1 lautata hai — isiliye “mila ya nahi” wale sawaalon mein == -1 se jaanch ki jaati hai. substring(3) index 3 se aakhir tak deta hai. Aur substring(0, 4) index 0 se shuru karke 4 se pehle tak deta hai — yaani 4 shaamil nahi hai.

Exam Tip

substring(a, b) ka niyam ek line mein: a shaamil, b nahi. Nikle hue characters ki ginti hamesha b - a hoti hai. Isliye substring(0, 4) ne poore chaar akshar diye: C, O, M, P. Yeh sabse zyada poochha jaane wala String sawaal hai.

valueOf — Turning Anything Into a String

Syllabus ki list mein ek aur method hai jise log aksar bhool jaate hain: String.valueOf(). Yeh kisi bhi type ki value ko String bana deta hai — int, double, char, boolean, sab. Yeh Integer.parseInt() ka bilkul ulta kaam hai: parseInt String se number banata hai, valueOf number se String.

Worked Example 7 — valueOf on four different types

class S7
{
    public static void main(String args[])
    {
        int n = 250;
        double d = 3.75;
        char c = 'A';
        boolean b = true;

        String s1 = String.valueOf(n);
        String s2 = String.valueOf(d);
        String s3 = String.valueOf(c);
        String s4 = String.valueOf(b);

        System.out.println("From int     : " + s1 + " , length = " + s1.length());
        System.out.println("From double  : " + s2 + " , length = " + s2.length());
        System.out.println("From char    : " + s3 + " , length = " + s3.length());
        System.out.println("From boolean : " + s4 + " , length = " + s4.length());
        System.out.println("Now a String : " + (s1 + 10));
        System.out.println("Back to int  : " + (Integer.parseInt(s1) + 10));
    }
}

Output

From int     : 250 , length = 3
From double  : 3.75 , length = 4
From char    : A , length = 1
From boolean : true , length = 4
Now a String : 25010
Back to int  : 260

Saboot aakhri do lines mein hai. s1 ab ek String hai, isliye s1 + 10 ne jod nahi kiya, chipka diya → 25010. Aur Integer.parseInt(s1) + 10 ne asli jod kiya → 260. Dhyaan dijiye ki valueOf par length() lagaya ja sakta hai — yani jawaab sach mein String hai. Yeh tareeka tab kaam aata hai jab kisi number ke ank ginne hon.

Exam Tip

Do jodiyon ko saath yaad rakhiye. String se number: Integer.parseInt(), Double.parseDouble(). Number se String: String.valueOf(). Aur String ke andar ke ek-ek character ko jaanchne ke liye Character class ke methods — Character.isDigit(), isLetter(), isUpperCase(), toLowerCase(). Ye teenon parivaar Library Classes chapter se aate hain aur String wale programs mein saath-saath chalte hain.

Comparing Strings the Right Way

Yeh chapter ka sabse zaroori hissa hai. Do Strings ko == se nahi milaya jaata — uske liye equals() hai. Aur agar chhote-bade akshar ka fark nahi dekhna, toh equalsIgnoreCase().

compareTo() thoda alag kaam karta hai: woh true/false nahi, ek number lautata hai. Zero ka matlab dono barabar; rinaatmak matlab pehli String varnamala mein pehle aati hai; dhanatmak matlab baad mein.

Worked Example 3 — All the comparison methods together

class S3
{
    public static void main(String args[])
    {
        String a = "Java";
        String b = "java";
        String c = "Java";

        System.out.println("a.equals(b)           = " + a.equals(b));
        System.out.println("a.equals(c)           = " + a.equals(c));
        System.out.println("a.equalsIgnoreCase(b) = " + a.equalsIgnoreCase(b));
        System.out.println("a.compareTo(b)        = " + a.compareTo(b));
        System.out.println("a.compareTo(c)        = " + a.compareTo(c));
        System.out.println("a.compareToIgnoreCase(b) = " + a.compareToIgnoreCase(b));
        System.out.println("a.startsWith(\"Ja\")    = " + a.startsWith("Ja"));
        System.out.println("a.endsWith(\"va\")      = " + a.endsWith("va"));
    }
}

Output

a.equals(b)           = false
a.equals(c)           = true
a.equalsIgnoreCase(b) = true
a.compareTo(b)        = -32
a.compareTo(c)        = 0
a.compareToIgnoreCase(b) = 0
a.startsWith("Ja")    = true
a.endsWith("va")      = true

-32 kahan se aaya? compareTo pehle alag padne wale character ki Unicode values ka antar deta hai. Yahan pehla hi character alag hai: 'J' ki value 74 aur 'j' ki 106 — toh 74 − 106 = −32. Isliye jawaab rinaatmak hai, jo batata hai ki "Java" varnamala mein "java" se pehle aata hai (capital letters ki value chhoti hoti hai).

Common Mistake

Do Strings ko == se milana. if (s1 == s2) content ki tulna nahi karta — woh dekhta hai ki dono ek hi object ko point kar rahe hain ya nahi. Kabhi-kabhi yeh sanyog se true aa jaata hai, isliye galti aur bhi khatarnaak hai. Content milana ho toh hamesha s1.equals(s2) likhiye.

Counting Inside a String

Yeh dhaancha aapne Library Classes chapter mein dekha tha, aur yahan woh apne poore roop mein aata hai. Section B ke sawaalon mein yeh sabse zyada aata hai.

Worked Example 4 — Vowels, consonants, digits and spaces in one pass

class S4
{
    public static void main(String args[])
    {
        String s = "Principal Saab 2026";
        int v = 0, cons = 0, dig = 0, sp = 0;

        for (int i = 0; i < s.length(); i++)
        {
            char c = Character.toLowerCase(s.charAt(i));
            if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
                v++;
            else if (Character.isLetter(c))
                cons++;
            else if (Character.isDigit(c))
                dig++;
            else if (c == ' ')
                sp++;
        }
        System.out.println("Vowels     = " + v);
        System.out.println("Consonants = " + cons);
        System.out.println("Digits     = " + dig);
        System.out.println("Spaces     = " + sp);
    }
}

Output

Vowels     = 5
Consonants = 8
Digits     = 4
Spaces     = 2

Do chaalaakiyaan pakadiye. Pehli, Character.toLowerCase() shuru mein hi laga diya, isliye capital aur small dono ek saath sambhal gaye — das conditions ki jagah paanch. Doosri, else if ka kram — vowel ki jaanch pehle hui, isliye jo bacha aur akshar tha wahi consonant gina gaya. Agar isLetter pehle likh dete toh vowels bhi consonants mein gine jaate.

Reversing and Palindromes

Palindrome woh shabd hai jo aage se aur peeche se ek jaisa padha jaaye. Tareeka seedha hai: ulti String banaiye, phir equals() se milaiye.

Worked Example 5 — Reverse and palindrome check

class S5
{
    public static void main(String args[])
    {
        String s = "MALAYALAM";
        String rev = "";

        for (int i = s.length() - 1; i >= 0; i--)
            rev = rev + s.charAt(i);

        System.out.println("Original = " + s);
        System.out.println("Reversed = " + rev);
        if (s.equals(rev))
            System.out.println(s + " is a palindrome");
        else
            System.out.println(s + " is not a palindrome");
    }
}

Output

Original = MALAYALAM
Reversed = MALAYALAM
MALAYALAM is a palindrome

Loop s.length() - 1 se shuru hokar 0 tak ulta chala. rev ko "" (khaali String) se shuru karna zaroori hai — null se shuru karenge toh output mein null chhap jaayega. Aur milane ke liye equals() hi lagaya, == nahi.

String Arrays and Alphabetical Order

Syllabus String array aur naamon ko varnamala ke kram mein lagana bhi maangta hai. Sorting ka tareeka wahi bubble sort hai jo aapne Arrays chapter mein padha — bas > ki jagah compareTo() lag jaata hai, kyunki Strings ko > se nahi milaya ja sakta.

Worked Example 6 — Sorting names alphabetically

class S6
{
    public static void main(String args[])
    {
        String names[] = {"Meera", "Aarav", "Zoya", "Kabir"};

        for (int i = 0; i < names.length - 1; i++)
        {
            for (int j = 0; j < names.length - 1 - i; j++)
            {
                if (names[j].compareTo(names[j + 1]) > 0)
                {
                    String t = names[j];
                    names[j] = names[j + 1];
                    names[j + 1] = t;
                }
            }
        }
        for (int i = 0; i < names.length; i++)
            System.out.println(names[i]);
    }
}

Output

Aarav
Kabir
Meera
Zoya

Poora dhaancha bubble sort ka hi hai. Sirf ek line badli: if (a[j] > a[j+1]) ki jagah if (names[j].compareTo(names[j+1]) > 0). Yaad rakhiye — compareTo ka jawaab 0 se bada hone ka matlab hai ki pehla naam baad mein aata hai, isliye unhein badalna hai.

Dry-Run Bank — Output Questions

Dry Run 1 — index and substring arithmetic

class DS1
{
    public static void main(String args[])
    {
        String s = "PROGRAM";
        System.out.println(s.length());
        System.out.println(s.charAt(2));
        System.out.println(s.indexOf('R'));
        System.out.println(s.lastIndexOf('R'));
        System.out.println(s.substring(2, 5));
    }
}
Show Answer
7
O
1
4
OGR

P-R-O-G-R-A-M ke indexes 0 se 6 hain. charAt(2) = O. R do baar hai — indexOf ne pehla (1) diya aur lastIndexOf ne aakhri (4). substring(2,5) ne index 2, 3, 4 diye — 5 shaamil nahi → OGR.

Dry Run 2 — the charAt addition trap

class DS2
{
    public static void main(String args[])
    {
        String a = "Hello";
        String b = "World";
        System.out.println(a.concat(b));
        System.out.println(a + " " + b);
        System.out.println(a.length() + b.length());
        System.out.println(a.charAt(0) + b.charAt(0));
        System.out.println("" + a.charAt(0) + b.charAt(0));
    }
}
Show Answer
HelloWorld
Hello World
10
159
HW

Chauthi line hi asli sawaal hai. charAt ek char lautata hai, aur do char ko + se jodne par Java unki Unicode values jod deta hai'H' = 72 aur 'W' = 87, toh 159. Paanchvi line mein aage khaali String "" lagi hai, isliye poora expression concatenation ban gaya aur HW chhapa. Yeh ek do-marks ka pakka sawaal hai.

Dry Run 3 — chaining methods

class DS3
{
    public static void main(String args[])
    {
        String s = "ICSE";
        System.out.println(s.substring(1));
        System.out.println(s.substring(1, 3));
        System.out.println(s.replace('E', 'X'));
        System.out.println(s.toLowerCase().indexOf('c'));
    }
}
Show Answer
CSE
CS
ICSX
1

Aakhri line dhyaan se dekhiye. Pehle toLowerCase() ne "icse" banaya, phir usmein 'c' dhoondha gaya → index 1. Agar toLowerCase() na hota toh "ICSE" mein chhota 'c' milta hi nahi aur jawaab -1 aata.

How This Chapter Is Examined

CISCE ke Class X syllabus ke anusaar Computer Applications (86) mein ek written paper, do ghante ka, 100 marks hota hai, aur uske alaawa Internal Assessment bhi 100 marks ka, jo poori tarah practical hai aur jismein saal bhar mein kam se kam 20 lab assignments karne hote hain. Question paper mein 100 marks do hisson mein bante hain: Section A — 40 marks, jismein saare sawaal karne hote hain, aur Section B — 60 marks, jismein chhe sawaalon mein se koi chaar karne hote hain. Section A khud do sawaalon ka banta hai: Question 1 20 marks ke MCQs, aur Question 2 20 marks ke chhote sawaal — das hisse, har ek 2 marks ka.

Arrays ke baad String handling is paper ka doosra sabse bhaari chapter hai. Section A mein substring, indexOf aur charAt ke chhote output questions lagbhag pakke hain. Aur Section B mein aksar ek poora program aata hai — vowels ginna, palindrome jaanchna, shabd ulta karna, ya naamon ko varnamala mein lagana.

Exam Tip

Output questions mein sabse pehle String ke neeche index likh dijiye — 0, 1, 2, 3… Das second lagte hain, aur substring ya charAt ka jawaab phir kabhi galat nahi hota. Examiner ko bhi dikhta hai ki aapne method samjha hai.

Practice Worksheet (10 Questions)

Q1. Why must two strings be compared with equals() and not with ==?

Show Answer

== compares references, that is, whether the two variables point to the very same object in memory, not whether they contain the same characters. equals() compares the actual contents character by character and is therefore the correct test. Using == can appear to work by coincidence in small programs, which makes the mistake harder to spot.

Q2. State the difference between length and length().

Show Answer

length without brackets is a variable belonging to an array, giving the number of elements, as in a.length. length() with brackets is a method of the String class, giving the number of characters, as in s.length(). Writing s.length or a.length() is a compile-time error.

Q3. For String s = "COMPUTER"; give the output of s.substring(0, 4), s.substring(3), s.indexOf('Z') and s.charAt(7).

Show Answer
COMP
PUTER
-1
R

substring(0,4) mein 4 shaamil nahi hai, isliye chaar akshar mile. indexOf ne -1 diya kyunki Z hai hi nahi.

Q4. Give the output.

class QS1
{
    public static void main(String args[])
    {
        String s = "EDUCATION";
        String out = "";
        for (int i = 0; i < s.length(); i++)
        {
            char c = s.charAt(i);
            if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
                out = out + "*";
            else
                out = out + c;
        }
        System.out.println(out);
    }
}
Show Answer
*D*C*T**N

E, U, A, I, O sab * ban gaye. Bache hue akshar D, C, T aur N waise hi rahe. Ginti milaiye: nau characters, nau nikle.

Q5. What does "Java".compareTo("java") return, and why?

Show Answer

It returns -32. compareTo() finds the first position at which the two strings differ and returns the difference of the Unicode values there. The first characters differ: 'J' is 74 and 'j' is 106, so the result is 74 − 106 = −32. A negative result means the first string comes earlier in alphabetical order. Using compareToIgnoreCase() instead would return 0.

Q6. A student writes s.toUpperCase(); and then prints s, but sees no change. Explain why, and give the corrected line.

Show Answer

Strings in Java are immutable — no method can change an existing String. toUpperCase() creates and returns a brand new String, and because the returned value was not stored anywhere it was discarded. The corrected line is s = s.toUpperCase();. The same applies to trim(), replace(), concat() and substring().

Q7. Write a program that checks whether "MALAYALAM" is a palindrome.

Show Answer
class S5
{
    public static void main(String args[])
    {
        String s = "MALAYALAM";
        String rev = "";

        for (int i = s.length() - 1; i >= 0; i--)
            rev = rev + s.charAt(i);

        System.out.println("Original = " + s);
        System.out.println("Reversed = " + rev);
        if (s.equals(rev))
            System.out.println(s + " is a palindrome");
        else
            System.out.println(s + " is not a palindrome");
    }
}

Output:
Original = MALAYALAM
Reversed = MALAYALAM
MALAYALAM is a palindrome

rev ko khaali String "" se shuru kijiye, aur milane ke liye equals() lagaiye — == nahi.

Q8. Give the output and explain the fourth line.

String a = "Hello";
String b = "World";
System.out.println(a.length() + b.length());
System.out.println(a.charAt(0) + b.charAt(0));
Show Answer
10
159

Teesri line: 5 + 5 = 10, dono int hain. Chauthi line: charAt char lautata hai, aur do char jodne par Java unki Unicode values jodta hai — 'H' = 72, 'W' = 87, toh 159. Agar HW chahiye tha toh aage "" lagana padta.

Q9. Explain why compareTo() is used instead of > when sorting a String array alphabetically, and write the if condition for a bubble sort.

Show Answer

The relational operators > and < work only on primitive types; a String is an object, so names[j] > names[j+1] will not compile. compareTo() returns an int that can then be compared with zero. The bubble sort condition is if (names[j].compareTo(names[j + 1]) > 0), meaning the first name comes later alphabetically and the two should be swapped.

Q10. For String s = " Principal Saab "; give s.length() and s.trim().length(), and explain the difference.

Show Answer
18
14

trim() removes only the spaces at the beginning and the end, not the one in the middle. The trimmed string is "Principal Saab", which is 13 letters plus the single internal space, giving 14. The original had two leading and two trailing spaces, so 14 + 4 = 18.

↑ Back to top

Aage kya? Is chapter ke saath ICSE Class 10 Computer Applications ka theory syllabus poora ho gaya. Ab sabse achha kadam yeh hai ki har chapter ke worksheet dobara kijiye — bina answer khole. Peeche jaana ho toh Arrays aur Library Classes se shuru kijiye, kyunki String ke sawaal aksar unhi ke saath aate hain.

Kaizen: Aaj se roz ek shabd uthaiye — apna naam, apne shehar ka naam, kuch bhi — aur uske neeche 0, 1, 2, 3… index likhiye. Phir khud se poochhiye: substring(2, 5) kya dega? indexOf kis akshar par kya dega? Ek hafte mein aapko index ginne ke liye rukna nahi padega, aur Section A ke String sawaal sabse tez nikal jaayenge.

Written & reviewed by Team Principal Saab — Meet the team →