170 likes | 182 Views
Learn about strings in Java, including their basics, manipulation methods, and immutability. Understand how to concatenate strings, access individual elements, compare strings, and use the StringBuffer class for manipulation.
E N D
System.out.println("Hello, how are you?"); Strings • A string is a sequence of characters that is treated as a single value. Strings are objects. • We have been using strings all along. For example, to display text • Every time you use a “” string, a string object is created automatically. • String is a class in the java.lang package.
String name1; name1 = new String("Frooot"); String name1; name1 = "Frooot"; These two statements are equivalent. Explicit String Objects • A declaration and object creation are needed for instances of the String class. For example, We normally use shorthand notation (only for Strings):
Explicit String Objects Blitititi … out to reality … StringVar.java Blitititi … out to reality … StringVar2.java Blitititi … out to reality … StringVar2.java
A String word1, word2; word1 = new String("Java"); word2 = word1; After is executed A String variables are References - 1 Code Both word1 and word2 are allocated memory (to store references), but the objects themselves are not yet created, so they both contain null. L word1 word2 L State of Memory
B String word1, word2; word1 = new String("Java"); word2 = word1; After is executed B word1 word2 String Java String variables are References - 2 Code One String object is created and assigned to word1, so word1 contains the address of this object. word1 L word2 State of Memory
C String word1, word2; word1 = new String("Java"); word2 = word1; After is executed C word1 word1 word2 word2 String String Java Java String variables are References - 3 Code Content of word1, which is an address, is assigned to word2, making word2 refer to the same object. State of Memory Gadzook … out to reality … StringAlias.java
Concatenating Strings • The + operator can also concatenate strings. • A new string object is created - the operands are not affected • Gadzook … out to reality … StringCat.java
Command line Strings • The formal arguments to the main method receive strings from the command line arguments. • When running a program, supply command line arguments after the program name, e.g., java MyJavaProgram cat 27 'Java is great!' has three command line arguments. • Gadzook … out to reality … StringCat.java
0 1 2 3 4 5 6 S u m a t r a String name = “Sumatra”; name.charAt( 3 ) name The method returns the character at position # 3. This variable refers to the whole string. Accessing Individual Elements • Individual characters in a String accessed with the charAt method.
7 0 Error! name.length(); str2.length(); str3.length(); String name = "Sumatra"; String str2 = ""; String str3; Determining the Size • We determine the number of characters in a String with the length method. Error because no object is created for str3, so it is a null. Olipidoo … out to reality … StringVowels.java Olipidoo … out to reality … StringWords.java
word1 word2 String true Java true Equality (==) vs. equals—Case 1 word1 and word2 point to the same object. word1 == word2 word1.equals( word2 )
String String false Java Java true Equality (==) vs. equals—Case 2 word1 word2 word1 and word2 point to different objects having the same string. word1 == word2 word1.equals( word2 )
String String false Java Bali false Equality (==) vs. equals—Case 3 word1 word2 word1 and word2 point to different objects with different strings. word1 == word2 word1.equals( word2 ) Quixote … out to reality … StringJavas.java
Strings and Methods Strings are reference variables, so (like arrays) formal parameters point to the actual parameter data Strings returned from methods point to the data created in the method Likidylik … out to reality … StringMethod.java
Strings are Immutable • A String object is immutable, which means that once a String object is created, is cannot be changed. • It is not possible to add, delete, or modify characters of a String object. • The methods of the String class, such as toUpperCase and substring, do not modify the original string; they return a new string. • Java adopts this immutability restriction to implement an efficient memory allocation scheme for managing String objects. • Oieeeeiooo … out to reality … StringImmut.java
StringBuffer • Creating a new string from the old one will work for most cases, but sometimes manipulating the content of a string directly is more convenient. • Manipulation means operations such as replacing a character, appending a string with another string, deleting a portion of a string, and so forth. • Java has a StringBuffer class for this. • StringBuffers are created from strings (no shorthand) • Ay … out to reality … StringBufferX.java • Ay … out to reality … StringBufferMake.java