String constructorString literalsString s="abc"//use string literal 1: String s= new String();2:String (char chars[])String (char chars[], int startIndex, int numChars)nexample:char chars[]={'a', 'b', 'c', 'd', 'e', 'f'};String s= new String(chars);String s2= new String(chars, 2, 3);3:String(String strObj)4:String(byte chrs[])String(byte chrs[], int startIndex, int numChars);5:String(StringBuffer strBufObj)String(StringBuider strBuildObj)strObj.length()String Concatenationint age= 9;String s="he is "+ age +"years old";//int age automatically to stringString s= "four: "+ 2 +2; //result: four:22String s= "four: "+ (2+2);//result: four:4toString() method is automatically invoked when used in a concatenation exPRession or in a call to println();String s= "Box: b" +b;//concatenation, class box bSystem.out.println(s);// class box b override toString() methodchar charAt(int where);char ch= "abc".charAt(1);//assigns the value b to chvoid getChars(int sourceStart, int sourceEnd, char target[], int targetStart)//extract more than one character at a time. example: String s= "This is a demo of the getChars method.";char buf[]= new char[4];s.getChars(10, 14, buf, 0);//buf[]={'d','e','m','o'};byte[] getBytes();char[] toCharArray();boolean equals(Object str) boolean equalsIgnoreCase(String str) boolean regionMatches(int startIndex, String str2, int str2StartIndex, int numChars);boolean regionMatches(boolean ignoreCase, int startIndex, String str2, int str2StartIndex, int numChars);boolean startsWith(String str);boolean endsWith(String str);boolean startsWith(String str, int startIndex);equals() Versus == s1 == s2 ;//compare Object, whethor or not the same Object;s1.equals(s2);//compare the contentint compareTo(String str);int compareToIgnoreCase(String str);//Search Stringsint indexOf(char ch);int lastIndexOf(char ch);int indexOf(char ch, int startIndex);int lastIndexOf(char ch, int startIndex);int indexOf(String str);int lastIndexOf(String str);int indexOf(String str, int startIndex);int lastIndexOf(String str, int startIndex);String substring(int startIndex);String substring(int startIndex, int endIndex);String concat(String str);// "one".concat("two");String s="Hello".replace('l','w');String replace(char original, char replacement);String replace(CharSequence original, CharSequence replacement);String trim();valueOf();//Data Conversion to String, return the call toString()methodstatic String valueOf(double num);static String valueOf(Object ob);String toLowerCase();String toUpperCase();//JDK 8 join()static String join(CharSequence delim, CharSequence...strs);boolean isEmpty();/////////////////////StringBuffer supports a modifialble string, automatically grow to make room for such additions;//StringBuffer conStructorStringBuffer();//16 additional characters allocationStringBuffer(int size);StringBuffer(String str);StringBuffer(CharSequence chars);int length();int capacity();void ensureCapacity(int minCapacity);void setLength(int len);char charAt(int where);void setCharAt(int where, char ch);void getChars(int sourceStart, int sourceEnd, char target[], int targetStart);//////append();StringBuffer append(String str);StringBuffer append(int num);StringBuffer append(Object obj);StringBuffer insert(int index, String str);StringBuffer insert(int index, char ch);StringBuffer insert(int index, Object obj);StringBuffer reverse();StringBuffer delete(int startIndex, int endIndex);StringBuffer deleteCharAt(int loc);StringBuffer replace(int startIndex, int endIndex, String str);//substring at startIndex to endIndex-1StringBuffer subString(int startIndex);StringBuffer subString(int startIndex, int endIndex);////////////////////StringBuilder introduced by JDK 5;similar to StringBufferdifferenece: it is not synchronized, which means that it is not thread-save. The advantage of StringBuilder is faster performance. However, in cases in which a mutable string will be accessed by multiple threads, and no external synchronization is employed, you must use StringBuffer rather than StringBuilder.;