(OOP2) Introduction to Java

(OOP2) Introduction to Java

Object-oriented programming organizes a program around its data (i.e., objects) and a set of well-defined interfaces to that data.

Paradigms of Java


It refers to simplification of the functionality for the end-user, hiding certain details to only show the essential information to the user.


Encapsulation is the mechanism that binds together code and the data it manipulates, and keeps both safe from outside interference and misuse.


It is the process by which one object acquires the properties of another object, through hierarchical classification. (class Animal → class Mammal → class Dog → class GoldenRetriever)


It is a feature that allows one interface to be used for multiple methods (under “many forms”). This helps reduce complexity by specifying a general class of action.

Data Types

Data Type Characteristics

Data Type
1 byte
Integer; -128 to 127
2 bytes
Integer; -32,678 to 32,767
4 bytes
Integer; 32-bit type, often the best
8 bytes
Integer; useful for big numbers
4 bytes
Floating-point number
8 bytes
Floating-point; used by Math()
2 bytes
Unicode, not ASCII; 0 to 65,536
Either ‘true’ or ‘false’
Java includes automatic type promotion and implicit type conversion from smaller to larger datatypes. Following is an example of explicit type-casting.
public class Conversion { public static void main(String[] args) { byte b; int i = 257; double d = 323.142; System.out.println("\nint to byte"); b = (byte) i; System.out.println("i and b " + i + " " + b); System.out.println("\ndouble to int"); i = (int) d; System.out.println("d and i " + d + " " + i); System.out.println("\ndouble to byte"); b = (byte) d; System.out.println("d and b " + d + " " + b); } }
PS F:\oopsies> int to byte i and b 257 1 double to int d and i 323.142 323 double to byte d and b 323.142 67


A variable is defined by the combination of an identifier, a type, and an optional initializer. Additionally, all variables have a scope and a lifetime.
int a, b, c; int d = 3, e, f = 5; byte z = 22; double pi = 3.14159; char x = 'x';

Dynamic Initialization

It refers to when variables are initialized using expressions (valid at the time of initialization) instead of constants.

Scope & Lifetime of Variables

Each time a new block is started, a new scope is created. It determines which objects are visible to the other parts of the program. Generally, a variable initialized inside a block is not visible/known outside the block - hence also enclosing its lifetime.


An array is a group of like-typed variables that are referred to by a common name (and accessed by index).
int oneDirection[] = new int[15]; // only my fav band as a teen int twoD[][] = new int[4][5];
Java strictly checks at runtime whether all values assigned/accessed are within the specified limits of the array. You can also manually allocate differing second dimensions to create a ragged array.
int twoD[][] = new int[4][]; twoD[0] = new int[1]; twoD[1] = new int[2]; twoD[2] = new int[3]; twoD[3] = new int[4];

Operator Precedence

notion image

Control Statements

Selection Statements

if-else-if ladder; switch-case; nested switch.
(Strings can be used to control switch-case statements since JDK 7.)

Iteration Statements

while loop; do-while loop; for loop.
for (initialization; condition; iteration) { // iteration can have multiple statements with commas. // init and iteration can be completely removed too. // if all three removed, it's an infinite loop. }
for (type itrVar: collection) { // usually used with arrays. }
for (int x[]: nums) { for (int y: x) { // ... } }
class Break { public static void main(String args[]) { boolean t = true; first: { second: { third: { System.out.println("Before the break."); if (t) break second; // break out of second. System.out.println("This won't execute."); } System.out.println("This won't execute."); } System.out.println("This is after the second block."); } } }