Java New Notes
Java New Notes
• Java is a programming language and a platform. Java is a high level, robust, object-
oriented and secure programming language.
• Java was developed by Sun Microsystems(which is now the subsidiary of Oracle) in the
year 1995. James Gosling is known as the father of Java. Before Java, its name was Oak. Since
Oak was already a registered company, so James Gosling and his team changed the Oak name
to Java.
JVM: Java Virtual Machine, or JVM, loads, verifies and executes Java bytecode. It is known as
the interpreter or the core of Java programming language because it executes Java
programming.
Application:
1. Desktop Applications such as acrobat reader, media player, antivirus, etc.
4. Mobile
5. Embedded System
6. Smart Card
7. Robotics
8. Games, etc.
Features of Java:
1. Simple
2. Object-Oriented
3. Portable
4. Platform independent
5. Secured
6. Robust
7. Architecture neutral
8. Interpreted
9. High Performance
10.Multithreaded
11.Distributed
12.Dynamic
Simple:
Java is designed to be easy to learn. If you understand the basic concept of OOP Java, it
would be easy to master.
Object Oriented:
In Java, everything is an Object. Java can be easily extended since it is based on the
Object model.
Portable:
Secure:
Robust:
Architecture- neutral:
Java compiler generates an architecture-neutral object file format, which makes the
compiled code executable on many processors, with the presence of Java runtime
system.
Interpreted:
Java byte code is translated on the fly to native machine instructions and is not stored
anywhere. The development process is more rapid and analytical since the linking is an
incremental and light-weight process.
High Performance:
With Java's multithreaded feature it is possible to write programs that can perform
many tasks simultaneously. This design feature allows the developers to construct
interactive applications that can run smoothly.
Distributed:
Java is designed for the distributed environment of the internet.
Dynamic:
Java is considered to be more dynamic than C or C++ since it is designed to adapt to an
evolving environment. Java programs can carry extensive amount of run-time
information that can be used to verify and resolve accesses to objects on run-time.
System.out.println("Hello World");
System.out.println(arg);
}
is visible to all.
static method. The core advantage of the static method is that there is no
need to create an object to invoke the static method. The main method is
executed by the JVM, so it doesn't require to create an object to invoke the
main method. So it saves memory.
o void is the return type of the method. It means it doesn't return any value.
o String[] args is used for command line argument. We will learn it later.
o System.out.println() Inside the main() method, we can use
the println() method to print a line of text to the screen:
Note: The curly braces {} marks the beginning and the end of a block of code. Note: Each code statement
must end with a semicolon.
Java Comments:
Comments can be used to explain Java code, and to make it more readable. It can also
be used to prevent execution when testing alternative code.
Single-line Comments:
Single-line comments start with two forward slashes ( //).
Any text between // and the end of the line is ignored by Java (will not be executed).
Example:
// This is a comment
System.out.println("Hello World");
Example:
System.out.println("Hello World"); // This is a comment
Example:
/* The code below will print the words Hello World
System.out.println("Hello World");
Java Variables:
Variables are containers for storing data values.
String - stores text, such as "Hello". String values are surrounded by double
quotes
int - stores integers (whole numbers), without decimals, such as 123 or -123
float - stores floating point numbers, with decimals, such as 19.99 or -19.99
char - stores single characters, such as 'a' or 'B'. Char values are surrounded by
single quotes
boolean - stores values with two states: true or false
Syntax:
type variableName = value;
Where type is one of Java's types (such as int or String), and variableName is the
name of the variable (such as x or name). The equal sign is used to assign values to
the variable.
To create a variable that should store text, look at the following example:
Example:
Create a variable called name of type String and assign it the value "John":
System.out.println(name);
To create a variable that should store a number, look at the following example:
Example:
Create a variable called myNum of type int and assign it the value 15:
System.out.println(myNum);
You can also declare a variable without assigning the value, and assign the value later:
Example:
int myNum;
myNum = 15;
System.out.println(myNum);
Note that if you assign a new value to an existing variable, it will overwrite the previous
value:
Example:
Change the value of myNum from 15 to 20:
System.out.println(myNum);
Final Variables:
However, you can add the final keyword if you don't want others (or yourself) to
overwrite existing values (this will declare the variable as "final" or "constant", which
means unchangeable and read-only):
Example:
final int myNum = 15;
Other Types:
A demonstration of how to declare variables of other types:
Example:
int myNum = 5;
Display Variables:
The println() method is often used to disp lay variables.
To combine both text and a variable, use the + character:
Example:
String name = "John";
You can also use the + character to add a variable to another variable:
Example:
String firstName = "John ";
System.out.println(fullName);
For numeric values, the + character works as a mathematical operator (notice that we
use int (integer) variables here):
Example:
int x = 5;
int y = 6;
Example:
int x = 5, y = 6, z = 50;
System.out.println(x + y + z);//(61)
Java Identifiers
All Java variables must be identified with unique names.
Identifiers can be short names (like x and y) or more descriptive names (age, sum,
totalVolume).
Example:
// Good
int m = 60;
Data types:
Data types specify the different sizes and values that can be stored in the
variable. There are two types of data types in Java: Example
int myNum = 5; // Integer (whole number)
1. Primitive data types: The primitive data types include boolean, char, byte,
short, int, long, float and double.
Widening Casting:
Widening casting is done automatically when passing a smaller size type to a larger size
type:
Example:
public class Main {
int myInt = 9;
System.out.println(myInt); // Outputs 9
Narrowing Casting:
Narrowing casting must be done manually by placing the type in parentheses in front of
the value:
Example:
public class Main {
System.out.println(myInt); // Outputs 9
Another example:
Narrowing (Typecasting):
1. class Simple{
3. float f=10.5f;
5. int a=(int)f;
6. System.out.println(f);
7. System.out.println(a);
8. }}
Operators in java
Operator in java is a symbol that is used to perform operations. For
example: +, -, *, / etc.
There are many types of operators in java which are given below:
Arithmetic operators
Unary operator
Assignment operators
Relational operator
Ternary operator
Shift operator
Logical operators
= x=5 x=5
+= x += 3 x=x+3
-= x -= 3 x=x-3
*= x *= 3 x=x*3
/= x /= 3 x=x/3
%= x %= 3 x=x%3
|= x |= 3 x=x|3
^= x ^= 3 x=x^3
3. int a=10;
4. int b=5;
5. System.out.println(a+b);//15
6. System.out.println(a-b);//5
7. System.out.println(a*b);//50
8. System.out.println(a/b);//2
9. System.out.println(a%b);//0
10. }}
Example:
class OperatorExample{
int x=10;
System.out.println(x++);//10 (11)
System.out.println(++x);//12
System.out.println(x--);//12 (11)
System.out.println(--x);//10
}}
Byte b=10;
Byte c=b;
Int a=23;
Short s=45;
Int x=b;
Int y=s;
}}
== perfectly equal to
!= not equal to
EXAMPLE PROGRAM:
Class RelationalOperator
{
Int a=10;
Int b=20;
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a>=b);
System.out.println(a<=b);
}}
String str=null;
System.out.println(str1);
System.out.println(str2);
Boolean x=(2>3)? True : false;
System.out.println(x);
}}
Example:
1. class OperatorExample{
3. System.out.println(10<<2);//10*2^2=10*4=40
4. System.out.println(10<<3);//10*2^3=10*8=80
5. System.out.println(20<<2);//20*2^2=20*4=80
6. System.out.println(15<<4);//15*2^4=15*16=240
7. }}
Example:
1. class OperatorExample{
3. System.out.println(10>>2);//10/2^2=10/4=2
4. System.out.println(20>>2);//20/2^2=20/4=5
5. System.out.println(20>>3);//20/2^3=20/8=2
6. }}
|| logical or
! logical not
Java Strings
Strings are used for storing text.
A String variable contains a collection of characters surrounded by
double quotes:
Example:
Create a variable of type String and assign it a value:
String Length
A String in Java is actually an object, which contain methods that can perform certain
operations on strings. For example, the length of a string can be found with
the length() method:
Example:
String txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Example:
String txt = "Hello World";
Example:
String txt = "Please locate where 'locate' occurs!";
System.out.println(txt.indexOf("locate")); // Outputs 7
String Concatenation
The + operator can be used between strings to combine them. This is
called concatenation:
Example:
String firstName = "John";
String lastName = "Doe";
Note that we have added an empty text (" ") to create a space between firstName and
lastName on print.
You can also use the concat() method to concatenate two strings:
Another Example:
String firstName = "John ";
System.out.println(firstName.concat(lastName));
Special Characters
Because strings must be written within quotes, Java will misunderstand this
string, and generate an error:
String txt = "We are the so-called "Vikings" from the north.";
The solution to avoid this problem, is to use the backslash escape character.
The backslash (\) escape character turns special characters into string
characters:
\\ \ Backslash
Example:
String txt = "It\'s alright.";
Example:
String txt = "The character \\ is called backslash.";
Code Result
\n New Line
\r Carriage Return
\t Tab
\b Backspace
\f Form Feed
Adding Numbers and Strings
WARNING!
Example:
int x = 10;
int y = 20;
Example:
String x = "10";
String y = "20";
If you add a number and a string, the result will be a string concatenation:
Example:
String x = "10";
int y = 20;
Java Booleans
Very often, in programming, you will need a data type that can only have one of two
values, like:
YES / NO
ON / OFF
TRUE / FALSE
For this, Java has a boolean data type, which can take the values true or false.
Boolean Values:
A boolean type is declared with the boolean keyword and can only take the
values true or false:
Example:
boolean isJavaFun = true;
However, it is more common to return boolean values from boolean expressions, for
conditional testing (see below).
Boolean Expression:
A Boolean expression is a Java expression that returns a Boolean
value: true or false.
You can use a comparison operator, such as the greater than (>) operator to find out if
an expression (or a variable) is true:
Example:
int x = 10;
int y = 9;
Example:
System.out.println(10 > 9); // returns true, because 10 is higher than 9
In the examples below, we use the equal to (==) operator to evaluate an expression:
Example:
int x = 10;
Example:
System.out.println(10 == 15); // returns false, because 10 is not equal
to 15
Java Keywords
Java keywords are also known as reserved words. Keywords are
particular words which acts as a key to a code. These are predefined
words by Java so it cannot be used as a variable or object name.
The if Statement:
Use the if statement to specify a block of Java code to be executed if a condition
is true.
Syntax:
if (condition) {
Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.
In the example below, we test two values to find out if 20 is greater than 18. If the
condition is true, print some text:
Example:
if (20 > 18) {
Example:
int x = 20;
int y = 18;
if (x > y) {
Syntax:
if (condition) {
} else {
Example:
int time = 20;
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
Use the else if statement to specify a new condition if the first condition is false.
Syntax:
if (condition1) {
} else if (condition2) {
} else {
// block of code to be executed if the condition1 is false and
condition2 is false
Example:
int time = 22;
System.out.println("Good morning.");
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
Syntax:
1. if(condition){
2. //code to be executed
3. if(condition){
4. //code to be executed
5. }
6. }
Example:
5. int age=20;
6. int weight=80;
8. if(age>=18){
9. if(weight>50){
11. }
12. }
13. }}
Syntax:
variable = (condition) ? expressionTrue : expressionFalse;
Example:
int time = 20;
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
}
Example:
int time = 20;
System.out.println(result);
Syntax:
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
The example below uses the weekday number to calculate the weekday name:
Example:
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
Example:
int day = 4;
switch (day) {
case 6:
System.out.println("Today is Saturday");
break;
case 7:
System.out.println("Today is Sunday");
break;
default:
Syntax:
while (condition) {
In the example below, the code in the loop will run, over and over again, as long as a
variable (i) is less than 5:
Example:
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
Note: Do not forget to increase the variable used in the condition, otherwise the loop
will never end!
The Do/While Loop:
The do/while loop is a variant of the while loop. This loop will execute the code block
once, before checking if the condition is true, then it will repeat the loop as long as the
condition is true.
Syntax:
do {
while (condition);
The example below uses a do/while loop. The loop will always be executed at least
once, even if the condition is false, because the code block is executed before the
condition is tested:
Example:
int i = 0;
do {
System.out.println(i);
i++;
Syntax:
for (statement 1; statement 2; statement 3) {
}
Statement 1 is executed (one time) before the execution of the code block.
Statement 3 is executed (every time) after the code block has been executed.
Example:
for (int i = 0; i < 5; i++) {
System.out.println(i);
Another Example:
This example will only print even values between 0 and 10:
System.out.println(i);
Java break:
You have already seen the break statement used in an earlier
chapter of this tutorial. It was used to "jump out" of
a switch statement.
The break statement can also be used to jump out of a loop.
This example stops the loop when i is equal to 4:
Example:
for (int i = 0; i < 10; i++) {
if (i == 4) {
break;
System.out.println(i);
Java Continue:
The continue statement breaks one iteration (in the loop), if a specified
condition occurs, and continues with the next iteration in the loop.
Example:
for (int i = 0; i < 10; i++) {
if (i == 4) {
continue;
System.out.println(i);
}
Break in While Loop:
You can also use break and continue in while loops:
Example:
int i = 0;
System.out.println(i);
i++;
if (i == 4) {
break;
if (i == 4) {
i++;
continue;
System.out.println(i);
i++;
}
Java Arrays
Arrays are used to store multiple values in a single variable, instead of declaring
separate variables for each value.
String[] cars;
We have now declared a variable that holds an array of strings. To insert values
to it, we can use an array literal - place the values in a comma-separated list,
inside curly braces:
Example:
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
System.out.println(cars[0]);
// Outputs Volvo
Note: Array indexes start with 0: [0] is the first element. [1] is the second element, etc.
Change an Array Element:
To change the value of a specific element, refer to the index number:
Example:
cars[0] = "Opel";
Example:
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars[0] = "Opel";
System.out.println(cars[0]);
Array Length:
To find out how many elements an array has, use the length property:
Example:
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
System.out.println(cars.length);
// Outputs 4
Example:
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
System.out.println(cars[i]);
Multidimensional Arrays:
A multidimensional array is an array of arrays.
To create a two-dimensional array, add each array within its own set of curly braces:
Example:
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
To access the elements of the myNumbers array, specify two indexes: one for the
array, and one for the element inside that array. This example accesses the third
element (2) in the second array (1) of myNumbers:
Example:
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
int x = myNumbers[1][2];
System.out.println(x); // Outputs 7
We can also use a for loop inside another for loop to get the elements of a two-
dimensional array (we still have to point to the two indexes):
Example:
public class Main {
System.out.println(myNumbers[i][j]);
Java Methods
Why use methods? To reuse code: define the code once, and use it many times.
Create a Method
A method must be declared within a class. It is defined with the name of the method,
followed by parentheses (). Java provides some pre-defined methods, such
as System.out.println(), but you can also create your own methods to perform
certain actions:
Example:
Create a method inside Main:
// code to be executed
}
Call a Method:
To call a method in Java, write the method's name followed by two parentheses () and a
semicolon;
In the following example, myMethod() is used to print a text (the action), when it is
called:
Example:
Inside main, call the myMethod() method:
myMethod();
Example:
public class Main {
myMethod();
myMethod();
myMethod();
The following example has a method that takes a String called fname
as parameter. When the method is called, we pass along a first name,
which is used inside the method to print the full name:
Example:
public class Main {
static void myMethod(String fname) {
myMethod("Liam");
myMethod("Jenny");
myMethod("Anja");
// Liam Refsnes
// Jenny Refsnes
// Anja Refsnes
Multiple Parameters
You can have as many parameters as you like:
Example:
public class Main {
myMethod("Liam", 5);
myMethod("Jenny", 8);
myMethod("Anja", 31);
// Liam is 5
// Jenny is 8
// Anja is 31
Return Values
The void keyword, used in the examples above, indicates that the
method should not return a value.
If you want the method to return a value, you can use a primitive
data type (such as int, char, etc.) instead of void, and use the
return keyword inside the method:
Example:
public class Main {
return 5 + x;
System.out.println(myMethod(3));
// Outputs 8 (5 + 3)
Example:
public class Main {
return x + y;
System.out.println(myMethod(5, 3));
// Outputs 8 (5 + 3)
Example:
public class Main {
return x + y;
System.out.println(z);
// Outputs 8 (5 + 3)
A Method with If...Else
It is common to use if...else statements inside methods:
Example:
public class Main {
} else {
Example:
int myMethod(int x)
float myMethod(float x)
Consider the following example, which has two methods that add numbers of
different type:
Example:
static int plusMethodInt(int x, int y) {
return x + y;
return x + y;
Example:
static int plusMethod(int x, int y) {
return x + y;
return x + y;
Java Scope
In Java, variables are only accessible inside the region they are
created. This is called scope.
Method Scope
Variables declared directly inside a method are available anywhere
in the method following the line of code in which they were
declared:
Example:
public class Main {
int x = 100;
System.out.println(x);
Block Scope
A block of code refers to all of the code between curly braces {}.
Variables declared inside blocks of code are only accessible by the
code between the curly braces, which follows the line in which the
variable was declared:
Example:
public class Main {
{ // This is a block
int x = 100;
System.out.println(x);
Java Recursion
Recursion is the technique of making a function call itself. This
technique provides a way to break complicated problems down into
simple problems which are easier to solve.
Recursion Example
Adding two numbers together is easy to do, but adding a range of numbers
is more complicated. In the following example, recursion is used to add a
range of numbers together by breaking it down into the simple task of
adding two numbers:
Example
Use recursion to add all of the numbers up to 10.
System.out.println(result);
if (k > 0) {
} else {
return 0;
10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
Since the function does not call itself when k is 0, the program stops
there and returns the result.
Halting Condition:
Just as loops can run into the problem of infinite looping,
recursive functions can run into the problem of infinite recursion.
Infinite recursion is when the function never stops calling itself.
Every recursive function should have a halting condition, which is
the condition where the function stops calling itself.
In the previous example, the halting condition is when the parameter
k becomes 0.
It is helpful to see a variety of different examples to better
understand the concept.
In this example, the function adds a range of numbers between a
start and an end. The halting condition for this recursive function
is when end is not greater than start:
Example:
Use recursion to add all of the numbers between 5 to 10.
System.out.println(result);
} else {
return end;
}
}
Another example:
Class object
s
Apple
Banana
Class objects
Volvo
car Audi
fruite Mango
Toyota
When the individual objects are created, they inherit all the
variables and methods from the class.
Java Classes/Objects
Java is an object-oriented programming language.
Everything in Java is associated with classes and objects, along
with its attributes and methods. For example: in real life, a car is
an object. The car has attributes, such as weight and color, and
methods, such as drive and brake.
A Class is like an object constructor, or a "blueprint" for creating
objects.
Create a Class
To create a class, use the keyword class:
Main.java
Create a class named "Main" with a variable x:
int x = 5;
Remember from the Java Syntax chapter that a class should always start
with an uppercase first letter, and that the name of the java file should
match the class name.
Create an Object
In Java, an object is created from a class. We have already created
the class named Main, so now we can use this to create objects.
To create an object of Main, specify the class name, followed by the
object name, and use the keyword new:
Example
Create an object called "myObj" and print the value of x:
int x = 5;
System.out.println(myObj.x);
Multiple Objects
You can create multiple objects of one class:
Example
Create two objects of Main:
System.out.println(myObj1.x);
System.out.println(myObj2.x);
Main.java
public class Main {
int x = 5;
Second.java
class Second {
System.out.println(myObj.x);
Example
Create a class called "Main" with two attributes: x and y:
int x = 5;
int y = 3;
}
Another term for class attributes is fields.
Accessing Attributes
You can access attributes by creating an object of the class, and by
using the dot syntax (.):
The following example will create an object of the Main class, with the
name myObj. We use the x attribute on the object to print its value:
Example
Create an object called "myObj" and print the value of x:
int x = 5;
System.out.println(myObj.x);
Modify Attributes
You can also modify attribute values:
Example
Set the value of x to 40:
int x;
myObj.x = 40;
System.out.println(myObj.x);
Example
Change the value of x to 25:
int x = 10;
System.out.println(myObj.x);
}
If you don't want the ability to override existing values, declare the
attribute as final:
Example
public class Main {
System.out.println(myObj.x);
The final keyword is useful when you want a variable to always store
the same value, like PI (3.14159...).
The final keyword is called a "modifier". You will learn more about
these in the Java Modifiers Chapter.
Multiple Objects
If you create multiple objects of one class, you can change the
attribute values in one object, without affecting the attribute values in
the other:
Example
Change the value of x to 25 in myObj2, and leave x in myObj1 unchanged:
int x = 5;
myObj2.x = 25;
System.out.println(myObj1.x); // Outputs 5
System.out.println(myObj2.x); // Outputs 25
Multiple Attributes
You can specify as many attributes as you want:
Example
public class Main {
Example
Create a method named myMethod() in Main:
System.out.println("Hello World!");
}
myMethod() prints a text (the action), when it is called. To call a
method, write the method's name followed by two parentheses () and a
semicolon;
Example
Inside main, call myMethod():
System.out.println("Hello World!");
myMethod();
// Static method
// Public method
// Main method
}
Access Methods With an Object
Example
Create a Car object named myCar. Call the fullThrottle() and speed()
methods on the myCar object, and run the program:
}
// The car is going as fast as it can!
Remember that the name of the java file should match the class name. In
this example, we have created two files in the same directory:
Main.java
Second.java
Main.java
public class Main {
Second.java
class Second {
Java Constructors
A constructor in Java is a special method that is used to initialize
objects. The constructor is called when an object of a class is created.
It can be used to set initial values for object attributes:
Example
Create a constructor:
public Main() {
Main myObj = new Main(); // Create an object of class Main (This will
call the constructor)
// Outputs 5
Constructor Parameters
Constructors can also take parameters, which is used to initialize
attributes.
Example
public class Main {
int x;
public Main(int y) {
x = y;
System.out.println(myObj.x);
// Outputs 5
Example
public class Main {
int modelYear;
String modelName;
modelYear = year;
modelName = name;
Java Modifiers
Modifiers:
By now, you are quite familiar with the public keyword that appears
in almost all of our examples:
Access Modifiers
For classes, you can use either public or default:
Modifier Description
public The class is accessible by any other class.
For attributes, methods and constructors, you can use the one of the
following:
Modifier Description
default The code is only accessible in the same package. This is used
when
you don't specify a modifier.
protecte
The code is accessible in the same package and subclasses.
Non-Access Modifiers
For classes, you can use either final or abstract:
Modifier Description
For attributes and methods, you can use the one of the following:
Modifier Description
final Attributes and methods cannot be overridden/modified
Final
If you don't want the ability to override existing attribute values,
declare attributes as final:
Example
public class Main {
System.out.println(myObj.x);
}
Static
A static method means that it can be accessed without creating an object
of the class, unlike public:
Example
An example to demonstrate the differences between static and public
methods:
// Static method
// Public method
// Main method
Abstract
An abstract method belongs to an abstract class, and it does not have a
body. The body is provided by the subclass:
Example
// Code from filename: Main.java
// abstract class
}
}
class Second {
Java Encapsulation:
Syntax for both is that they start with either get or set, followed
by the name of the variable, with the first letter in upper case:
Example
public class Person {
// Getter
return name;
// Setter
this.name = newName;
Example
public class Main {
System.out.println(myObj.name); // error
}
O/P:John
myObj.name = "John";
System.out.println(myObj.name);
2 errors
Instead, we use the getName() and setName() methods to access and update
the variable:
Example
public class Main {
System.out.println(myObj.getName());
// Outputs "John"
Java Package
A java package is a group of similar types of classes, interfaces
and sub-packages.
Package in java can be categorized in two form, built-in package and
user-defined package.
There are many built-in packages such as java, lang, awt, javax,
swing, net, io, util, sql etc.
Here, we will have the detailed learning of creating and using user-
defined packages.
Syntax:
import package.name.Class; // Import a single class
Import a Class
If you find a class you want to use, for example, the Scanner class,
which is used to get user input, write the following code:
Example
import java.util.Scanner;
To use the Scanner class, create an object of the class and use any of
the available methods found in the Scanner class documentation. In our
example, we will use the nextLine() method, which is used to read a
complete line:
Example
Using the Scanner class to get user input:
import java.util.Scanner;
class MyClass {
System.out.println("Enter username");
User-defined Packages
To create your own package, you need to understand that Java uses a
file system directory to store them. Just like folders on your
computer:
Example
└── root
└── mypack
└── MyPackageClass.java
class MyPackageClass {
System.out.println("This is my package!");
This is my package!
Java Inheritance
Java Inheritance (Subclass and Superclass)
In Java, it is possible to inherit attributes and methods from one
class to another. We group the "inheritance concept" into two
categories:
subclass (child) - the class that inherits from another class
superclass (parent) - the class being inherited from To inherit from
a class, use the extends keyword.
In the example below, the Car class (subclass) inherits the attributes
and methods from the Vehicle class (superclass):
Example
class Vehicle {
System.out.println("Tuut, tuut!");
// Call the honk() method (from the Vehicle class) on the myCar
object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class)
and the value of the modelName from the Car class
}
Did you notice the protected modifier in Vehicle?
Tip: Also take a look at the next chapter, Polymorphism, which uses
inherited methods to perform different tasks.
...
...
1 error)
Java Polymorphism
Polymorphism means "many forms", and it occurs when we have many
classes that are related to each other by inheritance.
Like we specified in the previous chapter; Inheritance lets us
inherit attributes and methods from another class. Polymorphism uses
those methods to perform different tasks. This allows us to perform
a single action in different ways. Example
class Animal {
}
Now we can create Pig and Dog objects and call the animalSound() method
on both of them:
Example
class Animal {
class Main {
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
To access the inner class, create an object of the outer class, and then
create an object of the inner class:
Example
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
System.out.println(myInner.y + myOuter.x);
// Outputs 15 (5 + 10)
Example
class OuterClass {
int x = 10;
int y = 5;
Example
class OuterClass {
int x = 10;
int y = 5;
System.out.println(myInner.y);
// Outputs 5
Note: just like static attributes and methods, a static inner class does
not have access to members of the outer class.
One advantage of inner classes, is that they can access attributes and
methods of the outer class:
Example
class OuterClass {
int x = 10;
class InnerClass {
return x;
System.out.println(myInner.myInnerMethod());
// Outputs 10
Java Abstraction
Abstract Classes and Methods
Data abstraction is the process of hiding certain details and
showing only essential information to the user.
System.out.println("Zzz");
Example
// Abstract class
// Regular method
System.out.println("Zzz");
class Main {
myPig.animalSound();
myPig.sleep();
Interfaces
Another way to achieve abstraction in Java, is with interfaces.
Example
// interface
interface Animal {
Example
// Interface
interface Animal {
System.out.println("Zzz");
class Main {
myPig.animalSound();
myPig.sleep();
}
Notes on Interfaces:
Multiple Interfaces
To implement multiple interfaces, separate them with a comma:
Example
interface FirstInterface {
interface SecondInterface {
}
class DemoClass implements FirstInterface, SecondInterface {
System.out.println("Some text..");
class Main {
myObj.myMethod();
myObj.myOtherMethod();
To use the Scanner class, create an object of the class and use any
of the available methods found in the Scanner class documentation.
In our example, we will use the nextLine() method, which is used to
read Strings:
Example
import java.util.Scanner; // Import the Scanner class
class Main {
System.out.println("Enter username");
Input Types:
In the example above, we used the nextLine() method, which is used to
read Strings. To read other types, look at the table below:
MethodDescription:
Example
import java.util.Scanner;
class Main {
// String input
// Numerical input
1. Checked Exception
2. Unchecked Exception
3. Error
2) Unchecked Exception
The classes which inherit RuntimeException are known as unchecked
exceptions e.g. ArithmeticException, NullPointerException,
ArrayIndexOutOfBoundsException etc. Unchecked exceptions are not
checked at compile-time, but they are checked at runtime.
3) Error
Error is irrecoverable e.g. OutOfMemoryError, VirtualMachineError,
AssertionError etc.
Java Exception Keywords
There are 5 keywords which are used in handling exceptions in Java.
Keyword Description
Syntax:
try {
catch(Exception e) {
System.out.println(myNumbers[10]); // error!
at Main.main(Main.java:4)
If an error occurs, we can use try...catch to catch the error and execute
some code to handle it:
Example
public class Main {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
3. try{
4. int data=25/5;
5. System.out.println(data);
6. }
7. catch(NullPointerException e){System.out.println(e);}
10. }
11. }
Example
public class Main {
try {
System.out.println(myNumbers[10]);
} catch (Exception e) {
} finally {
3. try{
5. int data=100/0;
6. }catch(ArithmeticException e){System.out.println(e);}
7. //rest code of the program
9. }
10. }
The throw statement is used together with an exception type. There are
many exception types available in Java:
ArithmeticException,
FileNotFoundException,
ArrayIndexOutOfBoundsException,
SecurityException,
etc:
Example
Throw an exception if age is below 18 (print "Access denied"). If
age is 18 or older, print "Access granted":
else {
System.out.println("Access granted - You are old enough!");
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Example:
checkAge(20);
Example:
1. public class TestThrow1{
3. if(age<18)
5. else
6. System.out.println("welcome to vote");
7. }
9. validate(13);
11. }
12. }
2. //method code
3. }
Example:
4. import java.io.*;
5. class M{
8. }
9. }
12. try{
14. m.method();
16.
19. }
2. //method code
3. }
Example:
4. import java.io.*;
5. class M{
8. }
9. }
12. try{
14. m.method();
16.
18. }
19. }
Java Threads
Threads allows a program to operate more efficiently by doing
multiple things at the same time.
Creating a Thread:
There are two ways to create a thread.
Extend Syntax:
public class Main extends Thread {
Implement Syntax:
public class Main implements Runnable {
Running Threads
If the class extends the Thread class, the thread can be run by creating
an instance of the class and call its start() method:
Extend Example
public class Main extends Thread {
thread.start();
If the class implements the Runnable interface, the thread can be run by
passing an instance of the class to a Thread object's constructor and
then calling the thread's start() method:
Implement Example
public class Main implements Runnable {
thread.start();
}
public void run() {
Concurrency Problems
Because threads run at the same time as other parts of the program, there
is no way to know in which order the code will run. When the threads and
main program are reading and writing the same variables, the values are
unpredictable. The problems that result from this are called concurrency
problems.
Example
A code example where the value of the variable amount is
unpredictable:
thread.start();
System.out.println(amount);
amount++;
System.out.println(amount);
Example
Use isAlive() to prevent concurrency problems:
thread.start();
while(thread.isAlive()) {
System.out.println("Waiting...");
amount++;
}
public void run() {
amount++;