String:-
The string is the predefined class of Java which provide immutable Object means we cannot change the value of String Object dynamically.
In java, we can declare String using two different ways.
1 String as a reference:-
String s = "hello";
this type of String variable store data in String pool which will be automatically created by JVM according to String data.
for example, if we create three String reference s,s1, and s2 then they will point to the same String pool memory.
String s1="hello";
String s2="hello";
s ............................................................>
s ---------------------------------------------> Hello
s2 --------------------------------------------->
2 String Object:-
String Object will create separate memory under heap using the new keyword.
String a = new String("hello")
String a1 = new String("hello")
It will allocate individual memory allocation and it is completely different from String pool memory because String pool memory will be allocated by JVM according to value.JVM use intern() to create memory for String reference But String Object will create a memory by new keyword.
String reference and String object both are completely different.
String s = "hello"; //String pool which will be created by JVM
String s1= new String("hello") //Heap memory which will be created by String Object itself
if(s==s1)
{
System.out.println("equall");
}
else
{
System.out.println("not equall");
}
A practical explanation of String reference and String Object
public class StringExample {
public static void main(String[] args) {
// String s="hello";
//String s1="hello";
String s= new String("hello");
String s1= new String("hello");
// if(s==s1)
if(s.equals(s1))
System.out.println("equall");
else
System.out.println("not equall");
}
}
equals():- it is the method of Object class for String Subclass which is used to compare two String object because of equals() call toString() internally and fetch data of String address and compare internal values not address hence we should always refer equals() for String comparison.
Another Practical explanation of String Class:-
public class StringExample {
public static void main(String[] args) {
String s="hello";
int a=10;
String a1=" "+a;
String b="10";
//String s1="hello";
// String s= new String("hello");
String s1= new String("hello");
// if(s==s1)
if(a1.trim().equals(b))
System.out.println("equall");
else
System.out.println("not equall");
}
}
StringBuffer and StringBuilder:-
StringBuffer and StringBuilder both provide mutable object means its value can be changed from the actual address.
StringBuffer and StringBuilder, the only difference is that StringBuffer is Synchronized means it can be used in Multithreaded System but StringBuilder class can not be Synchronized.
public class StringExample {
public static void main(String[] args) {
String s = new String("hello");
String s2=s.concat("world");
System.out.println(s);
System.out.println(s2);
}
}
In this program, we can not change the value of s object hence s display "hello" but if we assign value in s2 then s2 display "helloworld".
A practical explanation of StringBuffer and StringBuilder by Program.
public class StringExample {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("hello");
s.append("world");
System.out.println(s);
StringBuilder sb = new StringBuilder("hello");
sb.append("world");
System.out.println(sb);
}
}
ASSIGNMENT:-
Q1 WAP to reverse each word of String in line?
Q2 WAP to replace each char of String from next consecutive char and at the place of space _ will be substituted.
"welcome in scs"
"xfmdpnf_jo_tdt"
Q3 WAP to create separate String to split numeric,upper,lower and special char in any statement?
"hello my name ABC and fees is 12200"
s = "hello_my_name_and_fees_is"
s1= "ABC"
s2="12200"
POST Answer of Questions and ASK to Doubt