string

advertisement
The string data type String
String (in general)
• A string is a sequence of characters enclosed between the
double quotes "..."
Example:
"abc123"
"Hello World"
"Hello, what is your name ?"
• Each character in a string is of the type char and uses the
Unicode as encoding method
The String data type in Java
• The Java language does not provide the String data type
• The Java language does provide the char data type
The String data type is a class that is constructed using the
char data type
• The documentation of the class String can be found
here:
http://download.oracle.com/javase/6/docs/api/java/lan
g/String.html
The String data type in Java (cont.)
Note:
• We do not have enough knowledge on Java to explain
how the String data type is constructed (It uses advanced
program language knowledge)
• Right now, we will only learn how to use the String data
type
String literals
• We write string literals between double quotes "..." (as
discussed above)
Example:
"Hello World"
String literals (cont.)
• Escape character:
• Escape character = a special character that allow
Java to define the meaning of the following character
• \ (backslash) = the escape character for strings
String literals (cont.)
• Escape sequence:
• Escape sequence = the escape character \ followed by one
character
Example:
\n
• A escape sequence denotes one character
The character denoted by an escape sequence is usually one
that you cannot type in with the keyboard
String literals (cont.)
• Commonly used escape sequences:
Escape sequence
Denoted character
Example
\t
Tab
"\t" (string with a
TAB character)
\n
New line (NL)
"\n" (string with a
NL character)
\\
Backslash (\)
"\\" (string with a \)
\"
Double quote (")
"\"" (string with a ")
String literals (cont.)
• Example:
public class Escape01
{
public static void main(String[] args)
{
System.out.println("He said \t \"Hello\" \nI said \" \\ \" \n");
}
}
String literals (cont.)
• Output:
He said
I said " \ "
"Hello"
Defining String typed variables
• Syntax to define a String typed variable:
Notes:
String NameOfVariable
;
• The class String announces the variable definition clause
• The NameOfVariable is an identifier which is the name of the
variable.
• The variable definition clause is must be ended with a semicolon ";"
• A String typed variable can store the location (address) of a
sequence characters (string)
Defining String typed variables (cont.)
• Example: defining and assigning to a String typed variable
public class String01
{
public static void main(String[] args)
{
String a;
a = "Hello World";
// a = location of "Hello World"
System.out.println(a); // Print the string at a
}
}
Defining String typed variables (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/05/Progs/
String01.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac String01.java
• To run:
java String01
How are strings stored inside the computer
• Challenge to store strings:
• Strings have variable lengths !!!
Example:
"Hello" contains 5 characters
"Good-bye" contains 8
characters
• Conclusion:
• You cannot store a string in a fixed
sized variable !!!
How are strings stored inside the computer
(cont.)
• There are 2 techniques in Computer Science for storing
strings:
• The location + length method
• The location + sentinel method
The location + length method to store strings
• The location + length method:
• The characters of string is stored (using Unicode
encoding) somewhere consecutively inside the RAM
memory
• A string variable contains:
• the location of the first character of the
string
• the length of the string (total number of
characters in the string)
The location + length method to store strings
(cont.)
• Example: storing strings "abc" and "12" using location +
length
The location + length method to store strings
(cont.)
• Explanation:
• The string "abc" is stored beginning at memory location
984 in RAM memory
• The length of this string is 3 characters
• The string variable that helps us find the string "abc"
contains:
• The address 984
• The length 3
The location + length method to store strings
(cont.)
• Another string variable that helps us find the string "12"
contains:
• The address 520 which is the first location of
the string "12"
• The length 2
The location + sentinel method to store strings
(cont.)
• Sentinel
• Sentinel = a special character (symbol) that denotes the
end of a string
• The sentinel used in programming languages to denote
the end of a string is usually the NULL character with
Unicode value 0.
The location + sentinel method to store strings
(cont.)
• The location + sentinel method:
• The characters of string is stored (using Unicode
encoding) somewhere consecutively inside the RAM
memory
• The sentinel (NULL character) is added after the last
character of the string
• A string variable contains:
• the location of the first character of the string
(The end of the string is marked by the sentinel)
The location + sentinel method to store
strings (cont.)
• Example: storing strings "abc" and "12" using location +
sentinel
The location + sentinel method to store
strings (cont.)
• Explanation:
• The string "abc" is stored beginning at memory location 984
in RAM memory
• The sentinel NULL (with Unicode value 0) is added after
the string
• The string variable that helps us find the string "abc"
contains:
The address 984
(We trace down the memory until we find the
sentinel to find the end of the string)
The location + sentinel method to store
strings (cont.)
• Another string variable that helps us find the string "12"
contains:
The address 520 which is the first location of the
string "12"
(We trace down the memory until we find the
sentinel to find the end of this string)
Strings in Java
• String representation in Java:
• Java uses the location + length method to store String
typed data
• Obtaining the length information of strings in Java:
• Let a be a String typed variable
• The expression a.length() returns the length of the
string stored in the string variable a
Strings in Java (cont.)
• Example:
public class String02
{
public static void main(String[] args)
{
String a;
a = "abc";
// a = location + length of "abc"
System.out.println(a);
// Print the string at a
System.out.println(a.length()); // Print the length of the string at
a
}
}
Strings in Java (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/05/Progs/
String02.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac String02.java
• To run:
java String02
Representing numbers and numeric strings
• Numeric string:
• Numeric string = a string containing only numbers in
Unicode that represent digits
Representing numbers and numeric strings
(cont.)
• Important fact:
• Integer numbers and numeric strings look alike in a
computer program:
12 (integer number)
"12" (numeric string)
• Inside the computer, integer numbers and numeric strings
are complete different (because they use different
representation (encoding) techniques)
Representing numbers and numeric strings
(cont.)
• Example:
• The numeric string "12" consists of 2 numbers:
• 49 (binary 00110001) which encodes
the character '1' using the Unicode
scheme
• 50 (binary 00110010) which encodes
the character '2' using the Unicode
scheme
Representing numbers and numeric strings
(cont.)
• The numeric string "12" is stored in the RAM memory
as follows:
Representing numbers and numeric strings
(cont.)
• The integer number 12 consists of 1 number:
• 12 (binary 00001100) which encodes the
value 12 using the Binary number system
Representing numbers and numeric strings
(cont.)
• The integer number 12 is stored in the RAM memory
as follows:
Representing numbers and numeric strings
(cont.)
• Quiz for class:
• Do you still remember how the computer decide
what encoding method it must use to interpret a
number ?
Representing numbers and numeric strings
(cont.)
• Answer:
• Based on the data type information
The data type is the necessary context information that
the computer need to decide which encoding method
it will use.
Operators on the String data type
• There is only one operator (the + operator) defined for the
String data type:
• string1 + string2 = concatenate the strings string1 and
string2
Example:
"abc" + "12" returns the string:
"abc12"
Operators on the String data type (cont.)
• Example Java program with 4 string concatenation
operations:
public class String03
{
public static void main(String[] args)
{
String a, b, c;
a = "abc";
b = "12";
c = a + b;
// String concatenation
System.out.println("a = " + a); // String concatenation !!
System.out.println("b = " + b); // String concatenation !!
System.out.println("c = " + c); // String concatenation !!
}
}
Operators on the String data type (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/05/Progs/
String03.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac String03.java
• To run:
java String03
Converting integer and floating point values
to strings
• Recall that the integer 12 is stored using Binary number
system as the following binary number:
00001100
||
| +--------------> 22 = 4
+------------> 23 = 8
----12
Converting integer and floating point values
to strings (cont.)
• On the other hand, the string "12" is stored using the
Unicode scheme as 2 binary numbers:
00110001 (code for '1')
00110010 (code for '2')
Converting integer and floating point values
to strings (cont.)
• Converting an integer representation to the string
representation:
• Converting numbers into strings is an advanced
programming problem
• The algorithm to convert an integer representation
to the string representation will be discussed in
CS255
• Here, I will only show you how to do this in Java:
Converting integer and floating point values
to strings (cont.)
• Converting an int to the string representation:
String a;
int x;
a = Integer.toString(x) ;
// Returns the String
representation
// for the integer value in variable x
Converting integer and floating point values
to strings (cont.)
• Converting a double to the string representation:
String a;
double x;
a = Double.toString(x) ; // Returns the String
representation
// for the double value in variable x
Converting integer and floating point values
to strings (cont.)
• Converting a float to the string representation:
String a;
float x;
a = Float.toString(x) ; // Returns the String
representation
// for the float value in variable x
Converting integer and floating point values
to strings (cont.)
• Example:
public class String04
{
public static void main(String[] args)
{
String a;
int x = 12;
double y = 3.14159265358979;
a = Integer.toString(x); // Convert int --> String
System.out.println(a);
a = Double.toString(y); // Convert double --> String
System.out.println(a);
}
}
The + operator on number typed and string
typed data
• Java provides an automatic conversion feature when the +
operator is used between:
• a number typed data and a string typed data
The + operator on number typed and string
typed data (cont.)
• Java's automatic conversion rule for mixed number and
string expression:
• When the + operator is used between
• a number and
• a string
Then:
• the number is automatically converted to a string
• The + operator is then applied on 2 strings
(concatenation)
The + operator on number typed and string
typed data (cont.)
• Example:
public class String05
{
public static void main(String[] args)
{
String a, b;
int x;
a = "abc";
x = -12;
b = a + x;
System.out.println(b);
b = x + a;
System.out.println(b);
}
}
// Prints "abc-12"
// Prints "-12abc"
The + operator on number typed and string
typed data (cont.)
• Explanation:
a = "abc";
x = -12;
b = a + x; is executed as follows:
a + x = "abc" + (-12) convert number to string
= "abc" + "-12" concatenate 2 strings
= "abc-12"
b = x + a;
is executed as follows:
x + a = (-12) + "abc" convert number to string
= "-12" + "abc" concatenate 2 strings
= "-12abc"
The + operator on number typed and string
typed data (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/05/Progs/
String05.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac String05.java
• To run:
java String05
Exercise
• What is printed by the following Java program:
public class String06
{
public static void main(String[] args)
{
System.out.println( "a" + 1 + 2 );
System.out.println( 1 + 2 + "a" );
}
}
Exercise (cont.)
• Solution:
"a" + 1 + 2 = "a" + 1 + 2
(+ is left associative !)
= "a" + "1" + 2 (convert 1 to "1")
= "a1" + 2
= "a1" + "2"
(convert 2 to "2")
= "a12"
1 + 2 + "a" = 1 + 2 + "a"
(+ is left associative !)
= 3 + "a"
(This + is an integer addition !)
= "3" + "a"
= "3a"
Exercise (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses170/Syllabus/05/Progs/S
tring06.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac String06.java
• To run:
java String06
Download