Introduction to Software Development
GWU Computer Science
By the end of this module, for simple HelloWorld-like programs, you will be able to:
About characters:
For example:
public class CharExample {
public static void main (String[] argv)
{
char first = 'o';
char second = 'y';
char third = '!';
System.out.print (first);
System.out.print (second);
System.out.println (third);
}
}
In this example:
char first = 'o';
char first = 'o';
About strings:
String
in Java is actually a class. We'll cover more on classes later. For now,
you can conceptually treat a String
and a 1D array, although we'll see we are UNABLE
to index String
s using [ ]
nor get their lengths using .length
.
String s = "Hello World!";
String s = "";
We'll look at some string examples further below.
A char
, unlike a String
is indeed a primitive type, just
like integers and doubles. In fact, characters are stored in memory as integers, where
the integer corresponds to the character. You may have heard of an ASCII lookup table before,
which shows this mapping:
public class CharExample2 { public static void main (String[] argv) { for (char ch='a'; ch <= 'z'; ch++) { System.out.print (ch); } System.out.println (); } }
It is often useful to work with the integer representation,
and to go back and forth between representations.
For example:
public class CharExample3 {
public static void main (String[] argv)
{
// A typical char:
char first = 'a';
// Now extract the int representation:
int i = (int) first;
System.out.println (i);
// Perform integer arithmetic:
int j = i+2;
// Convert (or cast) back to char:
char third = (char) j;
// Print as char:
System.out.println (third);
}
}
Activity 3:
Write up, compile and execute the above program in the Java Visualizer.
Note:
char third = (char) j;
// Going from char to int: int i = first;
The String API is the list of methods that each of these objects provide.
Today, we'll show you how to find and use some of the typical String methods.
First, open this page (link opens in new tab): Java 11 - String API.
You'll notice several things:
Because String
s are a class in Java, they come with a bunch of useful features
that are built in to the language. Much like your homework problems, developers have written
several methods and packaged them under the String
class so that we're able to
access them and use them. Let's look at an illustrative example:
public class StringExample {
public static void main (String[] argv)
{
// Declare a string variable and assign it an actual string:
String s = "The quick brown fox jumps over the lazy dog";
System.out.println (s);
// Extract its length:
int k = s.length ();
System.out.println (k); // 43. Includes spaces.
// You can identify any character in the string, such as:
char c = s.charAt(0);
System.out.println (c); // Prints 'T'.
// The very useful concatenation operator +
String s1 = "The";
String s2 = "quick";
String s3 = s1 + s2; // s3 is "Thequick"
// You can concatenate any number of strings in an expression:
String s4 = "brown";
String s5 = s1 + " " + s2 + " " + s4;
System.out.println (s5);
// You can concatenate any other type:
String allLetters = "";
for (char ch='a'; ch<='z'; ch++) {
allLetters = allLetters + ch;
}
System.out.println ("The alphabet: " + allLetters);
// Example with concatenating integers onto a string:
String num1to10 = "";
for (int i=1; i<=10; i++) {
num1to10 = num1to10 + " " + i;
}
System.out.println ("Numbers 1 to 10: " + num1to10);
// Example with a BUG when concatenating integers onto a string:
String num11to20 = "";
num11to20 = num11to20 + (11 + 12 + 14 + 15 +16 +17 +18 + 19 + 20);
System.out.println ("Numbers 11 to 20: " + num11to20);
}
}
Activity 5:
Write up the above program, compile and execute in the Java Visualizer.
Now let's understand the code:
String s = "The quick brown fox jumps over the lazy dog";
int k = s.length ();It is possible to call a method, seemingly attached to the string itself.
char c = s.charAt(0);This method even takes an integer argument (parameter) like 0.
String s5 = s1 + " " + s2 + " " + s4;
num1to10 = num1to10 + " " + i;Here, it's worth pointing out, num1to10 is a string variable but i is an integer variable.
System.out.println (allLetters);we print
System.out.println ("The alphabet: " + allLetters);
num11to20 = num11to20 + (11 + 12 + 14 + 15 +16 +17 +18 + 19 + 20);That treats the first + as concatenation but the + inside the parenthesis as addition.
Example:
public class StringExample2 {
public static void main (String[] argv)
{
String s = "";
int last = 5;
for (int i=1; i<=last; i++) {
for (int j=1; j<=i; j++) {
s = s + "*";
}
s = s + "\n";
}
System.out.println ("A triangle with base=" + last + ":\n" + s);
}
}
Activity 6:
Write up the above program, compile and execute. Change
the base of the triangle to 10.
Activity 7:
Trace the execution of the above program, showing how
the string
s
changes.
Note:
s = s + "\n";and once here:
System.out.println ("A triangle with base=" + last + ":\n" + s);
int q = 5; System.out.println (q); System.out.println ("q"); System.out.println ('q'); String s = "q"; char c = 'q';What gets printed? Ponder about the differences between the three.
Strings have an API (Application Programming Interface), which describe the set of rules for using Strings in the programming of an application.
but why do we need to know the rules for using Strings?
Because Strings are different than the other types we've seen, like int, double, float, boolean, and char.
Before we move forward, let's look at how memory works in a computer and how we will imagine it for the duration of the class:
The following are called "Primitive Types": int, float, double, boolean, and char.
They are called "Primitive" because the function they perform is extremely simple:
They are locations in memory inside of which you save the actual value you need.
As we will see later in the semester, we will be creating objects that contain so much information that it does not make sense to save them inside the box or space assigned to a variable.
Instead, we use a clever mechanism: We leave a forwarding number!, or in other words, the address of where we are keeping the object's information.
When we make a variable of a Reference type, like String, inside the variable, instead of saving the String value, we save the address of the starting location where we are going to keep more information about the value or values of that type.
Look at the example shown below:
Note:
Each character in a string has its own "location" or "index".
The following is a visualization of the indices for the string:
I like Squirrels!
We can extract parts of a string.
Observe the following piece of code:
28 29 30 31 32 | int beginIndex = 7; // Extract everything after index beginIndex. Input is now a variable. String sub1 = s3.substring(beginIndex);// s3.substring(beginIndex) resolves into "Squirrels!" System.out.println ("The substring from index " + beginIndex + " to the end in s3 is " + sub1); |
We can also indicate a final index for the substring.
Observe the following piece of code:
33 34 35 36 37 38 39 | int endIndex = 11; // This method takes two inputs // below, s3.substring(beginIndex, endIndex) resolves into "Squi" String sub2 = s3.substring(beginIndex, endIndex); System.out.println ("The substring from index " + beginIndex + // continues below " to index " + endIndex + " in s3 is " + sub2); |