Unit 1&2 Notes
Unit 1&2 Notes
Java is a high-level programming language originally developed by Sun Microsystems under the
guidance of James Gosling and there team, and released in 1995.
1) Object: Any entity that has state and behavior is known as an object. For example: chair, pen,
table, keyboard, bike etc. It can be physical and logical.
3) Encapsulation: Binding (or wrapping) code and data together into a single unit is known as
encapsulation. A java class is the example of encapsulation.
5) Inheritance: The process by which one class acquires the properties and functionalities of
another class is called inheritance. It provides code reusability.
6) Polymorphism: When one task is performed by different ways i.e. known as polymorphism.
In java, we use method overloading and method overriding to achieve polymorphism.
Features of Java
1) Simple: The Java language is easy to learn and its coding style is easy to read and write.
2) Object Oriented: It has all OOP features such as abstraction, encapsulation, inheritance and
polymorphism.
3) Portable: Java programs can execute in any environment (Linux, Window, Mac etc.)
5) Secure: With Java's secure feature it enables to develop virus-free, tamper-free systems.
6) Robust: Its capability to handle Run-time Error, automatic garbage collection, the lack of
pointer concept, Exception Handling etc. makes java robust.
7) Architectural Neutral: To enable a Java application to execute anywhere on the network, the
compiler generates an architecture-neutral object file format.
8) Dynamic: It supports Dynamic memory allocation due to this memory wastage is reduce and
improve performance of the application.
9) Interpreted: The Java compiler generates byte-codes, rather than native machine code.
10) High Performance: Java enables high performance with the use of just-in-time compiler.
11) Multithreaded: It utilizes same memory and other resources to execute multiple threads at
the same time.
12) Distributed: It has networking facilities, so it can be transmit, run over internet.
JDK (Java Development Kit): JDK is a container of tools which are needed to develop java
programs.
JRE (Java Runtime Environment): JRE is an implementation of the JVM which actually executes
Java programs.
JVM (Java Virtual Machine): JVM is an abstract machine that enables your computer to run a
Java program
Selection statements allow you to control the flow of program execution on the basis of the
outcome of an expression or state of a variable known during runtime.
Iteration statements execute the same set of instructions until a termination condition is met.
Additive +-
Equality == !=
bitwise inclusive OR |
logical OR ||
Ternary Ternary ?:
1. Unary Operators: Unary operators need only one operand. They are used to increment,
decrement or negate a value.
2. Arithmetic Operators: They are used to perform simple arithmetic operations on primitive
data types.
3. Shift Operators: These operators are used to shift the bits of a number left or right thereby
multiplying or dividing the number by two respectively.
4. Relational Operators: Relational Operators are used to determine the comparison between
two or more objects.
5. Bitwise Operators: These operators are used to perform manipulation of individual bits of a
number.
6. Logical Operators: These operators are used to perform “logical AND” and “logical OR”
operation
• Logical AND (&&): returns true when both conditions are true.
• Logical OR (||): returns true if at least one condition is true.
7. Ternary Operator: Ternary operator is a shorthand version of if-else statement. It has three
operands and hence the name ternary.
General format is-
condition ? if true : if false
8. Assignment Operator: Assignment operator is used to assign value to the variables, assign
memory to object.
General format is-
variable = value;
Array
An array is a collection of similar data types that have contiguous memory location.
Advantage of Java Array
• Code Optimization: It makes the code optimized, we can retrieve or sort the data easily.
• Random access: We can get any data located at any index position.
Disadvantage of Java Array
• Size Limit: We can store only fixed size of elements in the array.
Types of Array in java
There are two types of array:
Single Dimensional Array: A one-dimensional array is a linear list of elements of the same type.
Syntax :
datatype[ ] identifier;
or
datatype identifier[ ];
Example of single dimensional java array
class Testarray{
public static void main(String args[]){
int a[]=new int[5];//declaration and instantiation
a[0]=10;//initialization
a[1]=20;
a[2]=70;
a[3]=40;
a[4]=50;
//printing array
for(int i=0;i<a.length;i++)//length is the property of array
System.out.println(a[i]);
}}
Output: 10
20
70
40
50
Multidimensional Array: MultiDimensional Array is used to store the values in the rows as well
as in columns.
Syntax:
datatype[ ][ ] identifier;
or
datatype identifier[ ][ ];
Example of Multidimensional java array
class Testarray3{
public static void main(String args[]){
//declaring and initializing 2D array
int arr[][]={{1,2,3},{2,4,5},{4,4,5}};
//printing 2D array
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}}
Output: 1 2 3
245
445
Inheritance in Java
Inheritance in java is a mechanism in which one class acquires the properties(data members)
and functionalities(methods) of another class.
Syntax :
1) Single Inheritance: In single inheritance, subclasses inherit the features of one superclass.
2) Multilevel Inheritance: In Multilevel Inheritance, a derived class will be inheriting a base
class and as well as the derived class also act as the base class to other class.
3) Hierarchical Inheritance: In Hierarchical Inheritance, one class serves as a superclass (base
class) for more than one sub class.
In java programming, multiple and hybrid inheritance is supported through interface only.
4) Multiple Inheritance (Through Interfaces): In Multiple inheritance, one class can have more
than one superclass and inherit features from all parent classes. Please note that Java does
not support multiple inheritance with classes. In java, we can achieve multiple inheritance
only through Interfaces.
5) Hybrid Inheritance (Through Interfaces): It is a mix of two or more of the above types of
inheritance. Since java doesn’t support multiple inheritance with classes, the hybrid
inheritance is also not possible with classes. In java, we can achieve hybrid inheritance only
through Interfaces.
Access Modifiers
Access modifiers (or access specifiers) are keywords in object-oriented languages that set the
accessibility of classes, methods, and other members.
Default (No keyword required): When we do not mention any access modifier, it is called
default access modifier. The default modifier is accessible only within package.
Private: Private Data members and methods are only accessible within the class. Class and
Interface cannot be declared as private. If a class has private constructor then you cannot
create the object of that class from outside of the class.
Protected: Protected data member and method are only accessible by the classes of the same
package and the subclasses present in any package.
Public: The members, methods and classes that are declared public can be accessed from
anywhere. Public are also called universal access modifiers.
Packages in Java
Packages in Java are groups of similar types of classes, interface and sub packages.
Syntax:-
package;
Reusability: The classes contained in the packages of another program can be easily reused.
Better Organization: Java package is used to categorize the classes and interfaces so that
they can be easily maintained.
Protection: Java package provides access protection.
Name Conflicts: Java package removes naming collision.
Types of Packages
Built-in Package: Existing Java package for example java.lang, java.util etc.
User-defined-package: Java package created by user to categorize their project's classes and
interface.
//save as FirstProgram.java
package learnjava;
System.out.println("Welcome to package");
import keyword is used to import built-in and user-defined packages into your java source file
so that your class can refer to a class that is in another package by directly using its name.
There are 3 different ways to refer to any class that is present in a different package:
If you use fully qualified name to import any class into your program, then only that
particular class of the package will be accessible in your program, there is no need to use
the import statement.
Example :
//save by A.java
package pack;
public class A {
System.out.println("Hello");
//save by B.java
package mypack;
class B {
obj.msg();
Output: Hello
2. Using packagename.classname
Example :
//save by A.java
package pack;
public class A {
System.out.println("Hello");
}
}
//save by B.java
package mypack;
import pack.A;
class B {
obj.msg();
Output: Hello
3. Using packagename.*
To import all the classes from a particular package but the classes and interface inside the
subpackages will not be available for use.
Example :
//save by First.java
package learnjava;
System.out.println("Hello");
//save by Second.java
package Java;
import learnjava.*;
class Second {
obj.msg();
Output: Hello
Subpackage
A package created inside another package is known as a subpackage. When we import a
package, subpackages are not imported by default. They have to be imported explicitly. In the
following statement :
import java.util.*;
Example of Subpackage
package com.javatpoint.core;
class Simple{
System.out.println("Hello subpackage");
A class that is declared with abstract keyword, is known as abstract class in java.
It can have abstract and non-abstract methods.
It cannot be instantiated. Abstract classes can have Constructors, Member variables and
Normal methods.
When you extend Abstract class with abstract method, you must define the abstract
method in the child class, or make the child class abstract.
Syntax :
abstract method
A method that is declared as abstract and does not have implementation is known as abstract
method.
Syntax :
abstract class A
class B extends A
void callme()
System.out.println("this is callme.");
B b = new B();
b.callme();
Interface in Java
Syntax :
interface interface_name { }
Declaring Interfaces
Example of Interface
interface Person
datatype variablename=value;
Implementing Interfaces
A class uses the implements keyword to implement an interface. The implements keyword
appears in the class declaration following the extends portion of the declaration.
Example:
interface Person
System.out.println("Run fast");
obj.run();
Example
interface NewsPaper
news();
colorful();
If a class implements multiple interfaces, or an interface extends multiple interfaces i.e. known
as multiple inheritance.
Example:
interface Developer
void disp();
interface Manager
void show();
{
public void disp()
obj.disp();
obj.show();
Final is a keyword in Java that is used to restrict the user and can be used in many respects. It is
a non-access modifier. The final keyword can be used in following way:
1.) Final at variable level: When a variable is declared with final keyword, it’s value can’t be
modified, essentially, a constant.
Example:
class FinalVariable
{
public static void main(String[] args)
{
final int hours=24;
System.out.println("Hours in 6 days = " + hours * 6);
}
}
Output: Hours in 6 days = 144
2.) Final at method level: When a method is declared with final keyword, method cannot be
overridden.
Example:
class X
{
final void getMethod()
{
System.out.println(“X method has been called”);
}
}
class Y extends X
{
void getMethod() //cannot override
{
System.out.println(“Y method has been called”);
}
}
class FinalMethod
{
public static void main(String[] args)
{
Y obj = new Y();
obj.getMethod();
}
}
3.) Final at class level: When a class is declared with final keyword, class cannot be extended
(inherited).
Example:
final class X
{
class Y extends X
class FinalClass
Super keyword in java is a reference variable that is used to refer parent class object.
1) To access the data members of parent class when both parent and child class have member
with same name
3) To access the method of parent class when child class has overridden that method.
1. Use of super with variables: When you have a variable in child class which is already present
in the parent class then in order to access the variable of parent class, you need to use the
super keyword.
Example:
class Employee
{
float salary=10000;
float salary=20000;
void display()
class Supervarible
HR obj=new HR();
obj.display();
2. Use of super with methods: The super keyword can also be used to invoke parent class
method. It should be used if subclass contains the same method as parent class. In other words,
it is used if method is overridden.
Example:
class Student
{
void message()
void message()
void display()
s.display();
Example:
class Employee
Employee()
HR()
class Supercons
HR obj=new HR();
}
}
HR class Constructor
import java.io.Serializable;
int id;
String name;
this.id = id;
this.name = name;
this.age=age;
The static keyword is used in java mainly for memory management. static is a non-access
modifier in Java which is applicable for the blocks, variables, methods, nested classes.
1) static variables: When a variable is declared as static, then a single copy of variable is
created and shared among all objects at class level. Static variables are, essentially,
global variables. All instances of the class share the same static variable.
2) static method: When a method is declared with static keyword, it is known as static
method. The most common example of a static method is main( ) method. Any static
member can be accessed before any objects of its class are created, and without
reference to any object. Methods declared as static have several restrictions:
They can only directly call other static methods.
They can only directly access static data.
They cannot refer to this or super in any way.
.......
.......
3) static block: static block is used for initializing the static variables. This block gets
executed when the class is loaded in the memory. A class can have multiple Static
blocks, which will execute in the same sequence in which they have been written into
the program.
class A{
System.out.println("Hello main");
Hello main
Volatile Keyword in Java
Volatile keyword in Java is used as an indicator to Java compiler and Thread that do not cache
value of this variable and always read it from main memory.
Java volatile keyword cannot be used with method or class and it can only be used with
variable.
If the variable keeps on changing such type of variables we have to declare with volatile
modifier.
If a variable declared as volatile then for every thread a separate local copy will be created.
Example:
return value;
this.value = value;
Synchronization in java is the capability to control the access of multiple threads to any shared
resource. If a method or block declared as a Synchronized then at a time only one thread is
allowed to operate on the given object. The synchronization is mainly used to
synchronized (expression) {
Examples:
class BankAccount {
this.balance -= amount;
this.balance += amount;
The following code example shows a synchronized statement is applied for a code block, not a
method:
synchronized (lock) {
System.out.println("Synchronized statement");
}
String Handling in Java
The basic aim of String Handling concept is storing the string data in the main memory (RAM),
manipulating the data of the String, retrieving the part of the String etc. String Handling
provides a lot of concepts that can be performed on a string such as concatenation of string,
comparison of string, find sub string etc.
String: String is a sequence of characters enclosed within double quotes (" ") is known as String.
2. By new keyword: In such case, JVM will create a new string object.
In java programming to store the character data we have a fundamental datatype called char.
Similarly to store the string data and to perform various operations on String data, we have
three predefined classes they are:
1. String class: It is a predefined class in java.lang package can be used to handle the String.
String class is immutable that means whose content can not be changed at the time of
execution of program.String class object is immutable that means when we create an object
of String class it never changes in the existing object.
Example:
class StringHandling
{
public static void main(String arg[])
{
String s=new String("java");
s.concat("software");
System.out.println(s);
}
}
Output: java
Methods of String class
length(): This method is used to get the number of character of any string.
charAt(): This method is used to get the character at a given index value.
toUpperCase(): This method is use to convert lower case string into upper case.
toLowerCase(): This method is used to convert lower case string into upper case.
concat(): This method is used to combined two string.
equals(): This method is used to compare two strings, It return true if strings are same
otherwise return false. It is case sensitive method.
equalsIgnoreCase(): This method is case insensitive method, It return true if the contents of
both strings are same otherwise false.
compareTo(): This method is used to compare two strings by taking unicode values, It
return 0 if the string are same otherwise return +ve or -ve integer values.
compareToIgnoreCase(): This method is case insensitive method, which is used to compare
two strings similar to compareTo().
startsWith(): This method return true if string is start with given another string, otherwise it
returns false.
endsWith(): This method return true if string is end with given another string, otherwise it
returns false.
subString(): This method is used to get the part of given string.
indexOf(): This method is used find the index value of given string. It always gives starting
index value of first occurrence of string.
lastIndexOf(): This method used to return the starting index value of last occurence of the
given string.
trim(): This method remove space which are available before starting of string and after
ending of string.
split(): This method is used to divide the given string into number of parts based on
delimiter (special symbols like @ space , ).
replace(): This method is used to return a duplicate string by replacing old character with
new character.
2. StringBuffer: It is a predefined class in java.lang package can be used to handle the String,
whose object is mutable that means content can be modify. StringBuffer class is working
with thread safe mechanism that means multiple thread are not allowed simultaneously to
perform operation of StringBuffer. StringBuffer class object is mutable that means when we
create an object of StringBuilder class it can be change.
Example: