Object Oriented Programming with Java
CHAP 1: JAVA PROGRAMMING BASICS
Fundamentals, Programming Basics & Controls Structures: By Larisse Mahoro
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
1.1. Java Language Fundamentals
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Overview
⚫ Java is a platform as well as a language
⚫ The Java language was developed by James Gosling at Sun Microsystems
(which is now a subsidiary of Oracle Corporation) and first released in 1995
⚫ Java is an island in Indonesia where the first coffee was produced
(called Java coffee). Java name was chosen by James Gosling
while having a cup of coffee nearby his office
⚫ The Java platform allows software
to be developed and used
across different architectures
and operating systems
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Overview
⚫ The principles for creating Java programming language were "Simple, Robust,
Portable, Platform-independent, Secured, High Performance, Multithreaded,
Architecture Neutral, Object-Oriented, Interpreted, and Dynamic“
⚫ Firstly, it was called "Greentalk" by James Gosling, and the file extension was .gt
⚫ After that, it was called Oak and was developed as a part of the Green project
that was started by small team of Sun Engineers (Called Green Team) in 1991.
⚫ Oak is a symbol of strength and chosen as a national tree of many countries like
the U.S.A., France, Germany, Romania, etc.
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Java Versions
⚫ Many java versions have been released till now. The current stable release of Java is Java SE 10
1. JDK Alpha and Beta (1995) 8. Java SE 6 (11th Dec 2006) 15. Java SE 13 (September 2019)
2. JDK 1.0 (23rd Jan 1996) 9. Java SE 7 (28th July 2011) 16. Java SE 14 (Mar 2020)
3. JDK 1.1 (19th Feb 1997) 10. Java SE 8 (18th Mar 2014) 17. Java SE 15 (September 2020)
4. J2SE 1.2 (8th Dec 1998) 11. Java SE 9 (21st Sep 2017) 18. Java SE 16 (Mar 2021)
5. J2SE 1.3 (8th May 2000) 12. Java SE 10 (20th Mar 2018) 19. Java SE 17 (September 2021)
6. J2SE 1.4 (6th Feb 2002) 13. Java SE 11 (September 2018) 20. Java SE 18 (March 2022)
7. J2SE 5.0 (30th Sep 2004) 14. Java SE 12 (March 2019)
⚫ Since Java SE 8 release, the Oracle corporation follows a pattern in which every even version
is release in March month and an odd version released in September month
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Java editions
⚫ Java Micro Edition (ME) - designed for running Java applications
on mobile devices with limited resources.
⚫ Java Standard Edition (SE) - the general purpose version for
desktop PCs and servers
⚫ Java Enterprise Edition (EE) - SE plus some additional APIs for
large enterprise server applications
⚫ JavaFX: is an open-source, next-generation client application
platform for desktop, mobile and embedded systems built on top
of Java.
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
The platform
⚫Java Runtime Environment (JRE)
–This a virtual machine which runs programs which have been
compiled
–Contains a large library of classes for lots of different purposes
⚫Java Development Kit (JDK)
–Contains tools such the compiler
–Has a copy of the JRE
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
A C program…
Source file(s) Compiler Machine code
int 0101110
main() 0010110
{ 1101010
} 1010101
For example…
Runs on an x86
processor
Test.c gcc.exe Text.exe
containing
x86 instructions
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
A Java program…
Source file(s) Compiler Java byte code Virtual machine(s)
class
store x
Test {
pop y
…
load z
}
For example…
Test.java javac.exe Test.class
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Virtual machines
Class file(s) Virtual machine(s) Machine code
0101110
Windows 0010110
x86 JVM 1101010
store x 1010101
pop y
load z
0101110
Symbian 0010110
RISC JVM 1101010
1010101
Test.class
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Example
class Greeting {
Write the
public static void main(String[] args){ source file
System.out.println("Hello RCA Student!");
}
}
Compile the
$ javac Greeting.java class file
Greeting.class Run the class
file in the
virtual
$ java Greeting machine
$ Hello RCA Student! View the
ouput
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
A Java source file
public class Person{ Class:
Method:
void talk(){ Statement:
A statement
int x = 5;
A class }
void walk(){
A method
}
}
public, class, void and int are all Java keywords
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
More detail…
Access modifier No return
value Method A method
name argument
public class Greeting{
public static void main(String[] args){
System.out.println(“Hello RCA Students!");
}
}
Output text to
the console
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Launch time
⚫ Calling the java program launches the JVM
⚫ You specify the name of the class and any arguments to send it, e.g.
$ java Greeting "Hello" 4
⚫ The JVM searches the class for a method called main, and then calls that
method
⚫ It sends the arguments (e.g. "Hello" and "4") as items in the array called
args
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Write your first class!
⚫Create a .java file
–Define a class (should have the same name as the Java file)
–Add a the main method
public static void main(String[] args) { ... }
–Call System.out.println(…) to print something
⚫Compile with javac
⚫Run the file with java
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
The compiler
⚫Converts the .java files to Java bytecode
⚫Reports any errors that prevented it from completing, or
warnings that the developer should consider
–Tells the developer what is wrong
–Gives the source file and line number
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Statements
⚫A statement does something, e.g.
–Declaring a variable, int x;
–Assigning a value to a variable, x = 10;
–Incrementing a variable, x++;
–Calling a method, System.out.println(“X”);
⚫Statements are separated by semi-colons, e.g
–x = 10; y = x;
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Expressions
⚫An expression evaluates to a value, e.g.
• 10 + 2 * 3 / 4 11
• "Hello" + " world" "Hello world"
• 3 3
• "kind of.." "kind of.."
⚫A statement can be an expression if it evaluates to a value, e.g.
• x = 10 10 e.g. y = (x = 10);
• Math.sin(5) -0.9589...
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Variables
⚫ A value is stored in a variable so that it can be used elsewhere in a
program, e.g.
int x = 10;
Initial value
Variable type Variable name (optional)
⚫ Variables can be primitive types or object references
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Primitive types
⚫These are the types which are part of the Java language
–boolean true or false (1bit)
–byte a 8bit signed number
–char a 16bit Unicode character
–short a 16bit signed number
–int a 32bit signed number
–long a 64bit signed number
–float a 32bit floating-point number
–double a 64bit floating-point number
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Primitive types
⚫You can generally assign the value of a smaller primitive type to a
larger one, e.g.
short big = 5646;
int bigger = big;
long biggest = bigger;
⚫But not the other way around
long big = 3453434623426;
Compiler error!
int notSoBig = big;
short evenSmaller = notSoBig;
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Casting primitives
⚫To assign a value to a smaller type, you have to use the cast
operator, e.g.
long big = 3453;
Compiler error!
int notSoBig1 = big;
int notSoBig2 = (int)big;
short smaller = (short)big; Works
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Objects
⚫These are complex types which are defined in the JDK or in
your code, e.g.
–String - a sequence of characters
–Date - a date and time value
⚫An object is created in memory using the new keyword,
e.g. String s1 = new String("Hello");
The object's The object
class itself
Reference
variable
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Objects
⚫Variable references aren't objects themselves
⚫They reference an object in memory
String s1 = new String("Hello");
Memory
s1 "Hello"
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Objects
⚫Reference variables can be null which means they don't
reference an object anymore,
s1 = null;
e.g.
Memory
s1 "Hello"
Variable
points to
Object still
nothing...
exists in
memory
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Objects
⚫A variable can be changed to reference a different object,
e.g.
s1 = new String("World");
Memory
s1 "Hello"
"World"
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Objects
⚫And more than one variable can reference the same
object, e.g.
String s2 = s1;
Memory
s1 "Hello"
s2 "World"
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Garbage collection
⚫This is process which runs in the background looking for
objects with no references
⚫It deletes such objects from memory to free space for new
objects
Memory Memory
s1 "Hello"
GC
s2 "World" "World"
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Equality
⚫Two types of equality...
⚫Reference equality x == y
–Checks if the variables reference the same object in memory
⚫Object equality x.equals(y)
–Checks if the objects which the variables reference are equal,
i.e. have the same meaning or content
• E.g. for Strings - do they have the same characters?
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Equality example
String s3 = new String("World");
⚫s1 and s2 reference the same object so
s1 == s2 is TRUE Memory
⚫s1 and s3 reference different objects so
s1 "Hello"
s1 == s3 is FALSE s2 "World"
even though the strings are the same
"World"
s3
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Equality example
⚫s1 and s3 reference
String objects with the
same content so
Memory
s1.equals(s3) is TRUE
s1 "Hello"
⚫Summary...
s1 == s2 TRUE s2 "World"
s1 == s3 FALSE "World"
s1.equals(s2) TRUE
s3
s1.equals(s3) TRUE
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Naming conventions
⚫ The compiler won't complain if you don't stick to these, but we will!
Entity Convention Examples
Class name Camelcase, starts HelloWorldProgram
uppercase UserRole
Method name Camelcase, starts getAllStudents
lowercase main
Variable Camelcase, starts numStudents
lowercase listOfUsers
Constant Uppercase with MAX_STUDENT_AGE
underscores DEFAULT_USER
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
1.2. Programming basics & Control Structures
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: if-else
if (condition) { if (a == b) {
doMethod();
} }
else if (another condition) { else if (isJava()) {
a = 10;
} }
else { else {
out.println("X");
} }
if (a < x) { if (a < x) If only one statement
a = 5; a = 5; follows the if or else if,
} then the braces aren't
needed
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: while / do-while
while (condition) { while (a < 10) {
// loop these statements out.println(a);
} a++;
}
do {
// loop these statements
do while means that the
}
statements will always
while (condition);
been executed at least
once
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: for
for (statement; condition; statement) {
// loop these statements
}
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
int i = 0 ;
while (i < 10) {
System.out.println(i); for is a alternative way
to write a while loop
i++;
}
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: continue/break
for (int i = 0; i < 10; i++) {
break causes the for loop to
finish immediately
if (i == x)
break;
else if (i == z)
continue;
continue goes to the next
System.out.println(i); iteration if there will be one
}
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: switch
switch (variable) { switch (choice) {
case <value1>: case 'Y':
statements doThing();
break; break;
case <value2>: case 'N':
e.g
statements exitProgram();
break; break;
default: default:
statements showHelp();
} }
switch can work with byte,
char, short and int values
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: switch
switch (choice) { if (choice == 'Y')
case 'Y': doThing();
doThing(); else if (choice == 'N')
break; exitProgram();
case 'N': else
exitProgram(); showHelp();
break;
default:
showHelp();
}
switch is often a better
way of writing an if-else
statement
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Flow control: switch
switch (choice)
{ What happens now
case 'Y':
when choice equals 'Y'?
doThing();
case 'N';
case 'X';
What about 'X'?
exitProgram();
break;
default:
showHelp();
}
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
Further reading
⚫ http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html
⚫ https://docs.oracle.com/en/java/javase/19/language/java-language-changes.html
⚫ History of Java – Javatpoint
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023
EoF
| Object Oriented Programming with Java - Larisse Mahoro | 11 November 2023