Week1-2 Ch12 Introduction JavaBasics
Week1-2 Ch12 Introduction JavaBasics
2
So?
Humans -- natural Machines -- binary
language language
Large vocabulary Small vocabulary
Complex syntax Simple syntax
Semantic ambiguity No semantic ambiguity
Programming Compiler +
(COMP 248 + COMP
249) Interpreter
Programming language
Ex: ???
Vocabulary: restricted
Syntax: small and restricted
Semantic: no ambiguity (almost)
3
Origins of the Java
Language
Created by Sun Microsystems (1991)
4
Compilers
A compiler:
– is a software tool which translates source code
into another language
Java is different… 5
Java Translation
Java compiler:
• Java source code --> bytecode
• A machine language for a fictitious computer called
the Java Virtual Machine
Java interpreter:
• Executes the Java Virtual Machine (JVM)
• Java bytecode --> into machine language and
executes it
• Translating byte-code into machine code is relatively
easy compared to the initial compilation step
So the Java compiler is not tied to any particular machine
Once compiled to byte-code, a Java program can be used
on any computer, making it very portable
6
Java Translation
Java source
Code
MyProg.java
7
Some definitions
Algorithm:
• A step-by-step process for solving a problem
• Expressed in natural language
Pseudocode:
• An algorithm expressed in a more formal language
• Code-like, but does not necessarily follow a
specific syntax
Program:
• An algorithm expressed in a programming
language
• Follows a specific syntax
8
Problem Solving
The purpose of writing a program is
to solve a problem
The general steps in problem solving
are:
1. Understand the problem
2. Design a solution (find an algorithm)
3. Implement the solution (write the
program)
4. Test the program and fix any problems
9
Java Program Structure
A java program:
• is made up of one or more classes
(collection of actions)
• a class contains one or more methods
(action)
• a method contains program
statements/instructions
10
Java Program Structure
// comments about the class
public class MyProgram class header
{
class body
}
MyProgram.java
11
Java Program Structure
// comments about the class
public class MyProgram
{
}
MyProgram.java
12
A small Java program
//********************************************************
// Author: L. Kosseim
//
// Demonstrates the basic structure of a Java application.
//********************************************************
public class Hello
{
//--------------------------------------------------------
// Prints a message on the screen
//--------------------------------------------------------
public static void main (String[] args)
{
System.out.println ("Hello World!!!");
}
}
Hello.java
extension of java
Java is case sensitive! programs
Semantics
define what a statement means
A program that is syntactically correct is
not necessarily logically (semantically)
correct.
14
3 types of errors
Compile-time (syntax) errors
• The compiler will find syntax errors and other
basic problems
Run-time errors
• A problem can occur during program execution
15
3 types of errors …
Logical (semantic) errors… aka a bug
• A mistake in the algorithm
• Compiler cannot catch them
• A program may run, but produce
incorrect results
Ex: ??
A) Syntax error
B) Run-time error
C) Logic error
D) All of the above
17
Basic Program
Development
Edit and
save program
Compilation
errors Run-time &
logical
Compile program errors
18
Development
Environments
Basic compiler & interpreter
• Sun Java Development Kit (JDK) --
download from Sun
19
Development
Environments
IDE (Integrated Development Environment)
• Eclipse
• JCreator
• Borland JBuilder
• Microsoft Visual J++
• … see course Web site to download them
20
CHAP 1 & 2:
JAVA FUNDAMENTALS
& CONSOLE INPUT
COMP 248:
Object Oriented Programming I
Topics …
1. Comments
2. Identifiers
3. Indentation
4. Primitive Types
5. Variables
6. Output
7. Numeric Console Input
8. Assignment
9. Arithmetic Expressions
10. More Assignment Operators
11. Assignment Compatibility
12. Strings
13. String Console Input
22
Template of a simple Java
program
//**************************************************
// comments on the program (authors, purpose, …)
//**************************************************
25
Valid Identifier?
Which of the following is not a valid
identifier?
A) abc
B) ABC
C) Abc
D) aBc
E) a bc
26
Valid Identifier?
27
Identifiers
Guidelines:
give a significant name!
avoid '$‘
by convention:
• class names --> use title case
ex : MyClass, Lincoln
• constants --> use upper case
ex : MAXIMUM
• variables, methods, … --> start with
lowercase
ex : aVar, a_var
28
Identifiers
Avoid Predefined identifiers:
• Although they can be redefined, it is confusing
and dangerous
• System String println
29
Java reserved words
30
Examples
Identifier Correct or not?
GST
PriceBeforeTax
Student_3
student#3
Shipping&HandlingFee
Class
__123
the account
1floor
31
3 - Indentation
Spaces, blank lines, and tabs are called
white space
White space is used to separate words
and symbols in a program
Extra white space is ignored
Programs should be formatted to enhance
readability, using consistent indentation
32
Example 1: bad
indentation
//******************************************************
// Lincoln2.java
// Demonstrates a poorly formatted, though valid,
// Program.
//******************************************************
33
Example 2: bad
indentation
//********************************************************************
// Lincoln3.java
// Demonstrates another valid program that is poorly formatted.
//********************************************************************
public class
Lincoln3
{
public
static
void
main
(
String
[]
args
)
{
System.out.println (
"A quote by Abraham Lincoln:" )
; System.out.println
(
"Whatever you are, be a good one.“
)
;
} 34
Example 3: good
indentation
//*****************************************************
// Lincoln3.java
// Demonstrates a properly formatted program.
//*****************************************************
Numeric
• 4 types to represent integers (ex. 3, -5):
byte, short, int, long
37
Numerical Types …
The difference between:
byte, short, int, long AND float, double
is their size (so the values they can store)
38
Pitfall: Round-Off Errors in Floating-Point
Numbers
39
Characters
A char stores a single character
delimited by single quotes:
'a' 'X' '7' '$' ',' '\n'
characters are ordered according to a
character set
each character corresponds to a unique
number code
Java uses the Unicode character set
• 16 bits per character, so 65,536 possible
characters
• Unicode is an international character set,
containing symbols and characters from
languages with different alphabets 40
Characters
The ASCII character set is older and
smaller than Unicode, but is still popular
The ASCII characters are a subset of the
Unicode character set, including:
41
Booleans
A boolean value represents a true
or false expression
The reserved words true and
false are the only valid values for a
boolean type
NOT… 0 and 1
42
5 - Variables
a name for a location in memory
used to store information (ex. price, size, …)
must be declared before it is used
• indicate the variable's name
• indicate the type of information it will contain
• declaration can be anywhere in the program (but
before its first access)
data type variable name
44
Initialization at
declaration
A variable can be given an initial value in the
declaration
int sum = 0;
int base = 32, max = 149;
45
Example – PianoKeys.java
//********************************************************
// PianoKeys.java
// Demonstrates the declaration and initialization of an
// integer variable.
//********************************************************
public class PianoKeys
{
// Prints the number of keys on a piano.
public static void main (String[] args)
{
int keys = 88;
Output 46
Local-Variable Type Inference
(var):
use the var keyword for local variable type inference.
This allows developers to declare local variables without
explicitly specifying the type, letting the compiler infer it based
on the assigned value.
Sample
public class test {
}
Constants
similar to a variable but can only hold one value
while the program is active
the compiler will issue an error if you try to
change the value of a constant during execution
use the final modifier
final int MIN_AGE = 18;
Constants:
• give names to otherwise unclear literal values
• facilitate updates of values used throughout a
program
• prevent inadvertent attempts to change a value
48
6 - Output
System.out.print System.out.println
Displays what is in parenthesis Displays what is in
parenthesis
Examples: Advances to the next line
System.out.print("hello");
System.out.print("you");
System.out.println("hello");
System.out.println("you");
System.out.println();
???
Output
50
Multiple output …
cannot cut a string over several lines
System.out.println("this is a
long string"); // error!
System.out.println("this is a" +
"long string"); // ok
51
Creating multiple Strings:
String Concatenation(Java 8)
import java.util.Scanner;
public class test {
import java.util.Scanner;
public class test {
}
} }
}
3.141
PI two decimal precision formatting = 3.14
Escape sequences
System.out.println ("I said "Hi" to her.");
???
Output
to print a double quote character
• Use an escape sequence
- sequence is a series of characters that represents a
special character
- begins with a backslash character (\)
- considered as 1 single character
???
Output
57
Escape sequences
Some Java escape sequences:
\b backspace
\t tab
\n newline
\" double quote
\' single quote
\\ backslash
58
You try
What will the following statement output?
System.out.print("one\ntwo\nthree\n");
System.out.print
A) ("Read the file "c:\windows\readme.txt");
B) ("Read the file "c:\windows\readme.txt"");
C) ("Read the file "c:\\windows\\readme.txt");
D) ("Read the file \"c:\\windows\\
readme.txt\"");
E) ("Read the file \"c:\windows\readme.txt\"");
60
7. Numeric Console
Input
Class Libraries & Packages
■ A class library (ex: Java standard class
library) is a collection of classes that we can
use when developing programs
■ The classes of the Java standard class library
are organized into packages
Package Purpose
62
Console Input
since Java 5.0, use the Scanner class
the keyboard is represented by the System.in
object
1. import java.util.Scanner;
2. Scanner myKeyboard = new
Scanner(System.in);
63
To read from a scanner
to read tokens, use a nextSomething()
method
– nextBoolean(), tokens are delimited by
– nextByte, whitespaces (blank
spaces,
– nextInt(), tabs, and line breaks)
– nextFloat(),
– nextDouble(),
– next(), Will see later in the chapter
– nextLine() Will see later in the chapter
– … myKeyboard = new Scanner(System.in);
Scanner
System.out.println("Your name:");
String name = myKeyboard.next();
System.out.println("Welcome " + name + " Enter your
age:");
int age = myKeyboard.nextInt();
64
Example 1:
ScannerDemo1.java
//*****************************************************
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read numeric tokens
from
// the console with the Scanner class
//*****************************************************
import java.util.Scanner; // we need to import this class
65
Example 1:
ScannerDemo1.java
// let's ask the user for some input
System.out.println("Enter the number of pods followed
by");
System.out.println("the number of peas in a pod:");
// let's read the user input (2 integers that we assign
to 2
// variables)
int numberOfPods = keyboard.nextInt( );
int peasPerPod = keyboard.nextInt( );
int totalNumberOfPeas = numberOfPods*peasPerPod;
66
Example 1: ScannerDemo1.java
67
Example 2:
ScannerDemo2.java
//
****************************************************
***
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read various
pespes
// of token with the Scanner class
//**************************************************
*****
import java.util.Scanner;
public class ScannerDemo2
{
public static void main(String[] args)
{
// let's try to read integers
int n1, n2; // let's declare 2
variables for our tests
// let's declare our scanner object
Scanner scannerObject = new
Scanner(System.in); 68
Example 2:
ScannerDemo2.java
// let’s read two whole numbers (integers)
System.out.println("Enter two whole numbers ");
System.out.println("separated by one or more
spaces:");
69
Example 2:
ScannerDemo2.java
System.out.println("Next enter two numbers with a
decimal point.");
System.out.println("Decimal points are allowed.");
// let's try to read doubles now
double d1, d2;
d1 = scannerObject.nextDouble( );
d2 = scannerObject.nextDouble( );
System.out.println("You entered " + d1 + " and " +
d2);
// close the Scanner
scannerObject.close();
} // end of main()
} // end of class ScannerDemo2
70
close() method
Good habit to close a Scanner object, at the end of
your program
Ex:
Say created a Scanner object called keyIn as
follows
Semantics:
1. the expression on the right is evaluated
2. the result is stored in the variable on the left
(overwrite any previous value)
3. The entire assignment expression is worth the
value of the RHS
72
Example
public class Geometry
{
// Prints the number of sides of several geometric
shapes.
public static void main (String[] args)
{
int sides = 7; // declaration with initialization
System.out.println("A heptagon has " + sides + "
sides.");
Outpu
t 73
Difference with the math
=In Java, = is an operator
In math, = is an equality relation
In math… a+6 = 10 ok
In Java… a+6 = 10;
In math… a = b and b = a
same thing!
In Java… a = b; and b = a;
74
Examples
Declarations:
int x;
int y = 10;
char c1 = ’a’;
char c2 = ’b’;
Statements:
x = 20+5;
y = x;
c1 = ’x’;
c2 = c1;
75
Swap content of 2
variables
Write a series of declarations & statements to
swap the value of 2 variables…
A) x = y; y = x;
B) y = x; x = y;
C) Both A) & B) will work
D) Neither A) nor B) will work
76
9 - Arithmetic
Expressions
An expression is a combination of one or
more operands and their operators
Arithmetic operators:
Addition +
Subtraction -
Multiplication *
Division /
Remainder
%
77
Division and Remainder …
the division operator (/) can be:
Integer division
• if both operands are integers
10 / 8 equals? 1
8 / 12 equals? 0
Real division
10.0 / 8 equals? 1.25
• otherwise
8 / 12.0 equals? 0.6667
78
Division and Remainder
10 % 8 equals? 2 (10÷8 = 1
8 % 12 equals? 8 remainder 2)
79
Operator Precedence
Operators can be combined into complex
expressions
result = total + count / max - offset;
a + b + c + d + e a + b * c - d / e
a / (b + c) - d % e a / (b * (c + (d - e)))
82
Assignment Revisited
The assignment operator has a lower
precedence than the arithmetic operators
First the expression on the RHS is evaluated
A) 0
B) 18
C) 25
D) 10
84
Let’s put it all together
Purpose:
– Conversion of degrees Fahrenheit in degrees Celsius
Algorithm:
1. Assign the temperature in Fahrenheit (ex. 100 degrees)
2. Calculate the temperature in Celsius (1 Celsius = 5/9
(Fahr – 32)
3. Display temperature in Celsius
Variables and constants:
Data Identifier Type var or
const?
Temperature in Fahrenheit fahr double
85
The Java program
//**********************************************************
// Temperature.java Author: your name
// A program to convert degrees Fahrenheit in degrees Celsius.
//**********************************************************
public class Temperature {
public static void main (String[] args)
{
// Declaration of variables and constants
}
}
filename??
86
10 - More assignment operators
in addition to =
often we perform an operation on a variable, and
then store the result back into that variable
Java has shortcut assignment operators:
variable = variable operator expression;
variable operator= expression;
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
87
Shorthand Assignment
Statements
Example: Equivalent To:
count += 2; count = count + 2;
88
Assignment operators
The behavior of some assignment
operators depends on the types of the
operands
ex: the +=
• If the operands are strings, +=
performs string concatenation
• The behavior of += is consistent with
the behavior of the "regular" +
89
Example
int amount = 10;
amount += 5;
System.out.println(amount);
92
Example
int nb = 50; int nb = 50;
++nb; nb++;
value of nb value of nb
int nb = 50;
int x; value of nb &
x = nb++ + 10; x
93
Example
int nb = 50; int nb = 50;
int x; int x;
x = ++nb + nb; x = nb++ + nb;
94
You try
What is stored in the integer variables num1,
num2 and num3 after the following statements?
int num1 = 1, num2 = 0;
int num3 = 2 * num1++ + --num2 * 5;
A) 13
B) 20
C) 23
D) No idea???
96
You try
What is stored in the integers a and c after the
following statements?
int a = 1;
int c = a++ + a--;
A) a = 1, c = 2
B) a = 1, c = 3
C) a = 3, c = 3
D) No idea???
97
You try
What is stored in the integer c after the following
statements?
int a = 1, b = 2;
int c = a++ + a + 2*(-- b) + 3/b--;
A) 7
B) 8
C) 8.5
D) No idea???
98
Summary of ++ and - -
99
11 - Assignment
Compatibility
In general, the value of one type cannot be
stored in a variable of another type
int intVariable = 2.99; //Illegal
100
Assignment
Compatibility
an expression has a value and a type
2 / 4 (value = 0, type = int)
2 / 4.0 (value = 0.5, type =
double)
the type of the expression depends on the
type of its operands
101
Arithmetic promotion
happens automatically, if the operands of an
expression are of different types
aLong + anInt * aDouble
operands are promoted so that they have the
same type
promotion rules:
• if 1 operand is of type… the others are promoted to…
double double
float float (double)
long long
• short, byte and char are always converted to int
102
Examples
(aByte + anotherByte) --> int
(aLong + anInt * aDouble) --> ??
(aFloat - aBoolean) --> ??
103
Examples
What is the value and type of this expression?
2 / 4 * 1.0
A) 0 (int)
B) 0.0 (double)
C) 0.5 (int)
D) 0.5 (double)
104
Examples
What is the value and type of this expression?
1.0 * 2 / 4
A) 0 (int)
B) 0.0 (double)
C) 0.5 (int)
D) 0.5 (double)
105
Assignment conversions
occurs when an expression of one type is assigned to a
variable of another type
var = expression;
widening conversion
• if the variable has a wider type than the expression
• then, the expression is widened automatically
106
Assignment conversions
narrowing conversion
• if the variable has a smaller type than the
expression then, compilation error, because
possible loss of information
int aVar;
aVar = 3.7; ok?
107
Casting
the programmer can explicitly force a type
conversion
int
syntax:
aVar; (desired_type)
byte aByte;
expression_to_convert
aVar = (int)3.7; int anInt = 75;
(aVar is 3… not 4!) aByte = anInt;
// ok?
aByte = (byte)anInt; // ok?
double d;
d = 2/4; // d is 0
d = (double)2/4; // d is 0.5
// 2.0 / 4
d = (double)(2/4); // d is 0.0
• or a reference to an object
- ex: String, Array, …
A character string:
• is an object defined by the String class
• delimited by double quotation marks ex:
"hello", "a"
- System.out.print("hello"); // string of
characters
- System.out.print('a'); // single character
111
Declaring Strings
1. declare a reference to a String object
String title;
112
Declaring Strings
Because strings are so common, we don't have to
use the new operator to create a String object
String title;
title = new String("content of the string");
String title;
title = "content of the string";
113
Strings
once a string is created, its value cannot be modified
(the object is immutable)
• cannot lengthen/shorten it
• cannot modify its content
115
Example – StringTest.java
public class StringTest {
public static void main (String[] args) {
String string1 = new String ("This is a string");
String string2 = ""; ???
Outpu
System.out.println("Content of string1: \"" + string1 + "\"");
t
System.out.println("Length of string1: " + string1.length());
System.out.println("Content of string2: \"" + string2 + "\"");
System.out.println("Length of string2: " + string2.length());
116
Example …
// String string1 = new String ("This is a
string");
// String string2 = "";
??? Outpu
System.out.println(string2); t
System.out.println(string3);
System.out.println(string4);
System.out.println(string5);
} } 117
Example 3:
ScannerDemo3.java
//
********************************************************
****
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read String tokens
with
// the Scanner class
//******************************************************
******
import java.util.Scanner;
public class ScannerDemo3
{
public static void main(String[] args) {
//Let's declare our Scanner object
Scanner scannerObject = new Scanner(System.in);
// let's try to read 2 "words" now
System.out.println("Next enter two words:");
String word1 = scannerObject.next( );
String word2 = scannerObject.next( ); 118
Example 3:
ScannerDemo3.java
//To get rid of '\n‘
// Close Scanner
scannerObject.close();
} // end of main()
}// end of class ScannerDemo3
119
A note on readLine
nextLine reads the remainder of a line of text starting where the last
reading left off
This can cause problems when combining it with different methods for
reading from the keyboard such as nextInt
ex:
Scanner keyboard = new Scanner(System.in);
int n = keyboard.nextInt();
String s1 = keyboard.nextLine();
String s2 = keyboard.nextLine(); need an extra
input: invocation
2 of nextLine to get rid of
Heads are better than the end of line
1 head. character
what are the values of n, s1, and s2? after the 2
120
close() method