The Basic Parts of Java
• Data Types
Primitive
int, float, double, etc.
Composite
array (will also be covered in the lecture on Collections)
• Lexical Rules
• Expressions and operators
• Methods
Parameter list
Argument parsing
• Control Structures
• Branching
• Examples in http://www.cs.auc.dk/~torp/Teaching/E03/OOP/Examples/
OOP: Basic Parts of Java 1
Primitive Data Types
• Boolean {true, false}
• byte 8-bit
• short 16-bit
Natural numbers
• int 32-bit
• long 64-bit
• float 32-bit
Floating points
• double 64-bit
• char 16-bit Uni-code
• Also called built-in types
• Have fixed size on all platforms
OOP: Basic Parts of Java 2
Declarations
• A declaration is the introduction of a new name in a program.
• All variables must declared in advance.
• The is no dedicated variable declaration part of a Java program.
• General forms
type variableName1, variableName2, variableName3;
type variableName1 = value1,
variableName2 = value2,
variableName3 = value3;
• Constants are declared as final static variables
OOP: Basic Parts of Java 3
Primitive Data Types, Example
// create some integers
int x, y;
x = 1234; y = 3;
// or similar
double v = 3.14e-23,
w = 5.5;
// create som chars
char c1 = 'a';
Character c2;
// use a wrapper class
c2 = new Character ('b'); // read only
// A well-known constant
final static double PI = 3.14;
OOP: Basic Parts of Java 4
Array: A Composite Data Type
• An array is an indexed sequence of values of the same type.
• Arrays are defined as classes in Java.
• Example:
boolean[] boolTable = new boolean[MAXSIZE]
Elements are all of type boolean
The index type is always integer
Index limits from 0 to MAXSIZE-1
• Bound-check at run-time.
• Arrays are first class objects (not pointers like in C)
• There are no record or enumaration types in Java.
OOP: Basic Parts of Java 5
Lexical Rules
• A name in Java consists of [0-9][a-z][A-Z][_$]
name cannot start with a number
national language letters can be used, e.g., æ, ø , and å.
no maximum length thisIsAVeryLongVariableName
• All resevered word in Java are lower case, e.g., if.
• Case matters myVariable, myvariable
OOP: Basic Parts of Java 6
Naming Conventions
• Words run together, no underscore
• Intermediate words capitalized.
Okay: noOfDays, capacity, noInSequence
Not okay no_of_days, noofdays
• Name of classes: first letter upper case
Okay: Person, Pet, Car, SiteMap
Not okay: vehicle, site_map, siteMap
• Name of method or variable: first letter lower case
• Name of constants: all upper case, separated by underscore
• Part of JavaSoft programming standard
Java's Naming convention (link)
OOP: Basic Parts of Java 7
Commands in Java
• Assignment
variable = <expression>
• Method call
Various parameter mechanisms
• Control Structures
sequential
selective
iterative
OOP: Basic Parts of Java 8
Block Statement
• Several statements can be grouped together into a block
statement.
• A block is delimited by braces { <statement list> }
• Variables can be declared in a block.
• A block statement can be used wherever a statement is called for
in the Java syntax.
For example, in an if-else statement, the if portion, or the else portion,
or both, could be block statements
OOP: Basic Parts of Java 9
Expresions and Operators
• An expression is a program fragment that evaluates to a single
value.
double d = v + 9 * getSalary() % Math.PI;
e = e + 1; (here e is used both as an rvalue and a lvalue)
• Arithmetic operators
Additive +, -, ++, -- i = i + 1, i++, --i
Multicative *, /, % (mod operator) 9%2 = 1, 7%4 = 3
• Relational Operators
Equality == (two '=' symbols) i = i, i == i
Inequality != i != j
Greater-than >, >= i > j, i >= j
Less-than <, <= i < j, i <= j
OOP: Basic Parts of Java 10
Expresions and Operators, cont.
• Logical operators
and && bool1 && bool2
or || bool1 || bool2 || bool3
not ! !(bool1)
All are short-circuit
• Bitwise operators
and & 255 & 5 = 5 15 & 128 = 0
or | 255 | 5 = 255 8 & 2 = 10
xor ^ 3 ^ 8 = 11 16 ^ 31 = 15
shift left << 16 << 2 = 64 7 << 3 = 56
shift right >> 16 >> 2 = 4 7 >> 2 = 1
OOP: Basic Parts of Java 11
Expresions and Operators, cont.
• Assignement Operators
can be combined with other binary operators
+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, !=
• Conditional Operator
Ternary operator
?:
int max = n > m ? n : m;
• Precendence rules similar to C for Java operators
• Associtivity rules similar to C for Java operators
OOP: Basic Parts of Java 12
Methods in Java
• All procedures and functions in Java are methods on classes.
• The difference between a procedure and a function is the return
type
void myProcedure()
int myFunction() or MyClass myFunction1()
• Methods cannot be nested.
• Returning
Implicit: When the last command is executed (for procedures).
Explicit: By using the return command.
Good design: only to have one return command each method
OOP: Basic Parts of Java 13
Methods in Java, cont.
• General format
ReturnType methodName (/* <argument list> */){
// <method body>
}
• Examples calling methods
double y = getAverageSalary(); // returns double
boolean b = exists (/*args*/); // returns boolean
Person p = getPerson (/*args*/); // returns Person
OOP: Basic Parts of Java 14
Class IPAddress Example
public class IPAddress{
public static final String DOT = ".";
private int[] n; // example 127.0.0.1
private String logical; // example localhost
/* Constructor */
public IPAddress(){n = new int[4]; logical = null;}
/* Sets the logical name */
public void setName(String name){logical = name;}
/* Gets the logical name */
public String getName(){ return logical; }
/* Sets numerical name */
public void setNum(int one, int two, int three, int four){
n[0] = one; n[1] = two; n[2] = three; n[3] = four;}
/* Sets numerical name */
public void setNum(int[] num){
for (int i = 0; i < 4; i++){n[i] = num[i];} }
/* Gets the numerical name as a string */
public String getNum(){
return "" + n[0] + DOT + n[1] + DOT + n[2] + DOT + n[3]; }
OOP: Basic Parts of Java 15
Class IPAddress Example, cont.
public static void main (String[] args){
// create a new IPAddress
IPAddress luke = new IPAddress();
luke.setName("luke.cs.auc.dk");
System.out.println(luke.getName());
luke.setNum(130, 225, 194, 177);
String no = luke.getNum();
System.out.println(no);
// create another IPAddress
IPAddress localHost = new IPAddress();
localHost.setName("localhost");
int[] lNum = {127, 0, 0, 0}; // array initialization
localHost.setNum(lNum);
System.out.print(localHost.getName());
System.out.print(" ");
System.out.println(localHost.getNum());
}
OOP: Basic Parts of Java 16
Parameter Mechanism
• All parameters in Java are pass-by-value.
The value of the actual parameter is copied to the formal parameter.
• A variable number of arguments in not supported
public static void main (String[] args)
• Passing Objects
Objects are accessed via a reference.
References are pass-by-value.
The refernce is copied
The object itself is not copied
Via a formal parameter it is possible to modify the object "directly".
The reference to the object can however not be modified.
OOP: Basic Parts of Java 17
Actual and Formal Parameters
• Each time a method is called, the actual parameters in the
invocation are copied into the formal parameters.
String s = obj.calc(25, 44, "The sum is ");
String calc(int num1, int num2, String message){
int sum = num1 + num2;
String result = message + sum
return result;
}
OOP: Basic Parts of Java 18
Class IPAddress Example, cont.
public class IPAddress{
/* Call by value */
public int callByValue(int i){ i += 100; return i; }
/* Call by value */
public String callByValue(String s){s = "modified string"; return s; }
/* Call by ref like method */
public int callByRefLike(int[] a){
int sum = 0;
for(int j = 0; j < a.length; j++){ sum += a[j]; a[j] = 255;}
return sum;
}
// in main
IPAddress random = new IPAddress()
int dummy = 2;
random.callByValue(dummy); // dummy unchanged
String str = "not using new";
random.callByValue(str); // str unchanged
int[] ranIPNum = new int[4];
random.setNum(ranIPNum); // ranIPNUM changed to 255.255.255.255
OOP: Basic Parts of Java 19
The static Keyword
• For data elements
Are shared between all the instances of a class
public static int i;
public static ArrayList = new ArrayList();
public static final char DOT = '.';
• For method
Can be access without using an object
public static void main(String args[]){}
public static int getCount(){}
OOP: Basic Parts of Java 20
Class IPAddress Example, cont.
public static void main (String[] args){
private static int count = 0;
public static final String DOT = ".";
<snip>
/* Constructor */
public IPAddress(){
n = new int[4]; logical = null;
count++;}
/* Get the number of objects created */
public static int getCount() { return count;}
<snip>
/* Handy helper method */
public static void show(IPAddress ip){
System.out.print(ip.getName()); System.out.print(" ");
System.out.println(ip.getNum());
}
}
OOP: Basic Parts of Java 21
The if Statement
• The if statement has the following syntax:
The condition must be a boolean expression.
if is a Java It must evaluate to either true or false.
reserved word
if (condition){
statement;
}
If the condition is true, the statement is executed.
If it is false, the statement is skipped.
OOP: Basic Parts of Java 22
Logic of an if Statement
// example 1
if (weight < 20000)
doStuffMethod();
// same thing
if (weight < 20000){
condition doStuffMethod();
}
true
false // example 2
statement if (weight < 20000)
doStuffMethod();
doMoreStuff();
next statement // NOT the same thing
if (weight < 20000){
doStuffMethod();
doMoreStuff();
}
OOP: Basic Parts of Java 23
The if-else Statement
• An else clause can be added to an if statement to make it an if-
else statement
if (condition){
statement1;
}
else{
statement2;
}
• If the condition is true, statement1 is executed; if the condition
is false, statement2 is executed
• One or the other will be executed, but not both
• An else clause is matched to the last unmatched if (no matter
what the indentation implies)
OOP: Basic Parts of Java 24
Logic of an if-else Statement
if (income < 20000)
System.out.println ("pour");
else if (income < 40000)
System.out.println ("not so pour")
condition else if (income < 60000)
System.out.println ("rich")
else
false
true System.out.println ("really rich")
statement1 statement2
next statement
OOP: Basic Parts of Java 25
The switch Statement
• The general syntax of a switch statement is
switch (expression) enumerable
switch and {
case are reserved case value1 :
words statement-list1
case value2 :
statement-list2
case value3 :
statement-list3
}
If expression
matches value2, ● enumerables can appear in any order
● enumerables do not need to be consecutive
control jumps
● several case constant may select the same substatement
to here
● enumerables must be distinct
● enumerable cannot case 1..9
OOP: Basic Parts of Java 26
The switch Statement, cont.
• Often a break statement is used as the last statement in each
case's statement list
• A break statement causes control to transfer to the end of the
switch statement
• If a break statement is not used, the flow of control will continue
into the next case
switch (expression)
{
case value1 :
statement1
break exits break;
the innermost case value2 :
enclosing loop or statement2
switch break;
case value3 :
statement3
break;
}
OOP: Basic Parts of Java 27
Logic of an switch Statement
switch (expression){
case value1 :
expression statement-list1
break;
case value2 :
statement-list2
value1 value 2 value3 break;
statement-list1 statement-list2 statement-list3 case value3 :
statement-list3
break;
}
// next statement
other values
next statement
OOP: Basic Parts of Java 28
The switch Statement, cont.
• A switch statement can have an optional default case.
• The default case has no associated value and simply uses the
reserved word default.
• If the default case is present, control will transfer to it if no other
case value matches.
• Though the default case can be positioned anywhere in the
switch, it is usually placed at the end.
• If there is no default case, and no other value matches, control
falls through to the statement after the switch.
OOP: Basic Parts of Java 29
The switch Statement, cont.
• The expression of a switch statement must result in an integral
data type, like an integer or character; it cannot be a floating
point value.
• Note that the implicit boolean condition in a switch statement is
equality - it tries to match the expression with a value.
• You cannot perform relational checks with a switch statement,
e.g..
switch (i < 7)
not integral type {
illegal, relational
checking case true :
checking
statement1
break;
case “Hello“ :
statement2
break;
}
OOP: Basic Parts of Java 30
The switch Statement, Example
int salary = getSalary(); // gets a salary
switch(salary/20000) {
case 0:
System.out.println("pour");
break;
case 1:
System.out.println("not so pour");
break;
case 2:
System.out.println("rich");
break;
case 3:
System.out.println("really rich");
break;
default:
System.out.println("Hi, Bill Gates");
}
OOP: Basic Parts of Java 31
The while Statement
• The while statement has the following syntax
If the condition is true, the statement is executed.
Then the condition is evaluated again.
while (condition)
while is a
statement;
reserved word
The statement is executed repetitively
until the condition becomes false.
• Note, if the condition of a while statement is false initially, the
statement is never executed
Therefore, the body of a while loop will execute zero or more times
OOP: Basic Parts of Java 32
Logic of the while Statement
// Count from 1 to 10
int n = 10;
int i = 1;
while (i <= n) {
condition
System.out.println(i);
i = i + 1;
}
true // next statement
false
statement
next statement
// what is wrong here?
int i = 0;
while(i < 10){
System.out.println(i);
// do stuff
}
OOP: Basic Parts of Java 33
The while Statement, cont.
• The body of a while loop must eventually make the condition
false.
• If not, it is an infinite loop, which will execute until the user
interrupts the program.
This is a common type of logical error.
You should always double check to ensure that your loops will
terminate normally.
• The while statement can be nested
That is, the body of a while could contain another loop
Each time through the outer while, the inner while will go through its
entire set of iterations
OOP: Basic Parts of Java 34
The do Statement
• The do statement has the following syntax
Uses both do
the do and {
while statement;
reserved }
words while (condition)
The statement is executed once initially, then the condition is evaluated.
The statement is executed until the condition becomes false.
• A do loop is similar to a while loop, except that the
condition is evaluated after the body of the loop is
executed.
Therefore the body of a do loop will execute at least one time.
OOP: Basic Parts of Java 35
Logic of the do Statement
// Count from 1 to 10
int n = 10;
statement int i = 1;
do {
true System.out.println(i)
i = i + 1;
condition } while (i <= 10);
// next statement
false
next statement
OOP: Basic Parts of Java 36
The for Statement
• The for statement has the following syntax
The initialization portion The condition is
Reserved is executed once checked before each
word before the loop begins iteration
for (initialization ; condition ; increment)
statement;
The statement is The increment portion is executed
executed until the at the end of each iteration
condition becomes false
// equvivalent while statement
initialization
while (condition){
statement;
increment;
OOP: Basic Parts of Java } 37
Logic of the for Statement
// Count from 1 to 10
int n = 10;
for (int i = 1; i <= n; i++)
System.out.println (i);
initialization
// next statement
condition
true // what is wrong here?
for (int i=0; i < 10; i++){
statement System.out.println(i);
false i--;
}
increment
// what is wrong here?
next statement for (int i = 0; i < 10;){
i++;
// do stuff
OOP: Basic Parts of Java
}
38
The for Statement, cont
• Like a while loop, the condition of a for statement is tested prior
to executing the loop body.
• Therefore, the body of a for loop will execute zero or more
times.
• It is well-suited for executing a specific number of times that can
be determined in advance.
• Each expression in the header of a for loop is optional
Both semi-colons are always required in the for loop header.
OOP: Basic Parts of Java 39
Branching
• break
Can be used in any control structure
Exits from the innermost enclosing loop
break <label>
• continue
Cycles a loop, e.g., jump to the condition checking
• return
Only from methods;
Jumps out of the current method an returns to where the method was
called from.
return <expression>
• goto
Reserved word
OOP: Basic Parts of Java 40
Logic of the break Statement
while (condition1) {
condition1 stmt1;
if (condition2)
true break;
stmt2;
stmt1 }
// next statement
false
condition2
false
true
stmt2
next statement
OOP: Basic Parts of Java 41
Logic of the break Statement, cont
while (condition1) {
condition1 stmt1;
while (true){
break;
true }
stmt2;
stmt1 }
// next statement
false
condition2
break
stmt2
next statement
OOP: Basic Parts of Java 42
Logic of the continue Statement
while (condition1) {
stmt1;
if (condition2)
condition1
continue;
stmt2;
true }
// next statement
true stmt1
false
condition2
false
// what is wrong here?
stmt2 while (condition){
// many more statements
continue;
next statement }
OOP: Basic Parts of Java 43
continue Example
public void skipPrinting(int x, int y){
for(int num = 1; num <= 100; num++){
if((num % x) == 0){
continue;
}
if((num % y) == 0){
continue;
}
// This num is not divisible by x or y
System.out.println(num);
}
}
OOP: Basic Parts of Java 44
break and continue Example
for (int i = 3; i <= max; i++) {
// skip even numbers
if (i % 2 == 0)
continue;
// check uneven numbers
boolean isPrime = true;
for (int j = 2; j < i - 1; j++) {
// is i diviseable with any number in [2..i-i]
// then it is not a prime number so we break
// of efficiency reasons
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime)
System.out.println(i + " is a prime number");
}
OOP: Basic Parts of Java 45
Summary
• Set of built-in data types
• Array are supported
no support records or enumarated type
• Methods
procedure
functions
• Argument passing
Always by-value in Java
actual and formal parameters.
• Control structures
if, if-else, if-else-if-else, if-else-if-else-if-else, etc.
while-do, do-while
for
switch
OOP: Basic Parts of Java 46