Beruflich Dokumente
Kultur Dokumente
NGN NG JAVA
Java History
James Gosling and Sun Microsystems
Oak
Java, May 20, 1995, Sun World
HotJava
The first Java-enabled Web browser
JDK Evolutions
J2SE, J2ME, and J2EE
11/10/16
JDK Editions
Java Standard Edition (J2SE)
J2ME can be used to develop applications for mobile devices such as cell
phones.
11/10/16
11/10/16
Compiling a program
Before you run a program, you must compile it.
compiler: Translates a computer program
written in one language (i.e., Java) to another
language (i.e., byte code)
Compile (javac)
source code
(Hello.java)
Execute (java)
byte code
(Hello.class)
output
Program execution
The output is printed to the console.
Some editors pop up the console as another window.
Syntax
syntax: The set of legal structures and commands that
can be used.
Examples:
Every basic statement ends with a semi-colon.
The contents of a class occur between curly braces.
10
Syntax Errors
syntax error: A problem in the structure of a program.
1 public class Hello {
2
pooblic static void main(String[] args) {
3
System.owt.println("Hello, world!")
4
}
5 }
compiler output:
2 errors found:
File: Hello.java [line: 2]
Error: Hello.java:2: <identifier> expected
File: Hello.java [line: 3]
Error: Hello.java:3: ';' expected
11
System.out.println
System.out.println: A statement to print a line
of output to the console.
pronounced print-linn
Strings
string: A sequence of text characters.
Start and end with quotation mark characters
Examples:
"hello"
"This is a string"
"This, too, is a string.
14
Escape sequences
A string can represent certain special characters by preceding them
with a backslash \ (this is called an escape sequence).
\t
\n
\"
tab character
newline character
quotation mark character
Example:
System.out.println("Hello!\nHow are \"you\"?");
Output:
Hello!
How are "you"?
This begs another question
16
Comments
comment: A note written in the source code to make the code easier to
understand.
Comments are not executed when your program runs.
Most Java editors show your comments with a special color.
Comments: Why?
Comments provide important documentation.
Later programs will span hundreds or thousands of lines, split into
many classes and methods.
Comments provide a simple description of what each class, method,
etc. is doing.
When multiple programmers work together, comments help one
programmer understand the other's code.
18
Indentation
Capitalization
Formatting / spacing
Structured code
No redundancy
Why is it important?
19
20
Primitive types
Java has eight primitive types. Here are two examples:
Name Description
int
integers
double
real numbers
Examples
42, -3, 0, 926394
3.4, -2.53, 91.4e3
21
Continuous Types
float
double
Non-numeric Types
boolean
char
22
Representation
Bits
Bytes
#Values
boolean
true or false
N/A
char
a or 7 or \n
16
216 = 65,536
byte
,-2,-1,0,1,2,
28 = 256
short
,-2,-1,0,1,2,
16
216 = 65,536
int
,-2,-1,0,1,2,
long
,-2,-1,0,1,2,
> 18 quintillion
float
32
double
64
24
Examples:
"hello" + 42 is "hello42"
1 + "abc" + 2
is "1abc2"
"abc" + 1 + 2
is "abc12"
1 + 2 + "abc
is "3abc"
"abc" + 9 * 3 is "abc27" (what happened here?)
"1" + 1
is "11"
4 - 1 + "abc
is "3abc"
"abc" + 4 - 1causes a compiler error. Why?
25
Question
ints are stored in 4 bytes (32 bits)
In 32 bits, we can store at most 232 different
numbers
What happens if we take the largest of these, and
add 1 to it?
ERROR!
This is known as overflow: trying to store something that
does not fit into the bits reserved for a data type.
Overflow errors are NOT automatically detected!
Its the programmers responsibility to prevent these.
Overflow example
int n = 2000000000;
System.out.println(n * n);
// output: -1651507200
the result of n*n is 4,000,000,000,000,000,000 which needs 64-bits:
---------- high-order bytes ------00110111 10000010 11011010 11001110
---------- low order bytes -------10011101 10010000 00000000 00000000
In the case of overflow, Java discards the high-order bytes, retaining only
the low-order ones
In this case, the low order bytes represent 1651507200, and since the right
most bit is a 1 the sign value is negative.
Declaring variables
To create a variable, it must be declared.
Variable declaration syntax:
<type> <name>;
Identifiers: Keywords
keyword: An identifier that you cannot use, because it already has a
reserved meaning in the Java language.
Complete list of Java keywords:
abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
NB: Because Java is case-sensitive, you could technically use Class or cLaSs
as identifiers, but this is very confusing and thus strongly discouraged.
30
Errors in coding
ERROR: Declaring two variables with the same
name
Example:
int x;
int x;
// x = x + 1;
// x now stores 3
if/else statements
33
The if statement
if statement: A control structure that executes a block of
statements only if a certain condition is true.
General syntax:
if (<test>) {
<statement(s)> ;
}
35
Example:
if (gpa >= 3.0) {
System.out.println("Welcome to Temple!");
} else {
System.out.println("Try applying to Penn.");
}
36
37
Example:
if (number > 0) {
System.out.println("Positive");
} else if (number < 0) {
System.out.println("Negative");
} else {
System.out.println("Zero");
}
38
39
40
Boolean Arithmetic
41
y*2;
42
Relational expressions
Relational expressions have
numeric arguments and
boolean values.
Meaning
Example
Value
==
equals
1 + 1 == 2
true
!=
3.2 != 2.5
true
<
less than
10 < 5
false
>
greater than
10 > 5
true
<=
false
>=
true
43
>=
>=
>=
>=
3 + 5 * (7 - 1)
3 + 5 * 6
3 + 30
33
Logical operators
Logical operators have
boolean arguments and
boolean values
Operator
Description
Example
Result
&&
and
(9 != 6) && (2 < 3)
true
||
or
(2 == 3) || (-1 < 5)
not
!(7 > 0)
45
Boolean expressions
What is the result of each of the following expressions?
int x = 42;
int y = 17;
int z = 25;
Class Constants
A class constant is a variable
48
Example:
for (int i = 1; i <= 30; i++) {
System.out.println("I will not throw...");
}
49
Control Structure
The for loop is a control structurea syntactic
structure that controls the execution of other
statements.
Example:
Shampoo hair. Rinse. Repeat.
50
Example:
for (int i = 1; i <= 4; i++) {
System.out.println(i + " squared is " + (i * i));
}
Output:
1
2
3
4
squared
squared
squared
squared
is
is
is
is
1
4
9
16
51
52
Loop walkthrough
Code:
for (int i = 1; i <= 3; i++) {
System.out.println(i + " squared is " + (i * i));
}
Output:
i:
1 squared is 1
2 squared is 4
3 squared is 9
53
Loop example
Code:
System.out.println("+----+");
for (int i = 1; i <= 3; i++) {
System.out.println("\\
/");
System.out.println("/
\\");
}
System.out.println("+----+");
Output:
+----+
\
/
/
\
\
/
/
\
\
/
/
\
+----+
54
Output:
-3
-2
-1
0
1
2
Example:
for (int i = 1 + 3 * 4; i <= 5248 % 100; i++) {
System.out.println(i + " squared is " + (i * i));
}
55
56
Errors in coding
ERROR: Loops that never execute.
for (int i = 10; i < 5; i++) {
System.out.println("How many times do I print?");
}
1
2
1
2
1
2
58
Output:
1
2
3
4
5
2 3 4 5 6 7 8 9 10
4 6 8 10 12 14 16 18 20
6 9 12 15 18 21 24 27 30
8 12 16 20 24 28 32 36 40
10 15 20 25 30 35 40 45 50
59
Output:
**********
**********
**********
**********
**********
**********
60
Output:
*
**
***
****
*****
******
61
Output:
1
22
333
4444
55555
666666
62
Output:
1
22
333
4444
55555
63
Key idea:
outer "vertical" loop for each of the lines
inner "horizontal" loop(s) for the patterns within each line
64
Nested loops
First, write the outer loop from 1 to the number of lines desired.
for (int line = 1; line <= 5; line++) {
...
}
Notice that each line has the following pattern:
some number of dots (0 dots on the last line)
a number
....1
...2
..3
.4
5
65
Nested loops
Make a table:
....1
...2
..3
.4
5
value displayed
Answer:
for (int line = 1; line <= 5; line++) {
for (int j = 1; j <= (line * -1 + 5); j++) {
System.out.print(".");
}
System.out.println(line);
}
66
Errors in coding
ERROR: Using the wrong loop counter variable.
What is the output of the following piece of code?
for (int i = 1; i <= 10; i++) {
for (int j = 1; i <= 5; j++) {
System.out.print(j);
}
System.out.println();
}
What is the output of the following piece of code?
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 5; i++) {
System.out.print(j);
}
System.out.println();
}
67
while loops
68
Definite loops
definite loop: A loop that executes a known number of
times.
The for loops we have seen so far are definite loops.
Examples:
Print "hello" 10 times.
Find all the prime numbers up to an integer n.
69
Indefinite loops
indefinite loop: A loop where it is not obvious in advance
how many times it will execute.
We often use language like
"Keep looping as long as or while this condition is still true."
"Don't stop repeating until the following happens."
Examples:
Print random numbers until a prime number is printed.
Continue looping while the user has not typed "n" to quit.
70
while loop
while loop: A control structure that repeatedly performs a test and
executes a group of statements if the test evaluates to true.
while loop, general syntax:
while (<test>) {
<statement(s)>;
}
Example:
int number = 1;
while (number <= 200) {
System.out.print(number + " ");
number *= 2;
}
Output:
1 2 4 8 16 32 64 128
71
72
Example
Finds and prints a number's first factor other than 1:
Scanner console = new Scanner(System.in);
System.out.print("Type a number: ");
int number = console.nextInt();
int factor = 2;
while (number % factor != 0) {
factor++;
}
System.out.println("First factor: " + factor);
Sample run:
Type a number: 91
First factor: 7
73
Solution:
int i = 1;
while (i <= 10) {
System.out.println(i + " squared = " + (i * i));
i++;
}
75
Exercise: digitSum
Write a class named DigitSum that reads an integer from
the user and prints the sum of the digits of that number.
You may assume that the number is non-negative.
Example:
Enter a nonnegative number:
29107
prints 2+9+1+0+7 or 19
76
Solution: digitSum
import java.util.Scanner;
public class DigitSum {
public static void main(String [] args) {
Scanner keyboard = new Scanner(System.in);
int n = keyboard.nextInt();
int sum = 0;
while (n > 0) {
sum += n % 10;
// add last digit to sum
n = n / 10;
// remove last digit
}
System.out.println(sum = + sum);
}
}
77
Random numbers
78
Description
nextInt()
Random questions
Given the following declaration, how would you get:
Random rand = new Random();
A random number between 0 and 100 inclusive?
Random solutions
Given the following declaration, how would you get:
Random rand = new Random();
A random number between 0 and 100 inclusive?
int random1 = rand.nextInt(101);
A random number between 1 and 100 inclusive?
int random1 = rand.nextInt(100) + 1;
A random number between 4 and 17 inclusive?
int random1 = rand.nextInt(14) + 4;
82
Exercise: Die-rolling
Write a program that simulates the rolling of two six-sided
dice until their combined result comes up as 7.
Sample run:
Roll: 2
Roll: 3
Roll: 5
Roll: 1
Roll: 4
You won
+ 4 =
+ 5 =
+ 6 =
+ 1 =
+ 3 =
after
6
8
11
2
7
5 tries!
83
Solution: Die-rolling
import java.util.*;
public class Roll {
public static void main(String[] args) {
Random rand = new Random();
int sum = 0;
int tries = 0;
while (sum != 7) {
int roll1 = rand.nextInt(6) + 1;
int roll2 = rand.nextInt(6) + 1;
sum = roll1 + roll2;
System.out.println("Roll: " + roll1 + " + " + roll2 + " = " + sum);
tries++;
}
System.out.println("You won after " + tries + " tries!");
}
}
84
Indefinite loop
variations
85
Variant 1: do/while
do/while loop: A control structure that executes statements
repeatedly while a condition is true, testing the condition at the end
of each repetition.
do/while loop, general syntax:
do {
<statement(s)>;
} while (<test>);
Example:
// roll until we get a number other than 3
Random rand = new Random();
int die;
do {
die = rand.nextInt();
} while (die == 3);
86
87
88
Scanner objects
90
Interactive programs
We have written programs that print console output.
It is also possible to read input from the console.
The user types the input into the console.
The program uses the input to do something.
Such a program is called an interactive program.
91
Scanner
Constructing a Scanner object to read the console:
Scanner <name> = new Scanner(System.in);
Example:
Scanner console = new Scanner(System.in);
92
Scanner methods
Some methods of Scanner:
Method
nextInt()
Description
reads and returns user input as an int
93
94
Input tokens
token: A unit of user input, as read by the Scanner.
When the token doesn't match the type the Scanner tries to read,
the program crashes.
Example:
System.out.print("What is your age? ");
int age = console.nextInt();
Sample Run:
What is your age? Timmy
InputMismatchException:
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
...
95
Importing classes
Java class libraries: A large set of Java classes available
for you to use.
Classes are grouped into packages.
To use the classes from a package, you must include an
import declaration at the top of your program.
Scanner is in a package named java.util
A complete program
import java.util.*;
}
}
Sample Run:
What is your first name? Marty
How old are you? 12
Marty is 12. That's quite old!
97
Sample Run:
Please type three numbers: 8 6 13
The average is 9.0
Notice that the Scanner can read multiple values from one line.
98