Fundamentals of computing 1 - Lecture title: Strings
If you want to represent any object as a string, toString() method comes into existence.
The toString() method returns the string representation of the object. If you print any object, java compiler internally invokes the toString() method on the object.
So overriding the toString() method, returns the desired output, it can be the state of an object etc. depends on your implementation
By overriding the toString() method of the Object class, we can return values of the object, so we don't need to write much code
79 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 929 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Fundamentals of computing 1 - Lecture title: Strings, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lecture Title: StringsFundamentals of Computing 1AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()StringGenerally string is a sequence of characters. But in java, string is an object. String class is used to create string object. The String classHow to create String object?There are two ways to create String object: By string literalBy new keywordBy String literalString literal is created by double quote.Ex1: String s="Hello"; S“Hello”String constant poolHeapBy String literal (cont.)Ex2: String s1=“Welcome"; String s2=" Welcome ";Note: String objects are stored in a special memory area known as string constant pool inside the Heap memory. S2S1“Welcome”String constant poolHeapQuestionWhy java uses concept of string literal?AnswerTo make Java more memory efficient (because no new objects are created if it exists already in string constant pool). By new keywordEx: String s=new String("Welcome");In such case, JVM will create a new String object in normal (nonpool) Heap memory and the literal "Welcome" will be placed in the string constant pool. The variable s will refer to the object in Heap (nonpool).AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()Immutable StringIn java, strings are immutable (unmodifiable) objects.Example 1:class Main{ public static void main(String args[]){ String s=“Duy Tan"; s.concat(" University");/*concat() method appends the string at the end*/ System.out.println(s); } }Immutable String (cont.) S“Duy Tan”String constant poolHeap“Duy Tan University”Immutable String (cont.)Example 2:class Main{ public static void main(String args[]){ String s=" Duy Tan "; s=s.concat(" University”); System.out.println(s); } }QuestionWhy string objects are immutable in java?AnswerBecause java uses the concept of string literal. Suppose there are 5 reference variables, all refer to one object “Duy Tan". If one reference variable changes the value of the object, it will be affected to all the reference variables. That is why string objects are immutable in java. AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()String comparisonThere are three ways to compare String objects: By equals() methodBy = = operatorBy compareTo() methodBy equals() methodequals() method compares the original content of the string. It compares values of string for equality. String class provides two methodspublic boolean equals(Object another){} : compares this string to the specified object.public boolean equalsIgnoreCase(String another){}: compares this String to another String, ignoring case.Example of equals(Object) methodExample of equalsIgnoreCase(String) methodExample of equals(Object) methodpublic class Simple1 { public static void main(String args[]){ String s1="Duy Tan"; String s2="Duy Tan"; String s3=new String("Duy Tan"); String s4="Duy Tan1"; System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(s1.equals(s4)); }}Example of equalsIgnoreCase(String) methodpublic class Simple2 { public static void main(String args[]){ String s1="Sachin"; String s2="SACHIN"; System.out.println(s1.equals(s2)); System.out.println(s1.equalsIgnoreCase(s2)); }}By == operatorThe = = operator compares references not values. Example: public class Simple3 {public static void main(String args[]){ String s1="Sachin"; String s2="Sachin"; String s3=new String("Sachin"); System.out.println(s1==s2); System.out.println(s1==s3); }} By compareTo() methodcompareTo() method compares values and returns an int which tells if the values compare less than, equal, or greater than.Suppose s1 and s2 are two string variables. If:s1 == s2 :0s1 > s2 :positive values1 < s2 :negative valueExample of compareTo() method:public class Simple4 {public static void main(String args[]){ String s1="Sachin"; String s2=new String("Sachin"); String s3="Ratan"; System.out.println(s1.compareTo(s2)); System.out.println(s1.compareTo(s3)); System.out.println(s3.compareTo(s1)); }}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()String ConcatenationThere are two ways to concat string objects:By + (string concatenation) operatorBy concat() methodBy + (string concatenation) operatorString concatenation operator is used to add strings.Example: class Simple5{ public static void main(String args[]){ String s="Sachin"+" Tendulkar"; System.out.println(s); } }Output: Sachin TendulkarThe compiler transforms this to:String s=(new StringBuilder()).append("Sachin").append(" Tendulkar).toString(); By + (string concatenation) operator (cont.)String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method. String concatenation operator produces a new string by appending the second operand onto the end of the first operand.The string concatenation operator can concat not only string but primitive values alsoBy + (string concatenation) operator (cont.)Example:class Simple6{ public static void main(String args[]){ String s=50+30+"Sachin"+40+40; System.out.println(s);//80Sachin4040 } }Output: 80Sachin4040Note: If either operand is a string, the resulting operation will be string concatenation. If both operands are numbers, the operator will perform an addition. By concat() methodconcat() method concatenates the specified string to the end of current string.Syntax:public String concat(String another){}Example:public class Simple6{ public static void main(String args[]){ String s1="Sachin "; String s2="Tendulkar"; String s3=s1.concat(s2); System.out.println(s3);//Sachin Tendulkar}}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()SubstringYou can get substring from the given String object by one of the two methods: public String substring(int startIndex): This method returns new String object containing the substring of the given string from specified startIndex (inclusive).public String substring(int startIndex,int endIndex): This method returns new String object containing the substring of the given string from specified startIndex to endIndex.Example of Substringpublic class Simple7{ public static void main(String args[]){ String s="Sachin Tendulkar"; System.out.println(s.substring(6));// Tendulkar System.out.println(s.substring(0,6));//Sachin }}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()Commonly used Methods of String class1)public boolean equals(Object anObject)Compares this string to the specified object.2)public boolean equalsIgnoreCase(String another)Compares this String to another String, ignoring case.3)public String concat(String str)Concatenates the specified string to the end of this string.4)public int compareTo(String str)Compares two strings and returns int5)public int compareToIgnoreCase(String str)Compares two strings, ignoring case differences.6)public String substring(int beginIndex)Returns a new string that is a substring of this string.7)public String substring(int beginIndex,int endIndex)Returns a new string that is a substring of this string.8)public String toUpperCase()Converts all of the characters in this String to upper case9)public String toLowerCase()Converts all of the characters in this String to lower case.10)public String trim()Returns a copy of the string, with leading and trailing whitespace omitted.11)public boolean startsWith(String prefix)Tests if this string starts with the specified prefix.12)public boolean endsWith(String suffix)Tests if this string ends with the specified suffix.13)public char charAt(int index)Returns the char value at the specified index.14)public int length()Returns the length of this string.15)public String intern()Returns a canonical representation for the string object.Commonly used Methods of String class (cont.)First seven methods have already been discussed.Now Let's take the example of other methodsExample of toUpperCase() and toLowerCase() methodpulbic class Simple8{ public static void main(String args[]){ String s="Sachin"; System.out.println(s.toUpperCase());//SACHIN System.out.println(s.toLowerCase());//sachin System.out.println(s);/*Sachin(no change in original)*/ }}Example of trim() methodpublic class Simple9{ public static void main(String args[]){ String s=" Sachin "; System.out.println(s);// Sachin System.out.println(s.trim());//Sachin }}Example of startsWith() and endsWith() methodpublic class Simple10{ public static void main(String args[]){String s="Sachin";System.out.println(s.startsWith("Sa"));//trueSystem.out.println(s.startsWith("n"));//true }}Example of charAt() methodpublic class Simple11{ public static void main(String args[]){String s="Sachin";System.out.println(s.charAt(0));//SSystem.out.println(s.charAt(3));//h }}Example of length() methodpublic class Simple12{ public static void main(String args[]){String s="Sachin";System.out.println(s.length());//6 }}intern() methodA pool of strings, initially empty, is maintained privately by the class String.When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returnedExample of intern() methodpublic class Simple13{public static void main(String args[]){String str1 = "Hello Java";String str2 = new StringBuffer("Hello").append(" Java").toString();String str3 = str2.intern();System.out.println("str1 == str2 " + (str1 == str2));System.out.println("str1 == str3 " + (str1 == str3));}}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()StringBuffer classThe StringBuffer class is used to created mutable (modifiable) string. The StringBuffer class is same as String except it is mutable i.e. it can be changedNote: StringBuffer class is thread-safe i.e. multiple threads cannot access it simultaneously .So it is safe and will result in an order.Commonly used Constructors of StringBuffer classStringBuffer(): creates an empty string buffer with the initial capacity of 16. StringBuffer(String str): creates a string buffer with the specified string. StringBuffer(int capacity): creates an empty string buffer with the specified capacity as lengthAgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()Commonly used methods of StringBuffer classpublic synchronized StringBuffer append(String s): is used to append the specified string with this string. The append() method is overloaded like append(char), append(boolean), append(int), append(float), append(double) etc. public synchronized StringBuffer insert(int offset, String s): is used to insert the specified string with this string at the specified position. The insert() method is overloaded like insert(int, char), insert(int, boolean), insert(int, int), insert(int, float), insert(int, double) etc. public synchronized StringBuffer replace(int startIndex, int endIndex, String str): is used to replace the string from specified startIndex and endIndex. Commonly used methods of StringBuffer class (cont.)public synchronized StringBuffer delete(int startIndex, int endIndex): is used to delete the string from specified startIndex and endIndex. public synchronized StringBuffer reverse(): is used to reverse the string.public int capacity(): is used to return the current capacity. public void ensureCapacity(int minimumCapacity): is used to ensure the capacity at least equal to the given minimum. Commonly used methods of StringBuffer class (cont.)public char charAt(int index): is used to return the character at the specified position. public int length(): is used to return the length of the string i.e. total number of characters. public String substring(int beginIndex): is used to return the substring from the specified beginIndex. public String substring(int beginIndex, int endIndex): is used to return the substring from the specified beginIndex and endIndexWhat is mutable stringA string that can be modified or changed is known as mutable string. StringBuffer and StringBuilder classes are used for creating mutable stringsimple example of StringBuffer class by append() methodThe append() method concatenates the given argument with this stringExample of append() method of StringBuffer classpublic class A1 {public static void main(String args[]){StringBuffer sb=new StringBuffer("Hello ");sb.append("Java");//now original string is changedSystem.out.println(sb);//prints Hello Java}}Example of insert() method of StringBuffer classThe insert() method inserts the given string with this string at the given position. public class A2 {public static void main(String args[]){StringBuffer sb=new StringBuffer("Hello ");sb.insert(1,"Java");//now original string is changedSystem.out.println(sb);//prints HJavaello}}Example of replace() method of StringBuffer classThe replace() method replaces the given string from the specified beginIndex and endIndex. public class A3 {public static void main(String args[]){StringBuffer sb=new StringBuffer("Hello");sb.replace(1,3,"Java");System.out.println(sb);//prints HJavalo}}Example of delete() method of StringBuffer classThe delete() method of StringBuffer class deletes the string from the specified beginIndex to endIndex. public class A4 {public static void main(String args[]){StringBuffer sb=new StringBuffer("Hello");sb.delete(1,3);System.out.println(sb);//prints Hlo}}Example of reverse() method of StringBuffer classThe reverse() method of StringBuilder class reverses the current stringpublic class A5 {public static void main(String args[]){StringBuffer sb=new StringBuffer("Hello");sb.reverse();System.out.println(sb);//prints olleH}}capacity() method of StringBuffer classThe capacity() method of StringBuffer class returns the current capacity of the buffer. The default capacity of the buffer is 16. If the number of character increases from its current capacity, it increases the capacity by (oldcapacity*2)+2. Ex: if your current capacity is 16, it will be (16*2)+2=34Example of capacity() method of StringBuffer classpublic class A6 {public static void main(String args[]){StringBuffer sb=new StringBuffer();System.out.println(sb.capacity());//default 16sb.append("Hello");System.out.println(sb.capacity());//now 16sb.append("java is my favourite language");System.out.println(sb.capacity());/*now (16*2)+2=34 i.e oldcapacity*2)+2 */}}ensureCapacity() method of StringBuffer classThe ensureCapacity() method of StringBuffer class ensures that the given capacity is the minimum to the current capacity. If it is greater than the current capacity, it increases the capacity by (oldcapacity*2)+2. Ex: if your current capacity is 16, it will be (16*2)+2=34.Example of ensureCapacity() method of StringBuffer classpublic class A7 {public static void main(String args[]){StringBuffer sb=new StringBuffer();System.out.println(sb.capacity());//default 16sb.append("Hello");System.out.println(sb.capacity());//now 16sb.append("java is my favourite language");System.out.println(sb.capacity());/*now (16*2)+2=34 i.e (oldcapacity*2)+2 */sb.ensureCapacity(10);//now no changeSystem.out.println(sb.capacity());//now 34sb.ensureCapacity(50);//now (34*2)+2System.out.println(sb.capacity());//now 70}}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()StringBuilder classThe StringBuilder class is used to create mutable (modifiable) stringThe StringBuilder class is same as StringBuffer class except that it is non-synchronized. It is available since JDK1.5Commonly used Constructors of StringBuilder classStringBuilder(): creates an empty string buffer with the initial capacity of 16. StringBuilder(String str): creates a string buffer with the specified string. StringBuilder(int length): creates an empty string buffer with the specified capacity as lengthAgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()Commonly used methods of StringBuilder classpublic StringBuilder append(String s): is used to append the specified string with this string. The append() method is overloaded like append(char), append(boolean), append(int), append(float), append(double) etc. public StringBuilder insert(int offset, String s): is used to insert the specified string with this string at the specified position. The insert() method is overloaded like insert(int, char), insert(int, boolean), insert(int, int), insert(int, float), insert(int, double) etc. public StringBuilder replace(int startIndex, int endIndex, String str): is used to replace the string from specified startIndex and endIndex.Commonly used methods of StringBuilder class (cont.)public StringBuilder delete(int startIndex, int endIndex): is used to delete the string from specified startIndex and endIndex. public StringBuilder reverse(): is used to reverse the string. public int capacity(): is used to return the current capacity. public void ensureCapacity(int minimumCapacity): is used to ensure the capacity at least equal to the given minimum.Commonly used methods of StringBuilder class (cont.)public char charAt(int index): is used to return the character at the specified position. public int length(): is used to return the length of the string i.e. total number of characters. public String substring(int beginIndex): is used to return the substring from the specified beginIndex. public String substring(int beginIndex, int endIndex): is used to return the substring from the specified beginIndex and endIndex.Example of append() method of StringBuilder classThe append() method concatenates the given argument with this string. class B1{ public static void main(String args[]){ StringBuilder sb=new StringBuilder("Hello "); sb.append("Java");//now original string is changed System.out.println(sb);//prints Hello Java } }Example of insert() method of StringBuilder classThe insert() method inserts the given string with this string at the given position. class B2{ public static void main(String args[]){ StringBuilder sb=new StringBuilder("Hello "); sb.insert(1,"Java");//now original string is changed System.out.println(sb);//prints HJavaello } }Example of replace() method of StringBuilder classThe replace() method replaces the given string from the specified beginIndex and endIndex. class B3{ public static void main(String args[]){ StringBuilder sb=new StringBuilder("Hello"); sb.replace(1,3,"Java"); System.out.println(sb);//prints HJavalo } }Example of delete() method of StringBuilder classThe delete() method of StringBuilder class deletes the string from the specified beginIndex to endIndex. class B4{ public static void main(String args[]){ StringBuilder sb=new StringBuilder("Hello"); sb.delete(1,3); System.out.println(sb);//prints Hlo } }Example of reverse() method of StringBuilder classThe reverse() method of StringBuilder class reverses the current string. class B5{ public static void main(String args[]){ StringBuilder sb=new StringBuilder("Hello"); sb.reverse(); System.out.println(sb);//prints olleH } }capacity() method of StringBuilder classThe capacity() method of StringBuilder class returns the current capacity of the Builder. The default capacity of the Builder is 16. If the number of character increases from its current capacity, it increases the capacity by (oldcapacity*2)+2. Ex: if your current capacity is 16, it will be (16*2)+2=34Example of capacity() method of StringBuffer classpublic class B6 {public static void main(String args[]){StringBuilder sb=new StringBuilder();System.out.println(sb.capacity());//default 16sb.append("Hello");System.out.println(sb.capacity());//now 16sb.append("java is my favourite language");System.out.println(sb.capacity());/*now (16*2)+2=34 i.e oldcapacity*2)+2 */}}ensureCapacity() method of StringBuilder classThe ensureCapacity() method of StringBuilder class ensures that the given capacity is the minimum to the current capacity. If it is greater than the current capacity, it increases the capacity by (oldcapacity*2)+2. Ex: if your current capacity is 16, it will be (16*2)+2=34.Example of ensureCapacity() method of StringBuilder classpublic class B7 {public static void main(String args[]){StringBuilder sb=new StringBuilder();System.out.println(sb.capacity());//default 16sb.append("Hello");System.out.println(sb.capacity());//now 16sb.append("java is my favourite language");System.out.println(sb.capacity());/*now (16*2)+2=34 i.e (oldcapacity*2)+2 */sb.ensureCapacity(10);//now no changeSystem.out.println(sb.capacity());//now 34sb.ensureCapacity(50);//now (34*2)+2System.out.println(sb.capacity());//now 70}}AgendaStrings Immutable StringString ComparisonString ConcatenationsubStringCommonly used Methods of String classStringBuffer classsCommonly used Methods of StringBuffer classStringBuilder classsCommonly used Methods of StringBuilder classtoString()toString() method If you want to represent any object as a string, toString() method comes into existence. The toString() method returns the string representation of the object. If you print any object, java compiler internally invokes the toString() method on the object. So overriding the toString() method, returns the desired output, it can be the state of an object etc. depends on your implementationBy overriding the toString() method of the Object class, we can return values of the object, so we don't need to write much codeProblem without toString() methodclass Student{ private int rollno; private String name; private String city; public Student(int rollno, String name, String city){ this.rollno=rollno; this.name=name; this.city=city; } public static void main(String args[]){ Student s1=new Student(101,"Raj","lucknow"); Student s2=new Student(102,"Vijay","ghaziabad"); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } }Understanding the actual use of toString() method:class Student{ private int rollno; private String name; private String city; public Student(int rollno, String name, String city){ this.rollno=rollno; this.name=name; this.city=city; } public String toString(){//overriding the toString() method return rollno+" "+name+" "+city; }public static void main(String args[]){ Student s1=new Student(101,"Raj","lucknow"); Student s2=new Student(102,"Vijay","ghaziabad"); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } } Understanding the actual use of toString() method:class Student{ private int rollno; private String name; private String city; public Student(int rollno, String name, String city){ this.rollno=rollno; this.name=name; this.city=city; } public String toString(){//overriding the toString() method return rollno+" "+name+" "+city; }public static void main(String args[]){ Student s1=new Student(101,"Raj","lucknow"); Student s2=new Student(102,"Vijay","ghaziabad"); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } }
Các file đính kèm theo tài liệu này:
- lecture_07_strings_1983.ppt