Java Notes Final
Java Notes Final
1) ANALYSIS
2) PROCESS- CONDITION BASED & NON- CONDITION BASED(FORMULA
BASED)
EX- FOR SIMPLE INTEREST
STEPS- P*T*R/100
INPUTS
VARIABLES
DOUBLE P=___
DOUBLE T=___
DOUBLE R=___
FOR OUTPUT USE VARIABLE DOUBLE
class simpleinterest
{
public static void main(Strings() args)
{
double p=5.0;
double t=6.0;
double r=7.5;
double si=p*t*r/100;
System.out.println(si);
}
}
INCREMENT OPERATOR WILL INCREASE THE VALUE OF A VARIABLE BY ONE
UNIT
PRE INCREMENT (+ + a)
INCREMENT
SUBSTITUE
OPERATION
POST INCREMENT (a + +)
SUBSTITUE
OPERATION
INCREMENT
--BOTH PRE INCREMENT AND POST INCREMENT OPERATORS WILL SHOW
SAME RESULTS IF THEY ARE USED WITHOUT ANY EXPRESSIONS OR JAVA
STATEMENTS
--WHENEVER THE INCREMENT OPERATOR IS USED WITH A CHARACTER
VARIABLE THE UNICODE VALUE OF THE CHARACTER WILL BE INCREASED
AND ITS CORRESPONDING CHARACTER WILL BE STORED IN THE GIVEN
VARIABLE.
--BOOLEAN VARIABLES CAN’T BE USED WITH INCREMENT OPERATOR.
--VALUES CANT BE DIRECTLY USE WITH INCREMENT OPERATOR
Ex-Int a =10;
Int res= ++a +a+ a++ +5 + ++a
10+1+11+11+5+12+1
11+11+11+5+13
51
COMPARISON OPERATORS:
COMPARISON OPERATORS WILL COMPARE GIVEN 2 VALUES AND RETURNS A
BOOLEAN RESULT
== , !=, > , <, >= , <=
A=1,B=2
A == B
1 ==2 ------- >False
A != B
1 != 2------- > TRUE
A<B
1 < 2 ------- > TRUE
A>B
1 > 2 ------- > FALSE
A >= B
1 >= 2 ------- > FALSE
A<=B
1 <= 2 ------- > TRUE
BOOLEAN CONDITION:
ANY EXPRESSION WHICH PRODUCE THE RESULT AS TRUE OR FALSE IS
KNOWN AS BOOLEAN CONDITION.
BOOLEAN CONDITION CAN BE CREATED WITH THE HELP OF COMPARISON
OPERATORS
Ex-
public class com {
public static void main(String[] args) {
int a=10;
int b=11;
boolean res= a==b;
System.out.println(res); //store the value of boolean result
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);
}
}
OUTPUT:
PS F:\Vinay QSpider\JAVA Pgms> java com.java
false
true
false
true
false
true
LOGICAL OPERATORS:
LOGICAL OPERATORS ARE USED TO COMMBINE MULTIPLE BOOLEAN
CONDITIONS AS ONE SINGLE CONNDITION.
LOGICAL OPERATORS WILL ALWAYS RETURN A BOOLEAN RESULT
DIFFERENT TYPES OF LOGICAL OPERATORS ARE
1. LOGICAL AND (&&)
2. LOGICAL OR (II)
3. LOGICAL XOR (^)
BITWISE OPERATOR
Output:
PS F:\Vinay QSpider\JAVA Pgms> javac Bit.java
PS F:\Vinay QSpider\JAVA Pgms> java Bit
0
125
125
public class Bit {
public static void main(String[] args) {
int a = 10;
int b = 50;
System.out.println(a&b);
System.out.println(a|b);
System.out.println(a^b);
}
}
Output
CONCATENATION OPERATORS:
“HELLO” + 10
O/P- HELLO10
FUNCTIONS/METHOD
METHODS
1. METHODS ARE USED TO ELIMINATE DUPLICATE LINES OF CODE IN THE
PGM
2. METHODS ARE NAMED BLOCKS OF CODES WHICH WILL PERFORM A
SPECIFIC TASK
SYNTAX
Accessspecifier
1. Public
2. Protected
3. Packaging level(Default value)
4. Private
Accessmodifier
1. Static
2. Non-Static(Default value)
ReturnType
1. Void
2. All datatypes
accessspecifier accessmodifier returntype methodname(parameteers/argument list)
{
Statement;
Statement;
Return;
}
class add
{
Public static void add(int v1, int v2)
{
int res=v1+v2;
System.out.println(res);
}
public static void main(String[] args]
{
add(15,20);
add(100,200);
}
M2() { }
Main() { }
IF A METHOD CALLS ANOTHER METHODAND THAT METHOD CALLS ONE MORE
METHOD IS KNOWN A CHAIN FUNCTION METHOD(MINIMUM 3 FUNCTION)
M2() { }
Main() { }
Main() { }
M1() { }
Main() { }
IF A METHOD CALLS ANOTHER METHOD AND THAT METHOD CALLS BACK THE
SAME METHOD IS CALLED AS RECURSIVE FUNCTION CALL.
IF A METHOD CALLS ITSELF IS ALSO CALLED AS RECURSIVE FUNCTION CALL.
FLOW CONTROL STATEMENT
FLOW CONTROL STATEMENTS ARE USED TO CONTROL THE EXECUTOIN FLOW OF
THE PROGRAM ATA THE RUNTIME.
FLOW CONTROL STATEMENTS ARE OF 2 TYPES:
1. DECISION MAKING STATEMENTS
2. LOOPING STATEMENTS
IF STATEMENT:
IT IS A TYPE OF DECISION MAKING WHERE ONE GROUP OF STATEMENTS
WRITTEN WITHIN THE IF BODY WILL BE EXECUTED IF AND ONLYIF RESULT OF
BOOLEAN CONDITION IS TRUE.
SYNTAX: if(BOOLEAN CONDITION
{
STATEMENT……..
STATEMENT……..
}
BOOL FALSE
AEN
COND
CON
TRUE
Output:
PS F:\Vinay QSpider\JAVA Pgms> javac number.java
PS F:\Vinay QSpider\JAVA Pgms> java number
101 is greater than 100
IF ELSE STATEMENT:
IT IS A TYPE OF DECISION MAKING STATEMENTS WHERE STATEMENTS OF IF
BODY ARE EXECUTED IF RESULT OF BOOLEAN CONDITION IS TRUE ELSE THE
STATEMENT OF ELSE BODY ARE EXECUTED.
SYNTAX:
if(Boolean Condition)
{
Statement….
Statement…..
}
else
{
Statement…..
Statement….
}
public class ifelse
{
public static void check(int num)
{
if(num>100){
System.out.println(num+"is greater than 100");
}
else
{
System.out.println(num+" is less than 100");
}
}
public static void main(String[] args) {
check(90);
check(115);
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms> javac ifelse.java
PS F:\Vinay QSpider\JAVA Pgms> java ifelse
90 is less than 100
115is greater than 100
IF ELSE IF:
IT IS A TYPE OF DECISION MAKING STATEMENTS WHICH IS USED TO WHENEVER
THERE ARE MULTIPLPE BOOLEAN CONDITIONS TO BE EVALUATED TO EXECUTE
DIFFERENT SET OF STATEMENTS
SYNTAX:
if(Boolean condition)
{
Statement…..
Statement….
}
else if(Boolean condition)
{
Statement…..
Statement….
}
if
{
Statement…..
Statement….
}
public class Ifelseif {
public static void check(int num) {
if (num > 100) {
System.out.println(num + " is greater than 100");
} else if (num < 100) {
System.out.println(num + " is less than 100");
} else {
System.out.println(num + " is equal to 100");
}
}
public static void main(String[] args) {
check(100);
check(88);
check(128);
}
}
5) Class Name:
Example:
Output:
SYNTAX:
if(Boolean condition)
{
if (Boolean condition)
{
Statement…..
}
else
{
Statement…..
}
}
public class Nested1
{
public static void test(int a,int b)
{
if(a==1)
{
if (b==2)
{
System.out.println("Love You");
}
else
{
System.out.println("Invalid Love");
}
}
else
{
System.out.println("Invalid Girl");
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat> java Nested1.java
Love You
public class Nested1
{
public static void test(int a,int b)
{
if(a==1)
{
if (b==2)
{
System.out.println("Love You");
}
else
{
System.out.println("Invalid Love");
}
}
else
{
System.out.println("Invalid Girl");
}
}
SWITCH
Syntax:
switch(choice)
{
EXAMPLE:
FOR LOOP IS USED WHENEVER LOGICAL START AND LOGICAL END IS VERY
WELL DEFIENED
OR
FOR LOOP IS USED WHENEVER WE KNOW THE NUMBER OF ITTERATION
SYNTAX:
}
public static void main(String[] args)
{
test(5);
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat\looping statements> javac loop1.java
PS F:\Vinay QSpider\JAVA Pgms\codingbat\looping statements> java loop1
hello
hello
hello
hello
hello
Print the numbers from 1-10 & trace code for 1st three iteration
}
public static void main(String[] args) {
test(10);
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat\looping statements> javac onetoten.java
PS F:\Vinay QSpider\JAVA Pgms\codingbat\looping statements> java onetoten
1
2
3
4
5
6
7
8
9
10
}
public static void main(String[] args) {
test(10);
}
}
WHILE LOOP IS USED WHEN EVER STOP CONDITION IS NOT VERY WELL DEFINED.
Syntax:
while(Boolean condition)
{
Statement…..
Statement…..
}
DO WHILE LOOP:
Syntax:
do
{
Statements…….
Statements…….
}
while(Boolean Condition);
Println()= Print the output and move to next line
Print()= print the output and stay in the same line
NESTED LOOP
class Nestedloop
{
public static void test()
{
for(int i=1;i<=3;i++)
{
For(int j=1;j<=3;j++)
{
System.out.print(“Inner Loop”);
}
System.out.println(“Outer Loop”);
}
}
public static void main(String[] args)
{
test(3);
}
}
public class nestedloop {
public static void test(int n)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=5;j++)
{
System.out.print("*"+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
test(5);
}
}
*****
*****
*****
*****
*****
7 11 6 55 8 45 16 96 46
0 1 2 3 4 5 6 7 8
Array Length=9
DECLARATION & INTIALIZATION
SYNTAX:
Datatype[] array variable name={v1,v2,v3…….vN};
Or
Datatypearray variable name[] ={v1,v2,v3…….vN};
Ex: int[] a1={10,20,30,40};
*ARRAY IS A FIXED LENGTH BECAUSE IT ALWAYS RESERVE THE MEMORY 1ST &
THEN IT PERFORMS OPERATION.
*ARRAY IS A FIXED AT RUNTIME.
*INDEX IS USED TO PERFOM ALL BASICS TO ADVANCED OPERATIONS WITHIN AN
ARRAY.
*INDEX ALWAYS STARTS FROM “0” BASED ON ADDRESS OF MEMORY
LOCATION.IF WE START INDEX FROM 1 IT ALWAYS START POINTING TO 2ND
BUCKET INSTEAD OF 1ST. THIS PROBLEM CAUSES
“ARRAYINDEXOUTBOUNDEXCEPTION”
* First index----- > (lower bound)
* Last index----- >arr.length- 1=9-1=8(upper bound)
*Mid index----- >(arr.length-1)/2=(9-1)/2=4(middle bound)
Example:
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat\array> javac PrintArray.java
PS F:\Vinay QSpider\JAVA Pgms\codingbat\array> java PrintArray
10
20
30
40
[I@2f92e0f4
lenght of given array is= 4
first index of of given array is= 0
first index of of given array is= 3
first index of of given array is= 1
public class Array1
{
public static void main(String[] args) {
//Declaration & Creation
int[] a1=new int[3];
// assign the values/insert values:arrayname[index]=value;
a1[0]=10;
a1[1]=20;
a1[2]=30;
System.out.println(a1[0]+","+a1[1]+","+a1[2]);
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat\array> javac Array1.java
PS F:\Vinay QSpider\JAVA Pgms\codingbat\array> java Array1
10, 20, 305
}
public static void main(String[] args) {
int[] a1={1,2,3,4};
traverse(a1);
}
}
Tracing
Calculate sum of given array
Input:{1,10,20,30}
Input:{5,4,1,7,9,8}
Example:
public static void test(int[] a1){
for(int e1:a1)
{
Statement……
}
}
Example:
public static void test(int[] a1){
for(int e1:a1)
{
Statement……
}
}
// for each loop
public class Array9 {
public static void test(int[] a1){
for(int e1:a1)
{
System.out.print(e1+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] a1={1,5,1,8,6,7};
test(a1);
int[] a2={10,14,74,85,25};
test(a2);
}
}
}
}
Byte sc.nextByte();
Short sc.nextShort();
Int sc.nextInt();
Long sc.nextLong();
Float sc.nextFloat();
Double sc.nextDouble();
Char sc.next().charAt(0);
Boolean sc.nextBoolean();
String sc.next(); or
sc.nextLine();
}
for(int j=0;j<=a1.length-1;j++){
System.out.print(a1[j]+" ");
}
System.out.println();
}
245
SL CALLING CALLED LOCATION HOW TO ACCESS
NO METHOD MEMBER
1 Static Static Same class Membername
}
public static void displaybarnch()
{
System.out.println(BranchName);
}
public void deposit(double amount)
{
if(amount>=0)
{
Balance=Balance+amount;
System.out.println("Current Balance: " + Balance);
}
else{
System.out.println("Invalid Amount!");
}
}
public void withdraw(double amount){
if(amount>=0 && Balance>amount)
{
Balance=Balance-amount;
System.out.println("Current Balance"+ Balance);
}
else{
System.out.println("Insufficient Funds!!");
}
}
public static void main(String[] args) {
new Account().displaydetails();
new Account().deposit(20000.0);
new Account().withdraw(15000);
}
}
Output:
PS F:\Vinay QSpider\JAVA Pgms\codingbat\opps> javac Account.java
PS F:\Vinay QSpider\JAVA Pgms\codingbat\opps> java Account
Account Number: 12345678
Name: Vinay
Branch Details: Bailhongal
IFSC Code :SBIN0000273
Current Balance: 25000.0
Insufficient Funds!!
WHAT IS CLASS?
WHAT IS OBJECT?
HOW TO CREATE OBJECT IN JAVA?
EXPLAIN MEMBER OF CLASS.?
WHAT IS STATIC & NON STATIC MEMBERS?
DIFFERENCE BETWEEN STATIC, NON-STATIC & FINAL?
HOW TO ACCESS STATIC & NON STATIC PRESENT IN SAME & DIFFERENT CLASS?
WRITE THE PGM TO EXPLAIN STATIC MEMBERS & NON-STATIC MEMBERS?
DIFFERENCE BETWEEN STATIC POOL & HEAP AREA?
Important
REFERENCE VARIABLES
It is a type of variable which is used to store address of an object.
Within a reference variables we can’t store primitive values.
Within a primitive variables we can’t store address of an object.
Within 1 reference variables we can store ONLY ONE OBJECT ADDRESS.
Multiple reference variables can point to same object.
If multiple reference variables points to same object then, changes done on the data of the
object by one reference variable will impact other reference variables.
If two reference variables points to different objects then, changes done on the data of
one object by one reference variable will NOT impact other reference variables.
Syntax:
Classname reference variable = new classname();
}
// public static void displaybarnch()
// {
// System.out.println(BranchName);
// }
public void deposit(double amount)
{
if(amount>=0)
{
Balance=Balance+amount;
System.out.println("Current Balance: " + Balance);
}
else{
System.out.println("Invalid Amount!");
}
}
public void withdraw(double amount){
if(amount>=0 && Balance>amount)
{
Balance=Balance-amount;
System.out.println("Current Balance:"+ Balance);
}
else{
System.out.println("Insufficient Funds!!");
}
}
public static void main(String[] args) {
// new Accountref().displaydetails();
// displaybarnch();
// new Accountref().deposit(20000.0);
// new Accountref().withdraw(15000);
Accountref a1= new Accountref();
a1.displaydetails();
a1.deposit(20000.0);
a1.withdraw(5000.0);
// a1.BranchNamedisplaybarnch();
}
}
SAME CLASS.
LOCAL VARIABLES:
ANY VARIABLES WHICH IS DECLARED WITH THE METHOD DECLARATION
IT IS DECLARED.
STATIC
class Sample
{
static int v1=100; //static primitive member variable
String str1=”Java”; // Non Static reference member variable
public static void test()
{
int a1=500; // primitive local variable
String s1=”SQL” // reference local variable
System.out.println(v1);
System.out.println(new Sample().str1);
System.out.println(a1);
System.out.println(s1);
}
publilc static void main(String [] args)
{
System.out.println(v1);
Sample a1=new Sample();
System.out.println(a1.str1);
test();
}
}
IF BOTH MEMBER & LOCAL VARIABLES HAVE SAME NAME THEN IF YOU
CALL A VARIABLE FROM THE SAME METHOD THEN PRIORITY ALWAYS
GIVEN FOR LOCAL VARIABLES.
=== WE CAN USE ANY METHOD FOR CALLING& CALLED FUNCTION BUT IN
MAIN METHOD WE NEED TO DEFINE THE EXECUTION PART.
class Sample
{
static int v1=100; //static primitive member variable
static String str1=”Java”; // Static reference member variable
public static void test()
{
int v1=500; // primitive local variable
String str1=”SQL”; // reference local variable
System.out.println(v1);
System.out.println(str1);
System.out.println(Sample.v1);
System.out.println(Sample.str1);
}
publilc static void main(String [] args)
{
test();
}
}
Class Sample{
Int v1=100;
String str1;
Public static void test()
{
Int v1=100;
String str1=”sql”;
System.out.println(v1);
System.out.println(str1);
System.out.println(new Sample().v1);
System.out.println(new Sample.str1);
}
Public static void 0main(String[] args )
{
test();
}
}
NON STATIC MEMBER VARIABLES & LOCAL VARIABLES HAVE SAME
NAME THEN IT CAN BE DIFFERENTIATED FROM STATIC METHOD BY
CREATING OBJECT.( object creation. member name is pointing to member variable)
class Sample
{
int v1=100;
String str1;
public static void test()
{
int v1=500;
String str1-“SQL”;
System.out.println(v1);
System.out.println(str1);
System.out.println(new Sample().v1);
System.out.println(new Sample().str1); Calling Method
}
Main()
{
test();
}}
IF BOTH MEMBER & LOCAL VARIABLE HAVE SAME NAME THEN FROM SAME
METHOD HOW TO DIFFERENTIATE
CALLING CALLED LOCAL HOW TO CALL
METHOD MEMBER VARIABLE MEMBER VARIABLE
VARIABLE
Static Static (a1) Default (a1) classname . membername
PASS BY REFERENCE:
IF A METHOD IS RETURNING OBJECT FROM 1 METHOD TO ANOTHER
METHOD THEN IT IS NOWN AS PASS BY REFERENCE
public class PassByref
{
public static PassByref test(PassByref pr1)
{
return pr1;
}
public static void main(String[] args)
{
PassByref pr=new PassByref();
System.out.println(test(pr));
}
}
JAVA PACKAGES
GMAIL
PUBLIC HIGH
VISIBLITY
LESS PROTECTED & LESS
VISIBLITY
& HIGH
PACKAGE SECURITY
SECURITY LEVEL
PRIVATE
PUBLIC
PROTECTED
PACKAGE LEVEL
PRIVATE
ENTITY:
CLASS
METHODS
DATA MEMBERS (VARIABLES)
HOW TO ACCESS AN ENTITIES WHICH ARE DECLARED AS PUBLIC OR
PROTECTED OR PACKAGED OR PRIVATE FROM DIFFERENT PLACES
SAME CLASS- DIFFERENT DIFFERENT
SAME PACKAGE CLASS- SAME CLASS-
PACKAGE DIFFERENT
PACKAGE
PUBLIC CAN BE CAN BE CAN BE
ACCESSED ACCESSED ACCESSED
PROTECTED CAN BE CAN BE CAN BE
ACCESSED ACCESSED ACCESSED USING
INHERITANCE
PACKAGED CAN BE CAN BE CANNOT BE
ACCESSED ACCESSED ACCESSED
PRIVATE CAN BE CANNOT BE CANNOT BE
ACCESSED ACCESSED ACCESSED
PUBLIC:
IF YOU DECLARE ANY ENTITY AS PUBLIC, THEN IT CAN BE ACCESSED BY
THE CLASSES PRESENT IN SAME OR DIFFERENT PACKAGES.
PUBLIC ENTITIES WILL HAVE HIGHEST VISIBILITY AND LOWEST SECURITY
PROTECTED:
IF YOU DECLARE ANY ENTITY AS PROTECTED,THEN IT CAN BE ACCESSED
BY THE CLASSES PRESENT IN SAME PACKAGES
PROTECTED ENTITY CAN BE ACCESSED BY OTHER CLASS PRESENT IN
DIFFERENT PACKAGE THROUGH INHERITANCE AND CREATING THE
OBJECT OF SUBCLASS ONLY.
PACAKAGE LEVEL (DEFAULT):
IF YOU DECLARE ANY ENTITY WITHOUT USING ANY ACCESS SPECIFIER
KEYWORD THEN IT IS CONSIDERED AS PACKAGE-LEVEL MEMBER
(DEFAULT MEMBER)
IF YOU DELARE ANY ENTITY AS PACKAGE-LEVEL (DEFAULT), THEN IT CAN
BE STRCITLY ACCESSED ONLY BY THE CLASSES PRESENT IN SAME
PACKAGE.
PRIVATE:
IF YOU DECLARE ANY ENTITY AS PRIVATE, THEN IT CAN BE ACCESSES
ONLY BY THE CLASS WITHIN WHICH THEY ARE DECLARED.
PRIVATE ENTITIES WILL HAVE HIGHEST SECURITY AND LOWEST
VISIBILITY
}
}
OR
package com.OopsProgram.package1;
}
}
OR
package com.OopsProgram.package2;
import com.OopsProgram.package1.*;
public class thirdpgm
{
//different class different package
public static void main(String[] args) {
firstpgm p1= new firstpgm();
System.out.println(p1.a1);
// System.out.println(p1.a2); protected of different class
// System.out.println(p1.a3); package level of different class
// System.out.println(p1.a4); // private of different class
p1.test();
// p1.test1(); protected of different class
// p1.test2();package level of different class
// p1.test3(); // private of different class
CONSTRUCTORS:
CONSTRUCTORS ARE SPECIAL TYPE OF METHODS WHICH HAVE SAME
NAME AS THE CLASS NAME.
CONSTRUCTORS ARE EXECUTEED WHENEVER THE OBJECT OF THAT
CORRESPONDING CLASS IS CREATED.
EVERY CLASS MUST & SHOULD HAVE CONSTRUCTOR
IF PROGRAMMER DO NOT WRITE ANY CONSTRUCTOR, THE COMPLIER
WILL WRITE DEFAULT CONSTRUCTOR IMPLICITLY.
IF THE PROGRAMMERE WRITES CONSTRUCTOR IT CAN BE OF TWO TYPES.
1. ZERO ARGUMENT CONSTRUCTOR.
2. PARAMETERZIED CONSTRUCTOR.
CONSTRUCTORS CANNOT BE DECLARED AS STATIC OR FINAL.
IF YOU SPECIFY RETURN TYPE FOR THE CONSTRUCTOR, THEN IT WILL BE
CONSIDERED AS A NORMAL METHOD.
IF THE PROGRAMMER WRITES ANY CONSTRUCTOR EXPLICITLY, THEN
COMPLIER WILL NOT WRITE ANY CONSTRUCTOR IMPLICITLY.
CONSTRUCT PUBLIC PROTECT PACKAG PRIVATE
ORS
ED E LEVEL
package com.OopsPrograms.constructor;
public Zeroagrs()
{
System.out.println(" Zero arg constructor of Zeroargs
class");
}
public static void main(String[] args) {
new Zeroargs();
// Zeroargs(); in the class programmer is writing
// zero arguments constructor
// Zeroargs(); zero argument constructor
}
}
Parameterized constructor
package com.OopsPrograms.constructor;
}
APPLICATION OF CONSTRUCTOR:
CONSTRUCTOR ARE USED TO INTIALIZE THE DATA MEMBERR OF THE
CLASS.
// Method Initialization
public void updatedetails(String Carname, String Carmomdel, Double Price)
{
this.Carname=Carname;
this.Carmodel=Carmodel;
this.Price=Price;
}
}
C1 C2
Car@1 Car@2
Carname Skoda Carname BMW
Carmodel Rapid Carmodel A4
Price 1650000.0 Price 7500000.0
displaydetails(); displaydetails();
Updatedetails(); Updatedetails();
// Initialization Using Constructor
package com.OopsProgram.Car;
}
public static void main(String[] args) {
Car C1= new Car("Skoda","Rapid",1650000.0);
C1.displaydetails();
Car C2=new Car("BMW","A4",7500000.0);
C2.displaydetails();
}
}
CONSTRUCTOR OVERLOADING
“THIS” KEYWORD
“THIS” KEYWORD IS USED TO DIFFERENTIATE BETWEEN LOCAL
VARIABLES AND MEMBER VARIABLES WITHIN A METHOD/CONSTRUCTOR
WHENEVER THEY HAVE SAME NAMES.
DEVELOPING MULTIPLE CONSTRUCTORS WITHIN THE SAME CLASS WITH
THE SAME NAME WHICH DIFFER IN
1. NUMBER OF ARGUMENTS
2. DATATYPES OF ARGUMENTS
3. ORDER OF DATATYPE ARGUMENTS
IS CONSTRUCTOR OVERLOADING
package com.OopsPrograms.constructor;
}
}
Output:
this();
this calling statement
}
public void displaydetails()
{
System.out.println(Name);
System.out.println(Eid);
System.out.println(Salary);
System.out.println(Exp);
}
public static void main(String[] args) {
Employee E1=new Employee("Vinay","E123",50000.0,2);
E1.displaydetails();
Employee E2=new Employee("Sumeet","E852",25000.0);
E2.displaydetails();
}
}
Output:
Vinay
E123
50000.0
2
---------------
Sumeet
E852
25000.0
0
NOTE:
ADVANTAGES:
EASY TO BIND DEFINITION WITH DECLARATION BASED ON
PARAMETERS(ARGUMENTS)
USED TO PERFORM SAME OPERATION WITH DIFFERENT TYPE OF INPUTS
OUTPUT:
3
6
10
STATIC BLOCK or STATIC INITIALIZER BLOCK
Syntax:
Static
{
Statements……..
Statements……..
Statements……..
}
Output:
static block 1 of sample class
main starts
10
main ends
NON STATIC BLOCK or INSTANCE INITIALIZER BLOCK
IT IS USED TO INITIALIZE NON STATIC MEMBERS OF THE CLASS
IT EXECUTES BEFORE THE EXECUTION OF CONSTRUCTOR & DURING
OBJECT CREATION.
OBJECT CREATION IS MANDATORY TO EXECUTE INSTANCE BLOCK.
WE CAN WRITE MULTIPLE INSTANCE BLOCK WITHIN THE SAME CLASS.
Syntax:
{
Statements……….
}
Example:
package com.OopsPrograms.Blocks;
}
public static void main(String[] args) {
System.out.println("main starts");
Demo d1=new Demo();
System.out.println(d1.x);
System.out.println("main ends");
}
}
Output:
main starts
Non Static block 1 of Demo
Zero arg constructor
10
main ends
MAIN METHOD:
IT’S AN ENTERY POINT OF JAVA WHERE ALL THE PROGRAMS STARTS THE
EXECUTION ALWAYS FROM MAIN METHOD.
WE CAN DEVELOP A CLASS WITHOUT A MAIN METHOD ALSO.
BUT WE CAN’T EXECUTE THE CODE WITHOUT MAIN METHOD
IF A CLASS CONSISTS OF MAIN METHOD THEN THAT CLASS IS KNOWN AS
MAIN CLASS
SERIALIZATION:
import java.io.Serializable;
//Getters
public String getName() {
return Name;
}
public String getEmail() {
return Email;
}
public long getPhone() {
return Phone;
}
//Setters
public void setName(String Name) {
this.Name=Name;
}
public void setEmail(String Email) {
this.Email=Email;
}
public void setPhone(long Phone) {
this.Phone=Phone;
}
public void displaydetials() {
System.out.println(Name);
System.out.println(Email);
System.out.println(Phone);
}
}
package com.OopsPrograms.JavaBeans;
DESERIALIZATAION:
Name:String
Datamember:datatype Empid: int
Sal: double
+ Displaydetails(): void
Functionmember:returntype + Updatedetails(newsal): void
class Father
{
public void Bike()
{
System.out.println("Bike");
}
}
class Son extends Father
{
public void Cycle()
{
System.out.println("Cycle");
}
}
public class Main1 {
public static void main(String[] args) {
Father F1=new Father();
F1.Bike();
Son S1=new Son();
S1.Bike();
}
}
OUTPUT:
Bike
Bike
Cycle
Sample
Final v1:int
Str:String
+ test(): void
+count() : void
EXTENDS
Demo
Z1: double
+displaydetails()
:void
package com.OopsPrograms.Inheritance;
class Sample
{
final int V1 = 10;
String Name;
public void test()
{
System.out.println(V1);
}
public void count()
{
System.out.println(Name);
}
}
class Demo extends Sample
{
double Z1=10.0;
public void display()
{
System.out.println("Sub Class");
}
}
public class Maindemo
{
public static void main(String[] args)
{
Demo d1=new Demo();
d1.test();
d1.count();
d1.display();
System.out.println(d1.V1);
System.out.println(d1.Name);
System.out.println(d1.Z1);
}
}
OUTPUT:
10
null
Sub Class
10
null
10.0
MUTLILEVEL INHERITANCE:
SUBCLASS INHERITING THE PROPERTIES OF SUPERCLCASS AND THAT
SUPERCLASS INHERITING THE PROPERTIES FROM ANOTHER SUPERCLASS
IS CALLED AS MULTILEVEL INHERITANCE.
WhatsAppV1
+Sendmessages() :void
EXTENDS
WhatsAppV2
+SendVoicemessages()
:void
EXTENDS
WhatsAppV1
+Videocall() :void
package com.OopsPrograms.Inheritance; (MUTLILEVEL INHERITANCE:
class WhatsAppV1{
public void sendmsg() {
System.out.println("Messages");
}
}
class WhatsAppV2 extends WhatsAppV1{
public void voicemsg() {
System.out.println("Voice Msg");
}
}
class WhatsAppV3 extends WhatsAppV2{
public void videocall() {
System.out.println("Video Call");
}
}
public class WhatsAppMain {
public static void main(String[] args) {
WhatsAppV1 w1=new WhatsAppV1();
w1.sendmsg();
WhatsAppV2 w2=new WhatsAppV2();
w2.sendmsg();
w2.voicemsg();
WhatsAppV3 w3=new WhatsAppV3();
w3.sendmsg();
w3.voicemsg();
w3.videocall();
}
}
OUTPUT:
Messages
Messages
Voice Msg
Messages
Voice Msg
Video Call
MULTIPLE INHERITANCE:
SUBCLASS INHERITING THE PROPERTIES FROM 2 OR MORE SUPERCLASS IS
AS CALLED AS MULTIPLE INHERITANCE.
JAVA DON’T SUPPORT MULTIPLE INHERITANCE.
HIERARCHICAL INHERITANCE:
Account
+AccNo:long
+Bal: double
+Owner : String
+deposit(amount) :void
+withdraw(amount) : void
Saving Account
+ +AccNo:long
+Bal: double
+Owner : String
+deposit(amount) :void
+deposit(amount) :void
+withdraw(amount) : void
+withdraw(amount) : void
package com.OopsPrograms.Inheritance;
class Account{
long Accno;
double Balance;
String Owner;
public void deposit(double amount) {
Balance=Balance+amount;
System.out.println("Amount deposited in :" +amount+"/n Current
Balance is:Rs"+Balance);
}
public void withdraw(double amount) {
Balance=Balance-amount;
System.out.println("Amount withdrawn is :" +amount + "/n"
+"Current Balance is :" +Balance);
}
}
class Saving extends Account{
double roi=0.05;
public void calculateroi() {
Balance=Balance+Balance*roi;
System.out.println("ROI is Rs:" +Balance);
}
}
class Current extends Account{
static double MinBal=5000.0;
public void ShowBal() {
System.out.println("Minimum Balance of Current Account is: "
+MinBal);
}
}
}
OUTPUT:
class A{
System.out.println("Subclass B Constructor");
}
}
public class Constructor {
public static void main(String[] args) {
B B1=new B();
}
}
OUTPUT:
Parent Class A Constructor
Subclass B Constructor
OBJECT CLASS:
IT IS SUPER MOST CLASS IN JAVA WHERE EVERY CLASS DIRECTLY or
INDIRECTLY INHERITICE THE PROPERTIES OF OBJECT CLASS.
INSIDE OF AN OBJECT CLASS WE HAVE ONE NO ARGUMENT
CONSTRUCTOR & WITHIN THAT CONSTRUCTOR BODY WE DON’T HAVE
ANY SUPER STATEMENT.
CONSTRUCTOR CHAINING:
IT’S A PROCESS OF SUB CLASS CONSTRUCTOR CALLING SUPER CLASS
CONSTRUCTOR & THAT CONSTRUCTOR IS ANOTHER SUPERCLASS
CONSTRUCTOR & THIS PROCESS WILL BE CONTINUED UNTILL REACHING
OBJECT CLASS.
OUTPUT:
Modified Bike
SPUER KEYWORD:
SUPER KEYWORD IS SPECIAL IN-BUILT REFERENCE VARIABLE WHICH IS
CREATED BY JVM & IT WILL POINT TO IMMEDIATE PARENT CLASS OBJECT.
SUPER KEYWORD IS USED WITHIN THE SUBCLASS METHODS IN ORDER TO
ACCESSS PROPERTIES OF ITS IMMEDIATE SUPERCLASS.
package com.OopsPrograms.Inheritance;
class Sample1
{
public void count()
{
System.out.println("Count method of parent class");
}
}
class Demo1 extends Sample1
{
@Override
public void count()
{
super.count(); //Call count of parent class
System.out.println("Count overridden method of sub class");
}
}
public class Main {
public static void main(String[] args)
{
Demo1 d1=new Demo1();
d1.count();
}
}
OUTPUT:
Count method of parent class
Count overridden method of sub class
METHOHD OVERRIDING WITH MULTILEVEL INHERITANCE
Whatsappmsg1
Deliveryreport(); void
Whatsappmsg2
Deliveryreport(); void
Whatsappmsg3
Deliveryreport(); void
package com.OopsPrograms.Inheritance;
class Whatsappmsg1{
public void deliveryreport() {
System.out.println("Single Tick");
}
}
class Whatsappmsg2 extends Whatsappmsg1{
@Override
public void deliveryreport() {
super.deliveryreport();
System.out.println("Double Tick");
}
}
class Whatsappmsg4 extends Whatsappmsg2{
@Override
public void deliveryreport() {
super.deliveryreport();
System.out.println("Blue tick");
}
}
public class Whatsappmsg3 {
Account
Bal:double
Name:String
AccNo:long
Deposit():Void
Withdraw():void
Current Saving
Minbal:double Roi=
@Override
Withdraw():void
ABSTRACTION
ABSTRACT:
INCOMPLETE
ABSTRACT METHOD:
A METHOD WHICH HAS ONLY METHOD DECLARATION & NO METHOD
DEFINITION IS CALLED AS ABSTRACT METHOD.
ABSTRACT CLASS:
IF THE CLASS IS DELARED WITH ABSTRACT KEYWORD.
ABSTRACT METHOD MUST BE DECLARED BY USING ABSTRACT KEYWORD
WHEN TO DECLARE
IF A CLASS CONSIST OF ATLEAST ONE ABSTRACT METHOD THEN THE
CLASS MUST BE DECLARED AS ABSTRACT METHOD
IT’S IMMPOSSIBE TO CREATE OBJECT OF AN ABSTRACT CLASS.
WE CAN CREATE REFERENCE VARIABLE OF AN ABSTRACT CLASS.
RULE OF ABSTRACT:
IF A CLASS INHERITANCE FROMM ABSTRACT CLASSTHEN THE SUB CLASS MUST
OVERRIDE ALL ABSTRACT METHODS OF SUPER CLASS ELSE SUB CLASS ALSO
DECLARED AS ABSTRACT CLASS
CONCRETE CLASS:
IF A CLASS IS DECLARED WITHOUT USING ABSTRACT KEYWORD THEN THE
CLASS IS KNOWN AS CONCRETE CLASS.
CONCRETE METHOD:
A METHOD WHICH HAS BOTH METHOD DECLAREATION & METHOD DEFINITION
IS CALLED AS CONCRETE METHOD.
WE CAN CREATE OBJECT OF CONCRETE CLASS & WE CAN CREATE REFERENCE
VARIABLE ALSO.
WHEN TO USE CONCRETE CLASS:
IF A CLASS CONSIST OF ONLY CONCRETE METHOD THEN THE CLASS IS
DECLARED AS CONCRETE CLASS.
package com.OopsPrograms.Abstract1;
OUTPUT:
Abstract method of Sample Class is overridden
package com.OopsPrograms.Abstract1;
}
class subclass extends Sample{
@Override
public void test() {
System.out.println("Abstract Method of Sample Class Overridden");
}
}
public class Main2 {
public static void main(String[] args) {
Sample s1;
subclass Sub1=new subclass();
Sub1.test();
Sub1.test1();
Sample.test2();
}
}
OUTPUT:
Abstract Method of Sample Class Overridden
Non Static Concrete of abstract class
Static Concrete of abstract class
0
APPLICATIONS OF ABSTRACT:
BY USING ABSTRACT CLASSES WE CAN ENSURE THERE ARE NO MISSING
METHOD IMPLEMENTATIONS THE SUBCLASS.
ABSTRACT ACTS AS BLUEPRINT TO CREATE CONCRETE CLASS.
FINAL CLASS CANNOT BE INHERITED.
1. FINAL METHODS CAN BE INHERITED BUT CANNOT BE OVERRIDDEN.
2. FINAL VARIABLES CAN BE INHERITED BUT CANNOT BE RE-INTIALZED.
CONSTRUCTOR IN ABSTRACT CLASS:
WE HAVE DEFAULT CONSTRUCTOR IN ABSTRACT CLASS or WE CAN WRITE
ZERO or PARAMETRIZED CONSTRUCTOR IN ABSTRACT CLASS.
IT IS IMMPOSSIBLE TO EXECUTE CONSTRUCTOR BY ABSTRACT CLASS
EXPLICITLY BY THE PROGRAMMER.
IT CAN BE EXECUTED WITH THE HELP OF super();.
WE CANNOT CREATE OBJECT OF ABSTRACT CLASS BUT WE HAVE
CONSTRUCTOR IN ABSTRACT CLASS IN ORDER TO ACHIVE CONSTRUCTOR
CHAINING BECAUSE FOR ABSTRACT CLASSES ALSO SUPER MOST CLASS IS
OBJECT CLASS.
abstract class A
{
int a;
public A(int a)
{
System.out.println(“Constrructor of Abstract Class”);
}
class B extends A
{
publilc B(int a)
{
super(a);
system.out.println(“B Class Constructor);
}
}
Class Main{
Public static void main(String[] args
{
B b1=new B(10);
}
}
INTERFACE
INTERFACE IS A TYPE WHERE METHODS ARE BY DEFAULT ABSTRACT &
VARIBALES ARE BY DEFAULT STATIC & FINAL.
IT IS IMPOSSIBLE TO CREATE OBJECT OF AN INTERFACE.
WE CAN CREATE REFERENCE VARIABLES OF INTERFACE TYPE.
THE CLASS CAN INHERIT THE PROPERTIES OF AN INTERFACE ONLY BY
USIING IMPLEMENTS KEYWORD.
THE INTERFACE FROM WHERE PROPERTIES ARE INHERITED IS CALLED AS
SUPER INTERFACE.
THE CLASS WHICH IS IPLEMENTS THE INTERFACE IS CALLED AS
IMPLEMENTATION CLASS.
IF A CLASS IMPLEMENTS AN INTERFACE THEN THE IMPLEMENTATION
CLASS MUST OVERRIDE ALL THE ABSTRACT METHODS PRESENT IN SUPER
INTERFACE ELSE THE CLASS MUST BE DECLARED AS ABSTRACT CLASS.
AN INTERFACE CANNOT IMPLEMENTS ANOTHER INTERFACE.
AN INTERFACE SHOULD ONLY EXTENDS ANOTHER INTERFACE.
AN INTERFACE CAN NEVER INHERIT or EXTENDS FROM A CLASS NOT
EVEN FROM OBJECT CLASS.
A CLASS CAN IMMPLEMENTS ANY NUMBER OF INTERFACES.
A CLASS CAN EXTENDS & IMPLEMENTS AT THE SAME TIME.
A CLASS CAN EXTENDS ONLY ONE SUPERCLASS BUT IT CAN IMPLEMENTS
ANY NUMBER OF INTERFACES AT THE SAME TIME.
interface
{
By default every method is abstract
By default datamembers are static & final.
By default only public Access specifier is allowed.
Impossible to create a object
We can create reference variable.
We don’t have constructor.
}
SUPER Class Abstract Class Interface Interface Class
TYPE class
SUB Class Class Abstract Class Interface Interface
TYPE class (implementation
class)
How to Extends Extends Extends Implements Extends Not
Achieve Possible
inheritance
<<Run>>
a:int
Test():void
implements
<<Run>>
a:int
Test():void
package com.OopsPrograms.Interface1;
interface Run
{
int a=10; //variable (static & final)
//public static final a=10;
void test();
}
class Sample implements Run{
public void test() {
System.out.println("Overridden method of interface Run");
}
}
public class Main1{
public static void main(String[] args) {
System.out.println(Run.a);
Sample S1=new Sample();
S1.test();
Run R1; //reference variable for interface Run
}
}
package com.OopsPrograms.Interface1;
interface A1{
public void test();
}
interface A2{
public void test1();
}
class Demo {
public void test2() {
System.out.println("Demo");
}
}
class Sample1 extends Demo implements A1,A2{
public void test() {
System.out.println("Override of Interface A1");
}
public void test1() {
System.out.println("Override of Interface A2");
}
public void test2() {
System.out.println("Override of Demo Class");
}
}
public class Main2 {
public static void main(String[] args) {
Sample1 S1=new Sample1();
S1.test();
S1.test1();
S1.test2();
}
}
package com.OopsPrograms.Interface1;
interface PhotoEdit{
public void resize();
public void crop();
public void addFilter();
}
interface videoedit{
public void trim();
public void addaudio();
public void changespeed();
}
class Post{
public void like() {
System.out.println("Like");
}
public void comment() {
System.out.println("Comment");
}
public void share() {
System.out.println("Share");
}
}
class Photo extends Post implements PhotoEdit{
double size=5.6;
int reso;
String type;
public void resize() {
System.out.println("Photo Resize");
}
public void crop() {
System.out.println("Photo Crop");
}
public void addFilter() {
System.out.println("Photo AddFilter");
}
public void collage() {
System.out.println(size);
System.out.println(200);
System.out.println("Image Collage");
}
}
class Video extends Post implements videoedit{
double size=100.0;
int duration;
String quality;
}
}
APPLICATION OF INTERFACE
IF WE HAVE TO DEVELOP A CLASS USING TWO SUPER TYPES THEN WE
SHOULD USE INTERFACES.
NOTE: ABSTRACT CLASS CANNOT BE USED HERE BECAUSE, A CLASS
CANNOT EXTENDS FROM TWO DIFFERENT SUPER CLASSES AT THE SAME
TIME.
JDK-8 INTERFACE ENHANCEMENT:
FROM JDK-8 INTERFACES NOW ON SUPPORTS CONCRETE METHODS.
CONCRETE METHODS OF INTERFAACE SHOULD BE DECLARED ONLLY BY
USING 2 KEYWORS
1.) STATIC – FOR STATIC METHODS
2.) DEFAULT- FOR NON-STATIC METHODS
IF YOU WANT A CONCRETE METHOD WITHIN THE INTERFACE WHICH
SHOULD NOT BE OVERRIDDEN IN IMPLEMENTATION CLASS THEN
METHOD SHALL BE DECLARED AS STATIC METHOD.
IF YOU WANT A CONCRETE METHOD WITHIN THE INTERFACE WHICH YOU
WANT TO BE OVERRIDDEN IN IMPLEMENTATION CLASSES THEN METHOD
SHALL BE DECLARED AS DEFAULT METHOD.
STATIC METHODS OF INTERFACE CAN BE ACCESSED BY USING INTERFACE
NAME WITH DOT (.) OPERATOR.
DEFAULT METHODS OF INTERFACE CAN BE ACCESSED BY USING OBJECT
OF ITS IMPLEMENTATION CLASS ONLY.
IF TWO INTERFACES CONTAINS STATIC METHODS WITH THE SAME NAME
& SAME ARGUMENTS THEN, WE DIFFERENTIATE THEM WITH HELP OF
INTERFACE NAME.
IF TWO INTERFACES CONTAINS DEFAULT METHODS WITH THE SAME
NAME & SAME ARGUMENTS THEN, IT SHOULD BE OVERRIDDEN IN THE
IMPLEMENTATION CLASS.
package com.OopsPrograms.Interface1;
interface Sample3{
// abstract method of interface(override is mandatory)
public void test();
// static concrete
public static void test1() {
System.out.println("Static method of interfcae");
}
// non-static concrete(override is optional)
public default void test2() {
System.out.println("Non-Static method of interface");
}
}
class IMPLEMENTATION implements Sample3{
public void test() {
System.out.println("Override of abstract method of interface");
}
}
}
interface Sample6{
public void count();
public static void test() {
System.out.println("Static method of interface Sample6");
}
public default void display() {
System.out.println("Non-Satitc concrete method of interface
Sample6");
}
}
class Implementation1 implements Sample5, Sample6{
public void count() {
System.out.println("Overridden method of interface");
}
public void display()
{
System.out.println("Overridden common default method of
interfaces");
}
}
public class Main4 {
public static void main(String[] args) {
Sample5.test();
Sample6.test();
Implementation1 I1=new Implementation1();
I1.count();
I1.display();
}
}
OUTPUT:
Static method of interface Sample5
Static method of interface Sample6
Overridden method of interface
Overridden common default method of interfaces
TYPE CASTING
TYPE CASTING
PRIMITIVE TYPE CASTING DERIVED TYPE CASTING
// Narrowing
double d1=100.78;
int d2=(int)d1;
System.out.println(d1);
System.out.println(d2);
// With Character
char c1='a';
int c2=c1; //Widening
System.out.println(c1);
System.out.println(c2);
int a2=(int)10.78f;//narrowing
System.out.println(a2);
}
}
OUTPUT:
100
100.0
100.78
100
a
97
10
10.0
10
ꆨ
package com.OopsPrograms.TypeCasting;
OUTPUT:
int 1
int 105
int 16
int 13
Double 100.98
EVEN THOUGH INT & FLOAT HAVE SAME CAPACITY THE DATA IS
REPRESENTED IN A DIFFERENT FORMAT.
COMPARED TO FLOAT & INT, FLOAT IS HIGHER DATATYPE & INT IS LOWER
DATA TYPE.
EVEN THOUGH LONG & DOUBLE HAVE SAME CAPACITY THE DATA IS
REPRESENTED IN A DIFFERENT FORMAT.
COMPARED TO DOUBLE & LONG, FLOAT IS HIGHER DATATYPE & INT IS
LOWER DATA TYPE.
IF YOU STORE A CHARACTER VALUE WITHIN AN INTEGER VARIABLE THEN
ITS UNICODE VALUE WILL BE STORED IN THE GIVEN INTEGER VARIABLE
package com.OopsPrograms.TypeCasting;
class Super{
}
class A extends Super{
}
class B extends Super{
}
public class ClassCastException {
public static void main(String[] args) {
Super s1=new A();
A a1=(A)s1; //Valid Down casting
B b1=(B)s1; //Reason for ClassCastException
}
}
package com.OopsPrograms.TypeCasting;
class Super1{
}
class A1 extends Super1{
}
class B1 extends Super1{
}
public class CastingMethods {
public static void check(Super1 a1) {
System.out.println("Super Class ref = "+a1);
}
public static void check(A1 a1) {
System.out.println("A Class ref = "+a1);
}
public static void check(B1 a1) {
System.out.println("B Class ref = "+a1);
}
public static void main(String[] args) {
A1 a1=new A1();
check(a1);
B1 b1=new B1();
check(b1);
Super1 s1=new Super1();
check(s1);
}
}
Output:
A Class ref = com.OopsPrograms.TypeCasting.A1@5e91993f
B Class ref = com.OopsPrograms.TypeCasting.B1@379619aa
Super Class ref = com.OopsPrograms.TypeCasting.Super1@cac736f
}
class A2 extends Super2{
}
class B2 extends Super2{
}
public class Instanceof {
public static void main(String[] args) {
Super2 s1=new Super2();
System.out.println(s1 instanceof Super2); // True
System.out.println(s1 instanceof A2); //False
System.out.println(s1 instanceof B2); //False
System.out.println("-----------");
A2 a1=new A2();
System.out.println(a1 instanceof Super2); //true
System.out.println(a1 instanceof A2); //true
//System.out.println(a1 instanceof B2); //No relation between A &
B class
System.out.println("-----------");
B2 b1=new B2();
System.out.println(b1 instanceof Super2); //true
System.out.println(b1 instanceof B2); //true
//System.out.println(b1 instanceof A2); //No relation between A
& B class
}
}
OUTPUT:
true
false
false
-----------
true
true
-----------
true
true
NOTE: IF YOU WANT TO ACCESS PARENT CLASS PROPEERTIES WHICH IS COMMON
TO ALL SUB-CLASS THEN, THERE IS NO NEED OF PERFORMING ANY
DOWNCASTING.
UPCASTING IS NOTHING BUT GENERALIZATION.
DOWNCASTINNG IS NOTHING BUT SPECIALIZATION.
package com.OopsPrograms.TypeCasting;
class User{
}
class Customer extends User{
public void buyproduct() {
System.out.println("Customer Can Buy");
}
public void cancelproduct() {
System.out.println("Customer Can Cancel");
}
}
class Admin extends User{
public void addproduct() {
System.out.println("Admin Can Add");
}
public void removeproduct() {
System.out.println("Admin Can Remove");
}
}
class Loginpage{
public void login(User U1) {
if(U1 instanceof Customer)
{
Customer C1=new Customer();
System.out.println("Customer Object Created");
C1.buyproduct();
C1.cancelproduct();
}
else {
Admin A1=new Admin();
System.out.println("Admin Object Created");
A1.addproduct();
A1.removeproduct();
}
}
}
package com.OopsPrograms.TypeCasting;
class Super5{
public void test() {
System.out.println("Hello");
}
}
class Child extends Super5{
public void test() {
System.out.println("Java");
}
}
public class Main {
public static void main(String[] args) {
Super5 S1=new Child(); //Upcasting
S1.test();
}
}
OUTPUT:
Java
Note: When we use upcasting and override the method of Parent Class it will execute the
Overriden method in spite of pointing to the method of Parent class.
HOW TO RETURN THE OBJECT
IF A METHOD IS HAVING CLASS NAME AS RETURN TYPE THEN THAT
METHOD CAN RETURN THE OBJECT OF CORRESPONDING CLASS.
IF A METHOD IS HAVING SUPERCLASS NAME AS RETURN TYPE THEN THAT
METHOD CAN RETURN ALL OF ITS SUBCLASS OBJECT
package com.OopsPrograms.Objectreturn;
}
_____________________________________________________________________
package com.OopsPrograms.Objectreturn;
class A
{
}
class B extends A
{
}
public class Sample
{
public static A test(A a1)
{
return a1;
}
public static void main(String[] args)
{
A a=new A();
A a1=test(a);
A a2=test(new B());
System.out.println(a1);
System.out.println(a2);
}
}
POLYMORPHISM
package com.OopsProgram.Poly;
class Animal
{
public void food() {
System.out.println("Food");
}
}
class Lion extends Animal
{
public void food() {
System.out.println("Non Veg");
}
}
class Elephant extends Animal
{
public void food() {
System.out.println("Veg");
}
}
class Checkfood
{
public void checkfood(Animal a1)
{
a1.food();
}
}
public class Runtime {
public static void main(String[] args) {
Checkfood C1=new Checkfood();
C1.checkfood(new Lion());
C1.checkfood(new Elephant());
}
}
OUTPUT:
Non Veg
Veg
ABSTRACTION
ABSTRACTION: HIDING
ABSTRACT: INCOMPLETE.
HIDING THE IMPLEMENTATION DETAILS OF A CLASS & EXPOSING ONLY
THE SERVICES or BEHAVIOURS IS CALLED ABSTRACTION.
STEPS TO ACHIVE ABSTRACTION:
1. USING INTERFACAE or ABSTRACT CLASS.
2. ABSTRACT METHOD’S IN INTERFACE or ABSTRACT CLASS.
3. OVERRIDING IS MANDATORY.
4. UPCASTING IS MANDATORY.
ABSTRACTION IS ACHIEVED BY CREATING 3 LAYERS
1. OBJECT IMPLEMENTATION LAYER
2. OBJECT CREATION LAYER
3. OBJECT UTILIZATION LAYER.
GENERALIZE ALL THE SUBCLASS METHODS & DECLARE THEM AS
ABSTRACT METHODS IN A COMMON SUPER CLASS or SUPER INTERFACE &
CREATE OBJECT IMPLEMENTATION LAYER.
CREATE OBJECT CREATION LAYER BY CREATING A CLASS THAT WILL
CREATE THE OBJECTS OF IMPLEMENTATION CLASS & UPCAST IT TO SUPER
CLASS or SUPER INTERFACE REFERENCE.
WITHIN THE OBJECT UTILIZAATION LAYER UTILIZE UPCASTED REFERENCE
RETURNED BY OBJECT CREATION LAYER TOCALL THE GENERALIZD
METHODS.
package com.OopsPrograms.Abstraction;
interface User{
public void transfer();
}
class ATM implements User{
public void transfer() {
System.out.println("Transfer of ATM ");
}
}
class Web implements User{
public void transfer() {
System.out.println("Transfer of Web");
}
}
class Transcation{
public User selecttype(int pin) {
if(pin==1234) {
User U1=new ATM();
System.out.println("Welcome to ATM");
return U1;
}
else {
User U2=new Web();
System.out.println("Welcome to Web");
return U2;
}
}
}
public class MainTranscation {
public static void main(String[] args) {
Transcation T1=new Transcation();
User U1=T1.selecttype(1234);
U1.transfer();
User U2=T1.selecttype(0000);
U2.transfer();
}
}
OUTPUT:
Welcome to ATM
Transfer of ATM
Welcome to Web
Transfer of Web
HAS-A-RELATION (ASSOCIATION):
HAS-A RELATION IS A TYPE OF RELAATION WHERE 2 CLASSES ARE
RELATED BASED ON THE DEPENDENCY OF EXISTENCE OF ONE OBJECT
OVER THE ANOTHER CLASS OBJECT.
HAS-A RELATION IS IMPLEMENTED BY CREATING MEMBER REFERENCE
VARIABLE POINTING TO THE OBJECT OF ANOTHER CLASS.
TYPES OF HAS-A RELATIONSHIP IN JAVA.
AGGREGATION
COMPOSITION
AGGREGATION: TWO AGGREGATED OBJECTS HAVE THEIR OWN LIFE
CYCLE BUT ONE OF THE OBJECTS HAS AN OWNER OF HAS-A RELATIONSHIP
& CHILD OBJECT CANNOT BELONG TO ANOTHER PARENT OBJECT.
FOR EXAPMLE: A HOUSE CAN HAVE MULTIPLE ROOMS. A ROOM CANNOT EXIST
INDEPENDENTLY AND ANY ROOM CANNOT BELONG TO TWO DIFFERENT HOUSES.
IF THE HOUSE IS DESTORYED, ALL ITS ROOMS WILL BE AUTOMATICALLY
DESTROYED.
PACKAGES
1.java.lang
2. java.util
OBJECT CLASS
STRING
STRING BUFFER & STRING BUILDER
WRAPPER CLASS
EXCEPTION HANDLING
COLLECTION FRAMEWORK.
Java.lang
IT CONTAINS ALL THE CLASSES WHICH ARE ESSENTIAL TO WRITE SIMPLE
JAVA PROGRAM or TO DEVELOP COMPLICATED JAVA APPLICATIONS.
TO USE CLASSES OF java.lang PACKAGE WE NEED NOT WRITE ANY IMPORT
STATEMENT or FULLY QUALIFIED CLASS NAMES.
OBJECT CLASS
OBJECT IS SUPER MOST CLASS IN JAVA
EACH & EVERY CLASS DIRECTLY or INDIRECTLY INHERITS FROM OBJECT
CLASS.
METHODS OF OBJECT CLASS:
hashCode() [unique integer value generated by jvm based on address of object ]
toString()
equals()
wait()
wait(long)
wait(long,int) } -----Threads
notify()
notifyAll()
clone() ------- Object cloning
getClass()
finalize()------- Garbage collection
hashCode()
RETURNS A HASH CODE VALUE FOR THE OBJECT.
HASH CODE VALUE OF AN OBJECT IS AN UNIQUE INTEGER VALUE WHICH
IS GENERATED BY THE JVM BASED ON THE ADDRESS OF THE GIVEN
OBJECT.
toString()
RETURNS STRING REPRESENTATION OF THE OBJECT.
STRING REPRESENTATION CONTAINS
FULLY QUALIFIED CLASS NAME
@CHARACTER
HEXADECIMAL VALLUE OF HASHCODE
Equals(anotherobject)
IT COMPARES THE HASHCODE VALUE OF GIVEN 2 OBJECTS
WITH OVERRIDING
package com.OopsPrograms.lib;
System.out.println(s1.hashcode());
System.out.println(s2.hashcode());
System.out.println("----------");
System.out.println(s1.toString());
System.out.println(s2);
System.out.println("----------");
System.out.println(s1.equals(s2));
}
}
Output:
100
100
----------
Overriden String
Overriden String
----------
true
WITHOUT OVERRIDING
package com.OopsPrograms.lib;
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println("----------");
System.out.println(s1.toString());
System.out.println(s2);
System.out.println("----------");
System.out.println(s1.equals(s2));
}
}
OUTPUT:
1365202186
1651191114
----------
com.OopsPrograms.lib.Sample@515f550a
com.OopsPrograms.lib.Sample@626b2d4a
----------
false
STRINGS
STRING VALUE IS A GROUP OF CHARACTERS WHICH IS WRITTEN IN THE
DOUBLE QUOTES.
WE CAN ACCESS THE CHARACTERS or PERFORM ANY OPERATIONS ON THE
STRING ONLY BY USING THE METHODS OF STRING.
INTERNALLY STRING VALUE IS STORED AS A CHARACTER ARRAY BY THE
JVM.
String str=”HELLO”
H E L L O
METHODS OF STRING:
length() : IT RETURNS THE COUNT OF NUMBER OF CHARACTERS PRESENT
IN THE GIVEN STRING.
charAt(index) : IT RETURNS THE CHARACTER AT THE GIVEN INDEX FROM
THE GIVEN STRING.
indexOf(char) : IT RETURNS THE INDEX OF THE GIVEN CHARACTER FROM
THE GIVEN STRING. IT RETURNS NEGATIVE VALUE IF THE CHARACTER
DO NOT EXIST.
indexOf(char, startindex) : IT RETURNS THE INDEX OF THE GIVEN
CHARACTER FROM THE GIVEN STRING BY STARTING THE SEARCH FROM
THE GIVEN STARTINDEX.
equals(string) : IT COMPARES CHARACTERS OF GIVEN TWO STRING &
RETURNS TRUE IF THEY ARE EXACTLY SAME ELSE IT RETURNS FALSE.
equalsignoreCase(string) : IT COMPARES CHARACTERS OF GIVEN TWO
STRINGS BY IGNORING THE CASE & RETURNS TRUE IF THEY ARE
EXACTLY SAME ELSE IT RETURNS FALSE.
substring(strat, no.of chars) : IT CREATES A STRING FROM THE GIVEN
START INDEX WITH GIVEN NO. OF CHARACTERS & RETURNS THE STRING
NOTE: length & length()
package com.OopsPrograms.lib;
String s1="hello";
String s2="Hello";
OUTPUT:
Length of s1 : 5
l
2
3
false
true
el
STRING CLASS:
STRING VALUE IS GROUP OF CHARS WRITTEN WITHIN DOUBLE QUOTES.
IN JAVA STRING IS A CLASS WHICH IS USED TO STORE GROUP OF CHARS
THE STRING OBJECT.
STRING CLASS IS IMMEDIATE SUB-CLASS OF OBJECT CLASS.
STRING CLASS IMPLEMENTS Serializable, Comparable<STRING>, CharSequence
interfaces.
STRING CLASS IS FINAL & IT CANNOT BE INHERITED.
hashCode() OF OBJECT CLASS IS OVERRIDDEN IN STRING CLASS WHICH
RETURNS AN INTEGER VALUE THAT IS GENERATED BASED ON UNICODE
VALUES OF EVERY CHARACTER PRESENT IN GIVEN STRING.
toString() OF OBJECT CLASS IS OVERRIDDEN IN STRING CLASS WHICH
RETURNS THE STRING VALUE PRESENT IN GIVEN STRING OBJECT.
Equals() OF OBJECT CLASS IS OVERRIDDEN IN STRING CLASS WHICH
COMPARES CHARACTERS PRESENT IN GIVEN 2 STRINGS & RETURNS TRUE
IF THEY ARE SAME ELSE RETURNS FALSE
package com.OopsPrograms.lib;
OUTPUT:
69609650
69609650
Hello
Hello
true
STRING OBJECTS ARE CREATED IN SPECIAL MEMORY AREA CALLED STRING
POOL IN HEAP AREA
1. CONSTANT POOL
2. NON CONSTANT POOL
HEAP AREA
STRING POOL
CONSTANT POOL
“hello”
“java”
package com.OopsPrograms.lib;
OUTPUT:
true
true
false
String s1=”hello”;
s1=s1.concat(“java”);
System.out.println(s1);
Output: “hello”
System.out.println("-----StringBuffer-----");
StringBuffer str1=new StringBuffer("hello");
str1.append("java");
System.out.println(str1);
System.out.println("-----StringBuilder-----");
StringBuilder str2=new StringBuilder("hello");
str2.append("java");
System.out.println(str2);
}
}
Output:
-----String-----
hello
-----StringBuffer-----
hellojava
-----StringBuilder-----
hellojava
WRAPPER CLASS
WRAPPER CLASSES ARE USED TO CONVERT PRIMITIVES TO JAVA OBJECT.
AUTOBOXING:
IT IS A MECHANISM OF CONVERTING PRIMITIVES TO JAVA OBJECT
UNBOXING:
IT IS A MECHANISM OF CONVERTING JAVA OBJECT INTO PRIMITIVES
FOR EVERY PRIMITIVE DATATYPE WE HAVE CORRESPONDING WRAPPER CLASS.
PRIMITIVE WRAPPER
DATATYPES CLASS
byte Byte
short Short
int Integer
long Long
double Double
float Float
char Character
boolean Boolean
package com.OopsPrograms.wrapper;
//Unboxing
//Integer i2=new Integer(180);
Integer i2=180;
//int i3=i2.intvalue();
int a1=i2;
System.out.println("Integer :" +i2);
System.out.println("int :" +a1);
}
}
int :100
Integer :100
Integer :180
int :180
EXCEPTION
OBJECT
THROWABLE
Exception
RuntimeException IOException SQLExcep AWTExcep InterruptedExce
tion tion ption
ArithmeticException EOFException
NullPointerException FileNotFoundExc
eption
ClassCastException InterruptIOExcept
IndexOutOfBoundExcepti ion
on
ArrayIndexOutOfBoundE
xception
StringIndexOutOfBoundE
xception
WHAT IS EXCEPTION?
EXCEPTION IS AN UNEXPECTED EVENT WHICH OCCURS AT RUNTIME DUE
TO UNEXPECTED OPERATION PERFORMED BY A SINGLE LINE OF CODE.
WHAT IS EXCEPTION HANDLING?
EXPECTION HANDLING IS WRITING CODE WHICH WILL RECOVER THE
PROGRAM FROM THE EXECUTION AND CONTINUE THE EXECUTION.
ERROR?
ERROR IS AN UNEXPETED EVENT WHICH OCCURS AT RUNTIME DUE TO
HARDWARE or SOFTWARE FAILURE OF THE SYSTEM.
-----------------------------------------------------------------------------------------------------
WHENEVER THERE IS AN EXCEPTION JVM WILL CREATE AN OBJECT OF
CORRESPONDING EXCEPTION CLAS.
JVM WILL PASS THE EXCEPTION OBJECT TO THE METHOD WHICH
CREATED THE EXCEPTION BY USING THROW KEYWORD.
IF THE METHOD IS NOT ABLE TO HANDLE THE EXCEPTION OBJECT, THEN
JVM WILL TERMINATE THE METHOD’S EXECUTION.
IF NO METHODS ARE HANDLING THE EXECUTION OBJECT THEN JVM WILL
CALL DEFAULT EXECPTION HANDLER WHICH WILL HANDLE THE
EXCEPTION OBJECT.
DEFAULT EXCEPTION HANDLER WILL HANDLE THE EXCEPTION AND
PRINTS
1. NAME OF THE EXCEPTION.
2. REASON OF THE EXCEPTION.
3. COMPLETE STACK TRACE.
package com.OopsPrograms.exception;
Output:
1000
Hello
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.OopsPrograms.exception.Example.check(Example.java:5)
at com.OopsPrograms.exception.Example.main(Example.java:11)
HOW TO HANDLE THE EXCEPTION.
BY USING try & catch block
try
{
Risky lines of code
}
catch(ExceptionClass reference)
{
Alternate code
}
package com.OopsPrograms.exception;
}
public static void main(String[] args) {
check(1);
check(0);
check(2);
}
}
Output:
1000
Hello
Handled
500
Hello
try with multiple catch blocks
Exception e= new ArithmeticException();
Exception e2= new ArrayIndexOutOfBoundException();
Note: WITHIN A CATCH BLOCK WE CAN UPCAST UPTO THROWABLE CLASS.
ONE TRY BLOCK CAN HAVE MULTIPLE CATCH BLOCKS.
WE CAN’T WRITE ONLY TRY BLOCK or ONLY CATCH BLOCK.
package com.OopsPrograms.exception;
}
public static void main(String[] args) {
check(11);
check(0);
check(2);
}
}
Output:
90
java.lang.ArrayIndexOutOfBoundsException: Index 11 out of bounds for length 3
at com.OopsPrograms.exception.Handled.check(Handled.java:9)
at com.OopsPrograms.exception.Handled.main(Handled.java:19)
java.lang.ArithmeticException: / by zero
at com.OopsPrograms.exception.Handled.check(Handled.java:6)
at com.OopsPrograms.exception.Handled.main(Handled.java:20)
500
3
MULTIPLE CATCH BLOCKS
package com.OopsPrograms.exception;
}
public static void main(String[] args) {
check(11);
check(0);
check(2);
}
}
Output :
90
ArrayIndex
java.lang.ArrayIndexOutOfBoundsException: Index 11 out of bounds for length 3
at com.OopsPrograms.exception.Handled.check(Handled.java:9)
at com.OopsPrograms.exception.Handled.main(Handled.java:23)
ArithmeticException
java.lang.ArithmeticException: / by zero
at com.OopsPrograms.exception.Handled.check(Handled.java:6)
500
at com.OopsPrograms.exception.Handled.main(Handled.java:24)
3
*****finally block*****
finally block IS EXECUTED IRRESPECTIVE OF OCCURANCE OF EXCEPTIONS.
finally block SHOULD BE WRITTEN AFTER THE catch block.
NOTE: WE CAN WRITE TRY & FINALLY BLOCK BUT WE CANT HANDLE THE
EXCEPTION IN TRY & FINALLY BLOCK
package com.OopsPrograms.exception;
}
public static void main(String[] args) {
check(11);
check(0);
check(2);
}
}
OUTPUT:
90
finally block
ArithmeticException
java.lang.ArithmeticException: / by zero
at com.OopsPrograms.exception.Handled.check(Handled.java:6)
at com.OopsPrograms.exception.Handled.main(Handled.java:27)
finally block
500
finally block
}
public static void main(String[] args) {
check(11);
check(0);
check(2);
}
}
OUTPUT:
90
finally block
java.lang.ArrayIndexOutOfBoundsException: Index 11 out of bounds for length 3
at com.OopsPrograms.exception.Handled.check(Handled.java:24)
at com.OopsPrograms.exception.Handled.main(Handled.java:33)
ArithmeticException
java.lang.ArithmeticException: / by zero
at com.OopsPrograms.exception.Handled.check(Handled.java:6)
at com.OopsPrograms.exception.Handled.main(Handled.java:34)
finally block
1
500
finally block
3
TYPES OF EXCEPTIONS
CHECKED EXCEPTION
UNCHECKED EXCEPTION
CHECKED EXCEPTION
EXCEPTION WHICH ARE CHECKED BY COMPLIER IS KNOWN AS CHECKED
EXCEPTION.
LEAVING RUNTIME EXCEPTION & ALL OF ITS SUB CLASSES ARE BELONGS
TO CHECKED EXCEPTION.
UNCHECKED EXCEPTION:
EXCEPTIONS WHICH ARE NOT CHECKED BY THE COMPLIER IS KNOWN AS
UNCHECKED EXCEPTION.
RUNTIME EXCEPTION & ALL OF ITS SUBCLASSES ARE BELONGS TO
UNCHECKED EXCEPTION.
EXCEPTION PROPAGATION:
PASSING THE EXCEPTION OBJECT FRFOMM CALLED METHOD TO CALLING
METHOD IS KNOWN AS EXCEPTION PROPAGATION.
UNCHECKED EXCEPTIONS WILL BE IMPLICITLY PROPAGATED BY THE JVM.
NOTE: ALL CHECKED EXCEPTIONS WILL BE PROPAGATED BY THE
PROGRAMMER BY USING THROWS KEYWORD.
THROWS KEYWORD:
THROWS KEYWORD IS USED TO PROPAGATE CHECKED EXCEPTIONS
EXPLICITLY BY THE PROGRAMMER.
THROW KEYWORD:
THROW KEYWORD IS USED TO THROW THW EXCEPTION EXPLICITLY BY
THE PROGRAMMER ACCORDING TO THE APPLICATION REQUIREMENTS.
package com.OopsPrograms.exception;
Output:
java.lang.Exception
at com.OopsPrograms.exception.SampleChecked.test(SampleChecked.java:6)
at com.OopsPrograms.exception.SampleChecked.main(SampleChecked.java:10)
Example for checked Exception
------------------------------------------------------------------------------------------------------------------
package com.OopsPrograms.exception;
//Examplpe for Unchecked Exception & throw throws keyword
public class SampleUnchecked {
public static void test()//throws StringIndexOutOfBoundsException
{
String s1="ABC";
System.out.println(s1.charAt(6));
// throw new StringIndexOutOfBoundsException();
}
public static void main(String[] args) {
try {
test();
}
catch(StringIndexOutOfBoundsException a) {
a.printStackTrace();
}
System.out.println("Example for unchecked Exception handled by
programmer");
}
}
Output:
java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1515)
at
com.OopsPrograms.exception.SampleUnchecked.test(SampleUnchecked.java:7)
at
com.OopsPrograms.exception.SampleUnchecked.main(SampleUnchecked.java:12)
Example for unchecked Exception handled by programmer
EXCEPTIONS WHICH IS CREATED BY PROGRAMMER BASED ON
APPLICATION REQUIREMENT IS KNONW AS CUSTOMIZED EXCEPTION.
STEPS TO USE CUSTOMIZED EXCPETION:
CREATE A CLASS WHICH EXTENDS EXCEPTION.
CREATE AN OBJECT OF THAT CLASS BY USING THROW KEYWORD.
HANDLE IT or PROPAGATE IT
package com.OopsPrograms.exception;
class InsufficientBalException extends Exception{
public InsufficientBalException(String msg)//Constructor With Arguments
{
super(msg); //Super Statement
}
}
class Account{
double bal;
public void withdraw(double amt) {
if(amt>=0 && bal>=amt) {
bal=bal-amt;
System.out.println("Withdraw Succesful");
}
else {
try {
throw new InsufficientBalException("Bal Not
Avaliabe");
}
catch(InsufficientBalException a) {
a.printStackTrace();
}
}
}
}
public class CustomizedException {
public static void main(String[] args) {
Account a1=new Account();
a1.withdraw(500);
}
}
Output:
com.OopsPrograms.exception.InsufficientBalException: Bal Not Avaliabe
at
com.OopsPrograms.exception.Account.withdraw(CustomizedException.java:17)
at
com.OopsPrograms.exception.CustomizedException.main(CustomizedException.java:
28)
COLLECTION
package com.OopsPrograms.array;
@Override
public String toString() {
return "Employee [name=" + name + ", empid=" + empid + ", sal=" +
sal + "]";
}
public static void addEmp() {
Employee e1=new Employee("Vinay",101,20000.0);
Employee e2=new Employee("Gautam",102,20000.0);
Employee e3=new Employee("Rupa",103,20000.0);
Employee[] earray= {e1,e2,e3};
for(int i=0;i<=earray.length-1;i++) {
System.out.println(earray[i]);
}
}
Output:
Employee [name=Vinay, empid=101, sal=20000.0]
Employee [name=Gautam, empid=102, sal=20000.0]
Employee [name=Rupa, empid=103, sal=20000.0]
ArrayList(Collection c)
Arraylist(int initialCapacity)
package com.OopsPrograms.array;
import java.util.ArrayList;
}
}
OUTPUT:
Size of arraylist = 7
[10, 10.1, null, a, 10, 10, 100]
10
10.1
null
a
10
10
100
package com.OopsPrograms.array;
import java.util.ArrayList;
public class Example {
// Add Elements
a.add(100);
a.add(25);
a.add('a');
a.add("Vinay");
a.add(1, e); //adds address of reference variable in the 1st
index
a.add(2,"Add element in 2nd index"); //adds element in 3rd index
//Remove Elements
a.remove(3); //removes element of 3rd index
}
}
OUTPUT:
Size of arraylist a :6
[100, com.OopsPrograms.array.Example@5e91993f, Add element in 2nd index, 25,
a, Vinay]
true
false
-----------------------
Size of arraylist a :5
[100, com.OopsPrograms.array.Example@5e91993f, Add element in 2nd index, a,
Vinay]
-----------------------
Size of arraylist a :0
[]
METHODS OF ARRAYLIST:
add(Object ref) : USED TO ADD ONE SPECIFIC OBJECT TO LIST.
add(int index, object ref): USED TO ADD ONE SPECIFIC OBJECT TO SPECIFIED
INDEX OF LIST.
addAll(Collection c): TO ADD COMPLETE COLLECTION TYPE OF LIST.
addAll(int Index, Collection c): TO ADD COMPLETE COLLECTION TYPE TO
SPECIFIED INDEX.
remove(index): USED TO REMOVE ELEMENT BASED ON INDEX.
remove(Object) : USED TO REMOVE ELEMENT BASED ON OBJECT.
removeAll() : USED TO REMOVE COMPLETE ELEMENT FROM LIST.
get(index): USED TO RETRIEVE ONE ELEMENT FROM LIST.
clear() : USED TO REMOVE COMPLETE ELEMENTS FROM LIST.
contains(Object) : IT CHECK THE GIVEN ELEMENT PRESENT OR NOT &
RETURN TRUE/FALSE.
containsAll(Collection c) : IT CHECK THE COMPLETE LIST PRESENT or NOT &
RETURN TRUE/FALSE.
size(): USED TO FIND THE SIZE OF LIST.
isEmpty() : CHECK THE LIST IS EMPTY or NOT & RETURNS TRUE/FALSE
ADD USER DEFINED ELEMENTS TO ARRAYS
package com.OopsPrograms.array;
import java.util.ArrayList;
class Employees{
String name;
int id;
double sal;
public Employees(String name,int id, double sal) {
super();
this.name=name;
this.id=id;
this.sal=sal;
}
public String toString() {
return "Empployee Details [name: "+name+ ", id: "+id+ ", sal:
"+sal+"]";
}
}
public class UserdefinedElements {
public static void main(String[] args) {
// Create Employee Objects
Employees e1=new Employees("Vinay",101, 10000.0);
Employees e2=new Employees("GAlok",102, 10000.0);
Employees e3=new Employees("VinayR",104, 10000.0);
Employees e4=new Employees("Irshad",103, 10000.0);
Output:
Empployee Details [name: Vinay, id: 101, sal: 10000.0]
Empployee Details [name: GAlok, id: 102, sal: 10000.0]
Empployee Details [name: Vinay, id: 101, sal: 10000.0]
Empployee Details [name: VinayR, id: 104, sal: 10000.0]
Empployee Details [name: Irshad, id: 103, sal: 10000.0]
TRY TO CREATE CUSTOMER OBJECT ADD TO ARRAYLIST
DATA MEMBERS: CUSTOMERNAME, CUSTOMERID, CUSTOMER PASSWORD
CHECK YOUR OBJECT PRESENT IN ARRAYLIST.
VECTOR:
VECTOR CAN STORE DUPLICATES.
VECTOR HAS INDEX
VECTOR SUPPORT MULTIPLE NULL VALUES.
VECTOR PRESERVE INSERTION ORDER.
UNDERLYING DATA STRUCTURE OF VECTOR IS RESIZABLE ARRAY.
THE INCREASE OF CAPACITY CAN BE CONTROLED BY THE PROGRAMMER
BY SPECIFYING THE CAPACITY INCREMENT IN THE CONSTRUCTOR
CONSTRUCTORS OF VECTOR:
Vector(): CONSTRUCTS AN EMPTY VECTOR SO THAT ITS INTERNAL DATA
ARRAY HAS SIZE 10 & ITS STANDARD CAPACITY INCREMENT IS ZERO.
Vector(collection c): CONSTRUCT A VECTOR CONTAINING THE ELEMENTS OF
THE SPECIFIED COLLECTION.
Vector(int initialcapacity): CONSTRUCT AN EMPTY VECTOR WITH THE
SPECIFIED INITIAL CAPACITY & WITH ITS CAPACITY INCREMENT EQUAL
TO ZERO.
Vector(int initialCapacity, int capacity increment): CONSTRUCTS AN EMPTY
VECTOR WITH THE SPECIFIED INITIAL CAPACITY & CAPACITY
INCREMENT.
------------------------------------------------------------------------------------------------
VECTOR IMPLEMENTATION IS SYNCHRONIZED
VECTOR IS THREAD SAFE.
IF MULTIPLE THREADS ACCESS AN VECTOR CONCURRENTLY, & AT LEAST
ONE OF THE THREADS MODIFIES THE VECTOR STRUCTURALLY, IT WILL
NOT IMPACT ON OTHER THREADS
package com.OopsPrograms.array;
import java.util.Vector;
class Student{
String name;
double marks;
long phoneno;
public Student(String name,double marks,long phoneno) {
this.name=name;
this.marks=marks;
this.phoneno=phoneno;
}
public String toString(){
return "Student Details [Student Name : " +name+ ",Student Marks
: "+marks+ ", Student Phoneno: "+phoneno+"]";
}
}
HASHSET:
HASHSET DO NOT STORE DUPLICATES.
HASHSET DO NOT HAVE INDEX.
HASHSET SUPPORT TO STORE ONLY ONE NULL VALUES.
SET DON NOT PRESERVE INSERTION ORDER.
UNDERLYING DATASTRUCTURE OF HASHSET IS HASH TABLE.
import java.util.LinkedHashSet;
Output:
[10, 20, 40, null]
10
20
40
null
package com.OopsPrograms.array;
import java.util.Vector;
class Student{
String name;
double marks;
long phoneno;
public Student(String name,double marks,long phoneno) {
this.name=name;
this.marks=marks;
this.phoneno=phoneno;
}
public String toString(){
return "Student Details [Student Name : " +name+ ",Student Marks
: "+marks+ ", Student Phoneno: "+phoneno+"]";
}
}
Output:
Student Details [Student Name : Vinay,Student Marks : 70.0, Student Phoneno:
7204469689]
Student Details [Student Name : Rupa,Student Marks : 80.0, Student Phoneno:
984569689]
Student Details [Student Name : Dhina,Student Marks : 90.0, Student Phoneno:
72044694215]
DIFFERENCE BETWEEN ARRAYLIST & VECTOR?
ARRAYLIST VECTOR
ITS NOT THREAD SAFE ITS THREAD SAFE
NOT SYNCHRONIZED SYNCHRONIZED
package com.OopsPrograms.array;
import java.util.ArrayList;
import java.util.HashSet;
}
}
OUTPUT:
[1, 3, 12, 4, 1, 12, 20]
[1, 3, 4, 20, 12]
RETRIVE THE 3RD ELEMENT FROMM HASHSET
package com.OopsPrograms.array;
import java.util.ArrayList;
import java.util.HashSet;
}
}
Output:
[null, 1, 20, 5, 30]
5
SORTING OF THE ELEMENTS USING COMPARETO METHOD( CompareTo() )
package com.OopsPrograms.array;
import java.util.ArrayList;
//import java.util.Collection;
import java.util.Collections;
//import java.util.HashSet;
Collections.sort(a1);
System.out.println("After Sorting: "+a1);
Collections.sort(a1,Collections.reverseOrder());
System.out.println("Reverse Orders: "+a1);
}
}
Output:
Before Sorting: [25, 20, 5, 1245, 1, -20, 42, 20]
After Sorting: [-20, 1, 5, 20, 20, 25, 42, 1245]
Reverse Orders: [1245, 42, 25, 20, 20, 5, 1, -20]
package com.OopsPrograms.array;
import java.util.ArrayList;
//import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
Collections.sort(a1);
System.out.println("After Sorting: "+a1);
System.out.println("--------------");
Collections.sort(a1,Collections.reverseOrder());
System.out.println("Reverse Orders: "+a1);
System.out.println("--------------");
HashSet<Integer> h1=new HashSet<Integer>(a1);
System.out.println("Removing Duplicates Using HashSet: "+h1);
System.out.println("--------------");
Collections.sort(a1,Collections.reverseOrder());
System.out.println("Reverse Orders of : "+h1);
}
}
Output:
Before Sorting: [25, 20, 5, 1245, 1, -20, 42, 20]
--------------
After Sorting: [-20, 1, 5, 20, 20, 25, 42, 1245]
--------------
Reverse Orders: [1245, 42, 25, 20, 20, 5, 1, -20]
--------------
Removing Duplicates Using HashSet: [1, -20, 20, 5, 25, 42, 1245]
--------------
Reverse Orders of : [1, -20, 20, 5, 25, 42, 1245]
COLLECTION SORT.
Sort(List <i> )
Sort(List <i> , Comparator c)
<<Comparator>> ----- > compare(obj1, obj2)
Collections.sort(a, Collections.reverseorder( ) );
TREESET:
IT IS A NON-LINEAR DATA STRUCTURE WHERE DATA IS STORED
ACCORDING TO SOME RELATION.
TREE CONSISTS OF NODES & LINKS.
NODE CONSISTS OF DATA & ADDRESS OF OTHER DATA.
THE LINK REPRESENTS THE RELATION BETWEEN ONE NODES TO
ANOTHER NODE.
TREESET DO NOT STORE DUPLICATES.
TREESET DO NOT HAVE INDEX
TREESET DO NOT SUPPORT TO STORE NULL VALUES (NOOT EVEN ONE
NULL VALUE ) IF YOU TRY TO ADD NULL VALUES THE JVM WILL
THROWS NULL POINTER EXCEPTION.
TREESET DO NOT ALLOW HETEROGENOUS DATA.
TREESET DO NOT PRESERVE INSERTION ORDER.
UNDERLYING DATA STRUCTURE OF TREESET IS “ BINARY SEARCH
TREE”.
TREE SET CONSTRUCTOR:
1. Default Natural Sorting.
TreeSet t=new TreeSet( );
2. Camparator c.
TreeSet t= new TreeSet(comparator c);
3. Collection object
TreeSet t=new TreeSet(collection c);
4. SortedSet s
TreeSet t=new TreeSet(sortedset s);
package com.OopsPrograms.array;
import java.util.TreeSet;
t2.add("Vinay");
t2.add("Abhi");
t2.add("Zoo");
t2.add("12345678");
t2.add("raj");
t2.add("Raj");
t2.add("123as45678");
t2.add("xy12345678");
t2.add("12345678asd");
System.out.println(t1);
System.out.println("--------------");
System.out.println(t2);
}
}
Output:
[2, 3, 4, 5, 6, 10]
--------------
[12345678, 12345678asd, 123as45678, Abhi, Raj, Vinay, Zoo, raj, xy12345678
CUSTOMIZED & RETRIVING
package com.OopsPrograms.array;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
}
public class TreeCustomized
{
public static void main(String[] args)
{
Customized c=new Customized();
TreeSet<Integer> t=new TreeSet<Integer>(c);
t.add(20);
t.add(-20);
t.add(2);
t.add(5);
t.add(7);
t.add(9);
t.add(1);
System.out.println(t);
Output:
[20, 9, 7, 5, 2, 1, -20]
20
9
7
5
2
1
-20
FILE HANDLING
FILE HANDLING IS USED TO READ & WRITE THE DATA TO A FILE.
FILE OPERATIONS IN JAVA
THE FOLLOWING OPERATIONS CAN BE PERFORMED ON A FILE IN JAVA:
CREATE A FILE
READ FROM A FILE
WRITE TO A FILE
DELETE A FILE
CREATE FILE:
package com.OopsPrograms.filehandling;
import java.io.File;
import java.io.IOException;
WRITE TO FILE:
BY USING FileWritter CLASS WE CAN WRITE DATA TO FILE.
EXAMPLE: FileWritter write=new FileWritter(obj);
write() IS USED TO WRITE THE DATA TO FILE.
close() IS USED TO THE FILE, ADTER CLASE WE CANT WRITE ANYTHING TO
A FILE.
OR WE CAN USE flush();
READ FROM A FILE
TO READ THE DATA FROM FILE WE CAN USE SAME SCANNER CLASS &
SUPPLY IT TO A FILE OBJECT
EXAMPLE: Scanner sc=new Scanner(File obj);
While(sc.hasNext())
{
String line=sc.nextLine();
System.out.println(line);
}
DELETE A FILE:
Delete() : TO DELETE A FILE IN JAVA WE CAN USE FILE OBJECT DELETE
METHOD.
IT DELETES A DIRECTORY MENTIONED IN THE PATH ONLY IF THE
DIRECTORY IS EMPTY.
if(obj.delete())
{
System.out.print;n(“my file is deleted”);
}
else
{
System.out.println();
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
e.printStackTrace();
}
Scanner sc=new Scanner(System.in);
System.out.println("Enter your message");
String msg=sc.nextLine();
try
{
write.write(msg);
}
catch (IOException e)
{
e.printStackTrace();
}
try {
write.close();
}
catch (IOException e)
{
e.printStackTrace();
}
// Read file
Scanner sc1;
try {
sc1 = new Scanner(obj);
while(sc1.hasNext())
{
String lines=sc1.nextLine();
System.out.println(lines);
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
STREAMS IN JAVA:
IN JAVA, A SEQUENCE OF DATA IS KNOWN AS A STREAM.
THIS CONCEPT IS USED TOPERFORM INOUT & OUTPUT OPERATIONS ON A
FILE.
THERE ARE TWO TYPES OF STREAM
INPUT STREAM
FileInputStream
ObjectInputStream
OUTPUT STREAM
FileOutputStream
ObjectOutputStream
SERIALIZATION:
THE PROCESS OF WRITING STATE OF OBJECT TO A FILE IS CALLED
SERIALIZATION.
IT IS THE PROCESS OF CONVERTING AN OBJECT FROM JAVA SUPPORTED
FORM TO FILE SUPPORTED FORM OR NETWORK SUPPORTED FORM.
BY USING FileOutPutStream & ObjectOutPutStream classes we can achive
Serialization.
Example :
FileOutPutStream fos=new FileOutPutStream (“myfile.txt”);
Oos.writeObject(ref);
className ref=(className)ois.readObject();
System.out.println(ref.a+” , “+ref.b);
DE-SERIALIZATION:
THE PROCESS OF READING STATE OF OBJECT FROM A FILE IS CALLED DE-
SERIALIZATION.
IT IS THE PROCESS OF CONVERTING AN OBJECT FROM FILE SUPPORTED
FORM or NETWORK SUPPORTED FORM IN TO JAVA SUPPORTED FORM.
BY USING FileInPutStream & ObjectInPutStream CLASSES WE CAN ACHIVE DE-
SERIALIZATION.
EXAMPLE:
FileInPutStream fis=new FileInPutStream(“myfile.txt”);
ObjectInPutStream ois=new ObjectInPutStream(fis);
className ref=(className)ois.readObject();
WE CAN SERIALIZE ONLY SERIALIZABLE OBJECT.
TO ACHIVE SERIALIZATION
CLASS MUST IMPLEMENTS SERILIZABLE INTERFACE
Serializable Interface: SERIALIZABLE INTERFACE PRESENT IN JAVA.IO
PACKAGE IT DOESN’T CONTAIN ANY METHODS, IT IS KNOWN AS MARKER
INTERFACE.
IF WE SERIALIZE NON-SERIALIZABE OBJECT THEN WE WILL GET
java.io.NotSerializableException.
TRANSI