Stucor CS3391-ND
Stucor CS3391-ND
Main Program
Global Data
Procedure
Procedure Procedure
2(Calculation)
1(Reading) 3(Printing)
Local Data
Local Local
Data Data
Drawback of POP
Procedural languages are difficult to relate with the real world objects.
Procedural codes are very difficult to maintain, if the code grows larger.
Procedural languages do not have automatic memory management as like in Java.
Hence, it makes the programmer to concern more about the memory
management of the program.
The data, which is used in procedural languages, are exposed to the whole
Procedure Oriented
Object Oriented Programming
Programming
Divided Into In POP, program is divided into In OOP, program is divided into
smallparts called functions. partscalled objects.
In POP, Importance is not given In OOP, Importance is given to the
Importance to data but to functions as well data rather than procedures or
as sequence of actions to be functions because it works as a
done. real world.
Approach POP follows Top OOP follows Bottom
Down approach. Up approach.
Access POP does not have any OOP has access
Specifier accessspecifier. specifiers named
s Public, Private,
Protected, etc.
In POP, Data can move freely In OOP, objects can move and
Data Moving fromfunction to function in the communicate with each
system. other throughmember functions.
Expansion To add new data and function OOP provides an easy way to
in POPis not so easy. add newdata and function.
In POP, Most function uses In OOP, data cannot move easily
Data Access Global data for sharing that from function to function, it can
can be accessed freely from be kept public or private so we
function to function in the can control the access of data.
system.
Data Hiding POP does not have OOP provides Data Hiding
any proper wayfor hiding data so provides more security.
so it
is less secure.
In POP, Overloading is In OOP, overloading is possible in
Overloading not possible. the form of Function Overloading
and Operator Overloading.
Examples Examples of POP are: C,VB, Examples of OOP are: C++, JAVA,
FORTRAN, and Pascal. VB.NET, C#.NET.
OOPs simplify the software development and maintenance by providing some concepts:
1. Class:
A class is a collection of similar objects and it contains data and methods that
operate on that data. In other words ― Class is a blueprint or template for a set
of objects that share a common structure and a common behavior. It is a logical
entity.
A class in Java can contain:
fields
methods
constructors
blocks
nested class and interface
2. Object:
Any entity that has state and behavior is known as an object. Object is an instance of
a class.
For example: chair, pen, table, keyboard, bike etc. It can be physical and logical.
The object of a class can be created by using the new keyword in Java
Programminglanguage.
3. Encapsulation:
Wrapping of data and method together into a single unit is known as
Encapsulation.
For example: capsule, it is wrapped with different medicines.
In OOP, data and methods operating on that data are combined together
to form a single unit, this is referred to as a Class.
Encapsulation is the mechanism that binds together code and the data it
manipulates and keeps both safe from outside interference and misuse.
The insulation of the data from direct access by the program is called
―data hiding. Since the data stored in an object cannot be accessed directly,
the data is safe i.e.,the data is unknown to other methods and objects.
4. Polymorphism:
Polymorphism is a concept by which we can perform a single action by
different ways. It is the ability of an object to take more than one form.
The word "poly" means many and "morphs" means forms. So polymorphism
meansmany forms.
An operation may exhibit different behaviors in different instances. The
behavior depends on the data types used in the operation.
For Example:- Suppose if you are in a classroom that time you behave like a
student, when you are in the market at that time you behave like a customer,
when you at your home at that time you behave like a son or daughter, Here
one person present in different-different behaviors.
Two types of polymorphism:
1. Compile time polymorphism / Method Overloading: - In this method,
object is bound to the function call at the compile time itself.
2. Runtime polymorphism / Method Overriding: - In this method, object is
bound to the function call only at the run time.
5. Abstraction:
Abstraction refers to the act of representing essential features without
including the background details or explanations. i.e., Abstraction means
hiding lower-level details and exposing only the essential and relevant
details to the users.
For Example: - Consider an ATM Machine; All are performing operations on the
ATM machine like cash withdrawal, money transfer, retrieve mini- statement…
etc. but we can't know internal details about ATM.
Abstraction provides advantage of code reuse.
Abstraction enables program open for extension.
In java, abstract classes and interfaces are used to achieve Abstraction.
6. Inheritance:
Inheritance in java is a mechanism in which one object acquires all the
propertiesand behaviors of another object.
The idea behind inheritance in java is that we can create new classes that are
built upon existing classes. When we inherit from an existing class, we can
reuse methods and fields of parent class, and we can add new methods and
fields also.
Inheritance represents the IS-A relationship, also known as parent-
child
relationship.
For example:- In a child and parent relationship, all the properties of a father
areinherited by his son.
Syntax of Java Inheritance
class Subclass-name extends Superclass-name
{
//methods and fields
}
7. Message Passing:
Message Communication:
Objects interact and communicate with each other by sending messages to
eachother. This information is passed along with the message as parameters.
1. Object Oriented:
Java programming is pure object-oriented programming language. Like C++,
Javaprovides most of the object oriented features.
Though C++ is also an object oriented language, we can write programs in C++
without aclass but it is not possible to write a Java program without classes.
Example: Printing “Hello” Message.
Java – No programs without classes and
C++ ( can be without class)
objects
With Class: With class:
#include<iostream.h> import java.io.*;
class display { class Hello {
public: public static
void disp() void
{ main(String
cout<<”Hello!”; args[])
} {
}; System.out.pri
ntln(“Hello!”);
main()
}
{
}
display
d;
Without class
d.disp(); is not possible
}
2. Simple:
Java is Easy to write and more readable and eye catching.
Most of the concepts are drew from C++ thus making Java learning simpler.
3. Secure :
Since Java is intended to be used in networked/distributed environments, lot of
emphasishas been placed on security.
Java provides a secure means of creating Internet applications and to access web
applications.
Java enables the construction of secured, virus-free, tamper-free system.
4. Platform Independent:
Unlike C, C++, when Java program is compiled, it is not compiled into platform-specific
machine code, rather it is converted into platform independent code called bytecode.
The Java bytecodes are not specific to any processor. They can be executed in
anycomputer without any error.
Because of the bytecode, Java is called as Platform Independent.
5. Robust:
Java encourages error-free programming by being strictly typed and performing run-
time checks.
6. Portable:
Java bytecode can be distributed over the web and interpreted by Java Virtual
Machine (JVM)
Java programs can run on any platform (Linux, Window, Mac)
Java programs can be transferred over world wide web (e.g applets)
7. Architecture Neutral:
Java is not tied to a specific machine or operating system architecture.
Machine Independent i.e Java is independent of hardware.
Bytecode instructions are designed to be both easy to interpret on any machine and
easilytranslated into native machine code.
11. Multithreaded:
Java provides integrated support for multithreaded programming.
Using multithreading capability, we can write programs that can do many tasks
simultaneously.
The benefits of multithreading are better responsiveness and real-time behavior.
12. Distributed:
Java is designed for the distributed environment for the Internet because it handles
TCP/IP protocols.
Java programs can be transmit and run over internet.
1. BYTECODE:
Byte code is an intermediate code generated from the source code by java compiler
and it is platform independent.
2. Applet programs:
Applets are small Java programs developed for Internet applications. An
applet located in distant computer can be downloaded via Internet and executed
on a local computer using Java capable browser. The Java applets can
also be executed in the command line using appletviewer, which is part of the
JDK.
Of the above Sections shown in the figure, the Main Method class is Essential part,
Documentation Section is a suggested part and all the other parts are optional.
Documentation Section
It Comprises a Set of comment lines giving the name of the program, the authorand
other details.
Package Statement
The first statement allowed in a Java file is a package statement.
It declares the package name and informs the compiler that the classes defined
belong to this package.
Example :
package student;
package basepackage.subpackage.class;
It is an optional declaration.
Import Statements
The statement instructs the interpreter to load a class contained in a particular
package.
Example :
import student.test;
Where, student is the package and test is the class.
Interface Statements
An interface is similar to classes which consist of group of method declaration.
Like classes, interfaces contain methods and variable.
To link the interface to our program, the keyword implements is used.
Example:
public class xx extends Applet implements ActionListener
where, xx – class name (subclass of Applet)Applet – Base class name
ActionListener – interface Extends & implements - keywords
It is used when we want to implement the feature of Multiple
Inheritance in Java
It is an optional declaration.
Class Definitions
A Java Program can have any number of class declarations.
About Java programs, it is very important to keep in mind the following points.
Case Sensitivity - Java is case sensitive, which means identifier Hello and hellowould
have different meaning in Java.
Class Names - For all class names the first letter should be in Upper Case.
If several words are used to form a name of the class, each inner word's first letter should
be in Upper Case.
Example class MyFirstJavaClass
Method Names - All method names should start with a Lower Case letter.
If several words are used to form the name of the method, then each inner word's first
letter should be in Upper Case.
Example public void myMethodName()
Program File Name - Name of the program file should exactly match the classname.
When saving the file, you should save it using the class name (Remember Java is case
sensitive) and append '.java' to the end of the name (if the file name and theclass name do
not match your program will not compile).
Example : Assume 'MyFirstJavaProgram' is the class name. Then the file shouldbe saved as
'MyFirstJavaProgram.java'
public static void main(String args[]) - Java program processing starts from the
main() method which is a mandatory part of every Java program.
At compile time, java file is compiled by Java Compiler (It does not interact with
OS) andconverts the java code into bytecode.
Class Loader : is the subsystem of JVM that is used to load class files.
Bytecode Verifier : checks the code fragments for illegal code that can violate access
right to objects
Interpreter read bytecode stream then execute the instructions.
:
Example 1: A First Java Program:
Program Explanation:
public is the access specifier, class is a keyword and HelloWorld is the class name.
{ indicates the start of program block and } indicates the end of the program block.
System.out.println() – is the output statement to print some message on the screen.
Here, System is a predefined class that provides access to the system, out is the output
stream that is connected to the console and println() is method to display the given
string.
Example 2: A Second Java Program:
Output:
Enter a Number: 25
The value of 25 * 2 = 50
Data type is used to allocate sufficient memory space for the data. Data types
specify the different sizes and values that can be stored in the variable.
Java is a strongly Typed Language.
Definition: strongly Typed Language:
Java is a strongly typed programming language because every variable must be declared
with a data type. A variable cannot start off life without knowing the range of values it can
hold, and once it is declared, the data type of the variable cannot change.
1. Primitive Types:
Primitive data types are those whose variables allow us to store only one value and
neverallow storing multiple values of same type. This is a data type whose variable
can hold maximum one value at a time.
There are eight primitive types in Java:
Integer Types:
1. int
2. short
3. lomg
4. byte
Floating-point Types:
5. float
6. double
Others:
7. char
8. Boolean
Integer Types:
The integer types are form numbers without fractional parts. Negative values are
allowed.Java provides the four integer types shown below:
Storage Default
Type Range Example
Requirement Value
-2,147,483,648(-2^31)
int a = 100000,
int 4 bytes to 0
int b = -200000
2,147,483,647 (2^31-1)
short s = 10000,
short 2 bytes -32,768 (-2^15) to 32,767 (2^15-1) 0
short r = -20000
-9,223,372,036,854,775,808 (-2^63)
long a = 100000L,
long 8 bytes to 0L
int b = -200000L
9,223,372,036,854,775,808 (2^63-1)
byte a = 100 ,
byte 1 byte -128 (-2^7) to 127 (2^7-1) 0
byte b = -50
Floating-point Types:
The floating-point types denote numbers with fractional parts. The
two floating-pointtypes are shown below:
Storage Default
Type Range Example
Requirement Value
Approximately ±3.40282347E+38F
float 4 bytes float f1 =234.5f 0.0f
(6-7 significant decimal digits)
Approximately
double
double 8 bytes ±1.79769313486231570E+308 0.0d
(15 significant decimal digits)
d1
char: = 123.4
char data type is a single 16-bit Unicode character.
Minimum value is '\u0000' (or 0).
Maximum value is '\uffff' (or 65,535 inclusive).
Char data type is used to store any character.
Example: char letterA ='A'
boolean:
boolean data type represents one bit of information.
There are only two possible values: true and false.
This data type is used for simple flags that track true/false conditions.
Default value is false.
Example: boolean one = true
compatible type.
These are the data type whose variable can hold more than one value of similar
type.
The value of a reference type variable, in contrast to that of a primitive type,
is a reference to (an address of) the value or set of values represented by
the variable.
Example
int a[] = {10,20,30}; // valid
int b[] = {100, 'A', "ABC"}; // invalid
Animal animal = new Animal("giraffe"); //Object
Initializing Variables:
After the declaration of a variable, it must be initialized by means of assignment
statement.
It is not possible to use the values of uninitialized variables.
int months;
months=1;
2. Declare and
initialize on the same
line:
Syntax: Datatype variablename=value;
int months=12;
Dynamic Initialization of a Variable:
Java allows variables to be initialized dynamically using any valid expression at the
timethe variable is declared.
class FindRemainer
{
public static void main(String arg[]) {int num=5,den=2;
int rem=num%den; System.out.println(―Remainder is ―+rem);
}
}
Output:
Remainder is 1
In the above program there are three variables num, den and rem. num and den ate
initialized by constants whereas rem is initialized dynamically by the modulo division
operation on num and den.
Access modifiers cannot be Access modifiers can be used Access modifiers can be
used for local variables. forinstance variables. used for class variables.
Program Explanation:
Class name: area
Method names: calc() and
main()
Local variables: areas
(accessed only in the
particular method)
Instance variables: length and breadth (accessed only through the object‘s method)
Static variable: accessed anywhere in the program, without object reference
1.7: ARRAYS
Definition:
An array is a collection of similar type of elements which has contiguous
memory location.
Java array is an object which contains elements of a similar data type.
Additionally, The elements of an array are stored in a contiguous memory location.
It is a data structure where we store similar elements. We can store only a fixed
DOWNLOADED FROM STUCOR
set of elements in a Java array.
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 25
Advantage of 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 Array:
Size Limit: We can store only fixed size of elements in the array. It doesn't growits
size at runtime.
Types of Array:
There are two types of array.
1. One-Dimensional Arrays
2. Multidimensional Arrays
1. One-Dimensional Array:
Creating an array:
Three steps to create an array:
1. Declaration of the array
2. Instantiation of the array
3. Initialization of arrays
Example:
int[] floppy; (or) int []floppy (or) int floppy[];
Definition:
Allocating memory spaces for the declared array in memory (RAM) is called as
Instantiation of an array.
Syntax:
arrayRefVar=new datatype[size];
3. Initialization of arrays:Definition:
Storing the values in the array element is called as Initialization of arrays.
Example:
floppy[0]=20;
Example 1:
int regno[]={101,102,103,104,105,106};
int reg[]=regno;
ARRAY LENGTH:
The variable length can identify the length of array in Java. To find the number of
elements of an array, use array.length.
Example1:
int regno[10]; len1=regno.length;
Example 2:
for(int i=0;i<reno.length;i++)
System.out.println(regno[i]);
Following picture represents array myList. Here, myList holds ten double values and
the indicesare from 0 to 9.
class Array
{
public static void main(String[] args)
{
int month_days[];
month_days=new int[12];
month_days[0]=31;
month_days[1]=28;
month_days[2]=31;
month_days[3]=30;
month_days[4]=31;
month_days[5]=30;
month_days[6]=31;
month_days[7]=31;
month_days[8]=30;
month_days[9]=31;
month_days[10]=30;
month_days[11]=31;
System.out.println(“April
has ”+month_days[3]+ “
days.”);
}
}
DOWNLOADED FROM STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 28
Output:
max = myList[0];
for (int i = 1; i < myList.length; i++)
{
if (myList[i] > max)
max = myList[i];
}
System.out.println("Max is " + max);
}
}
Output:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
2. Multidimensional Arrays:
Definition:
Multidimensional arrays are arrays of arrays. It is an array which uses more than
one index to access array elements. In multidimensional arrays, data is stored in
row and column based index (also known as matrix form).
int[][] arr=new int[3][3]; //3 row and 3 column - internally this matrix is implemented as arrays of arrays of int.
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
arr[2][0]=7;
arr[2][1]=8;
arr[2][2]=9;
class twoDarray
{
public static void main(String args[])
{
int array1[][]=new int[4][5];// declares an 2D array.
int array2[][]={{1,2,3},{2,4,5},{4,4,5}}; //declaring and initializing 2D arrayint i,j,k=0;
// printing 2D array2
System.out.println("-------Array 2------- ");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
System.out.print(array2[i][j]+
}
System.out.println();
}
}
}
Output:
-------------Array1------------
01234
56789
10 11 12 13 14
15 16 17 18 19
-------------Array2------------
123
245
445
It means that, when we allocate memory for a multidimensional array, we need to only
specify the memory for the first (leftmost) dimension. We can allocate the remaining
dimensions separately with different sizes.
class twoDarray
{
public static void main(String args[])
{
int array1[][]=new int[4][]; // declares an 2D array.
array1[0]=new int[1];
array1[1]=new
int[2];
array1[2]=new int[3];
array1[3]=new
int[4]; int i,j,k=0;
}
System.out.println();
}
}
}
Output:
0
12
345
6789
1.8: OPERATORS
1. class OperatorExample
2. {
3. public static void main(String args[])
4. {
5. int x=10;
6. System.out.println(x++); //10 (11)
7. System.out.println(++x); //12
8. System.out.println(x--); //12 (11)
9. System.out.println(--x); //108.
10.}
11.}
Output:
10
12
12
10
1. class OperatorExample
2. {
3. public static void main(String args[])
4. {
5. int a=10;
6. int b=10;
7. System.out.println(a++ + ++a); //10+12=22
8. System.out.println(b++ + b++); //10+11=21 7.
9. }
10. }
Output:
22
21
Output:
-11
9
False
true
A binary or
ternary
operator
DOWNLOADED
appears
FROM STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 34
If the value already exists in the variable it is overwritten by the assignment operator
(=).
Output:
14
16
Output: 21
3. Relational Operators
Relational operators in Java are used to compare 2 or more objects. Java provides
sixrelational operators: Assume variable A holds 10 and variable B holds 20, then:
Checks if the value of left operand is greater than the value of (A > B) is not
>
right operand, if yes then condition becomes true. true.
Checks if the value of left operand is less than the value ofright
< (A < B) is true.
operand, if yes then condition becomes true.
Checks if the value of left operand is greater than or equal tothe (A >= B) is not
>= value of right operand, if yes then condition becomes true. true.
Example:
public RelationalOperatorsDemo( )
{
int x = 10, y = 5;
System.out.println("x > y : "+(x > y));
System.out.println("x < y : "+(x < y));
System.out.println("x >= y : "+(x >= y));
System.out.println("x <= y : "+(x <= y));
System.out.println("x == y : "+(x == y));
System.out.println("x != y : "+(x != y));
Output:
$java RelationalOperatorsDemo
x > y : true
x < y : false
x >= y :
true
x <= y : false
x == y :
false x != y :
true
4. Logical
Operators
Logical operators return a true or false value based on the state of the Variables. Given
that x and y represent boolean expressions, the x &boolean
y logicalxoperators
|y are defined
in the
x Table below.y !x x && y x || y x^y
true true false true true False
true false false false true true
false true true false true true
false false true false false false
Example:
public class LogicalOperatorsDemo
{
public LogicalOperatorsDemo()
{
boolean x = true;
boolean y = false;
System.out.println("x & y : " + (x & y));
System.out.println("x && y : " + (x && y));
System.out.println("x | y : " + (x | y));
System.out.println("x || y: " + (x || y));
System.out.println("x ^ y : " + (x ^ y));
System.out.println("!x : " + (!x));
}
public static void main(String args[])
{
new LogicalOperatorsDemo();
}
}
Output:
$java LogicalOperatorsDemo
x & y : false
x && y : false
x | y : true
x || y: true
x^y:
true
!x : false
5
.
B
i
t
A B ~A wA & B A | B A^B
i
1 1 0 s 1 1 0
1 0 0 e 0 1 1
0 1 1 O 0 1 1
p
0 0 1 e 0 0 0
r
public class Test a
t
{
o
public static void main(String args[])
r
{ s
int a = 60; /* 60 = 0011 1100 */
Javaint b = 13;Bit/*wise
provides 13 =operators
0000 1101 to */int c = 0; the contents of variables at the bit level.
manipulate
The cresult
= a & b; /* 12 = 0000
of applying 1100
bitwise */
operators between two corresponding bits in the
System.out.println("a
operandsis & b =below.
shown in the Table " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000
*/
System.out.println("a << 2 = " + c );
c = a >> 2; /* 215 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 215 = 0000 1111 */
Output:
$java Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 =
240
a >> 2
= 15
a >>> 2 =
15
6.
Compou
nd
Assignm
ent
operator
s
Output:
13
9
18
9
7. Conditional Operators
The Conditional operator is the only ternary (operator takes three arguments)
operator in Java. The operator evaluates the first argument and, if true, evaluates the
second argument.
If the first argument evaluates to false, then the third argument is evaluated. The
conditional operator is the expression equivalent of the if-else statement.
The conditional expression can be nested and the conditional operator associates from
right to left: (a?b?c?d:e:f:g) evaluates as (a?(b?(c?d:e):f):g)
Example:
public TernaryOperatorsDemo() {
int x = 10, y = 12, z = 0;
z = x > y ? x : y;
System.out.println("z : " + z);
Output:
$java TernaryOperatorsDemo
z : 12
8. instanceof Operator:
This operator is used only for object reference variables. The operator checks whether
the object is of a particular type(class type or interface type). instanceof operator is
written as:
( Object reference variable ) instanceof (class/interface type)
If the object referred by the variable on the left side of the operator passes the IS-A
check for the class/interface type on the right side, then the result will be true.
Following is the
Example:
public class Test
{
public static void main(String args[])
{
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println( result );
}
}
OPERATOR PRECEDENCE:
The order in which operators are applied is known as precedence. Operators with a higher
precedence are applied before operators with a lower precedence.
The operator precedence order of Java is shown below. Operators at the top of the table
are applied before operators lower down in the table.
If two operators have the same precedence, they are applied in the order they appear in a
statement. That is, from left to right. You can use parentheses to override the default
precedence.
Example:
First (5 * 3) is evaluated and the result is added to 4 giving the Final Result value as 19.
Note that ‗*‘ takes higher precedence than ‗+‘ according to chart shown above. This kindof
precedence of one operator over another applies to all the operators.
Java Control statements control the order of execution in a java program, based on data
values and conditional logic.
There are two types of decision making statements in Java. They are:
if statements
if-else statements
nested if statements
if-else if-else statements
switch statements
if Statement:
An if statement consists of a Boolean expression followed by one or more
statements.
Block of statement is executed when the condition is true otherwise no
statement will beexecuted.
Syntax:
if(<conditional expression>)
{
< Statement Action>
}
If the Boolean expression evaluates to true then the block of code inside the if statement
will be executed.
If not the first set of code after the end of the if statement (after the closingcurly brace) will
be executed.
Flowchart:
Example:
Output:
$java
IfStatementDemo b > a
if-else Statement:
The if/else
statement is an
DOWNLOADED
extension of the FROM
if STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 44
if(<conditional expression>)
{
< Statement Action1>
}
else
{
< Statement Action2>
}
Example:
public class IfElseStatementDemo {
Output:
$java
IfElseStatementDemo
b>a
Nested if Statement:
Nested if-else statements, is that using one if or else if statement inside
another if or else ifstatement(s).
Syntax:
if(condition1)
{
if(condition2)
{
//Executes this block if condition is True
}
else
{
//Executes this block if condition is false
}
}
else
{
//Executes this block if condition is false
}
Example-nested-if statement:
class NestedIfDemo
{
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 )
{ System.out.print("Value of X is
20");
}else if( x == 30 )
{ System.out.print("Value of X is
30");
}else{
System.out.print("This is else
statement");
}
}
}
Output:
Value of X is 30
switch Statement:
The switch case statement, also called a case statement is a multi-way
branch with several choices. A switch is easier to implement than a
series of if/else statements.
A switch statement allows a variable to be tested for equality against a list of
values. Eachvalue is called a case, and the variable being switched on is checked
for each case.
The switch statement begins with a keyword, followed by an expression that
equates to a no long integral value. Following the controlling expression is a
code block that contains zero or more labeled cases. Each label must equate to
an integer constant and each must be unique.
When the switch statement executes, it compares the value of the controlling
expression to the values of each case label.
The program will select the value of the case label that equals the value of the
controllingexpression and branch down that path to the end of the code block.
If none of the case label values match, then none of the codes within the
switch statementcode block will be executed.
Java includes a default label to use in cases where there are no matches.
We can have a nested switch within a case block of an outer switch.
Syntax:
switch (<expression>)
{
case label1:
<statement1>
case label2:
<statement2>
…
case labeln:
<statementn>
default:
<statement>
}
Example:
public class
SwitchCaseStatementDe
mo {
status = 3;
}
switch (status) {case 1:
System.out.println("a is the greatest");break;
case 2:
System.out.println("b is the greatest");break;
case 3:
System.out.println("c is the greatest");break;
default:
System.out.println("Cannot be determined");
}
}
}
Output:
c is the greatest
While Statement
The while statement is a looping control statement that executes a blockof code while
a condition is true. It is entry controlled loop.
You can either have a single statement or a block of code within the while loop.The
loop will never be executed if the testing expression evaluates to false.
The loop condition must be a boolean expression.
Syntax:
The syntax of the while loop is
<statements>
Example:
4
5
6
7
8
9
10
Syntax:
do
<loop body>
}while (<loop condition>);
Example:
public class DoWhileLoopDemo {
public static void main(String[] args)
{
int count = 1;
System.out.println("Printing Numbers from 1 to 10");
do {
System.out.println(count++);
} while (count <= 10);
}
}
Output:
For Loops
The for loop is a looping construct which can execute a set of
instructions a specified number of times. It‘s a counter controlled loop.
A for statement consumes the initialization, condition and
increment/decrement in one line. It is the entry controlled loop.
Syntax:
for (<initialization>; <loop condition>; <increment expression>)
{
<loop body>
}
The third part of the for statement is the body of the loop. These are the
instructionsthat are repeated each time the program executes the loop.
The final part of the for statement is an increment expression that
automatically executes after each repetition of the loop body. Typically,
this statement changes the value of the counter, which is then tested
to see if the loop should continue.
Exmple:
public class ForLoopDemo {
public static void main(String[] args)
{
System.out.println("Printing Numbers from 1 to
10");
for (int count = 1; count <= 10; count++)
{
System.out.println(count);
}
}
}
Output:
Printing Numbers from 1 to 10
1
2
3
4
5
6
7
8
9
10
Syntax:
for(declaration : expression)
//Statements
Example:
for(int x : numbers )
{
System.out.print( x );
System.out.print(",");
}
System.out.print("\n\
n");
String [] names ={"B",
"C", "C++", "JAVA"};
for( String name :
names )
{
System.out.print( name )
; System.out.print(",");
}
}
}
Output:
10,20,30,40,50,
B,C,C++,JAVA
1. break statement
2. continue statement
break;
Flowchart:
Example:
public static void main(String args[]) { int [] numbers = {10, 20, 30, 40, 50};
Output:
10
20
Example:
for(int x : numbers )
{
if( x == 30 )
{
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
Output:
10
20
40
50
A class is a collection of similar objects and it contains data and methods that operate
on that data. In other words ― Class is a blueprint or template for a set of objects
that share a common structure and a common behavior.
DEFINING A CLASS:
The keyword class is used to define a class.
Rules to be followed:
1. Classes must be enclosed in parentheses.
2. The class name, superclass name, instance variables and method names may be any
validJava identifiers.
3. The instance variable declaration and the statements of the methods must end
with ;(semicolon).
4. The keyword extends means derived from i.e. the class to the left of the
extends
(subclass) is derived from the class to the right of the extends (superclass).
return_type
method_name1(parameter
list)
{
Body of the method
}
.
.
return_type
method_nameN(parameter
list)
{
The data, or variables, defined within a class are called instance variables.
Body of the method
The code} to do operations is contained within methods.
} Collectively, the methods and variables defined within a class are called members of
Example:
class box {
double width;
double height;
double depth;
void
volume()
{
Syste
m.out.
printl
n( \n
Volu
me
is : );
Program Explanation:
Systm
Class : keyword
e.out. that initiates a class definition
Box : class
printl name
n(widt
Double : primitive data type
h*hei
Height, depth,
ght*dwidth: Instance variables
Void : return type of the method
epth);
Volume()
} : method name that has no
}
parameters
DEFIN
ING
OBJE
Object = Data + Methods
CTS
It is a structured set of data with a set of operations for manipulating that data.
An Object is an instance of a class. It is a
The methods are the only gateway to access the data. In other words, the methods
blending of methods and data.
and dataare grouped together and placed in a container called Object.
Characteristics of an object:
An object has three characteristics:
1) State: represents data (value) of an object.
2) Behavior: represents the behavior (functionality) of an object such as deposit,
withdraw etc.
3) Identity: Object identity is an unique ID used internally by the JVM to identify
each object uniquely.
For Example: Pen is an object. Its name is Reynolds, color is white etc. known as its
CREATING OBJECTS:
Obtaining objects of a class is a two-step process:
1.Declare a variable of the class type – this variable does not define an object. Instead,it is
simply a variable that can refer to an object.
2.Use new operator to create the physical copy of the object and assign the referenceto
the declared variable.
NOTE: The new operator dynamically allocates memory for an object and returns a
referenceto it. This reference is the address in memory of the object allocated by new.
Advantage of using new operator: A program can create as many as objects it needs
duringthe execution of the program.
Syntax:
class_name object_name = new class_name();
(or)
class_name object_name;
object_name = new class_name();
Example:
box b1=new box();(or)
box b2; b2=new
box();
object_name.variable_name;
object_name.method_name(parameter_list);
Example:
class box
{
double width;
double height;
Output:
1.11: METHODS
DEFINITION :
A Java method is a collection of statements that are grouped together to perform an
operation.
Syntax: Method:
modifier Return –type method_name(parameter_list) throws exception_list
{
// method body
}
modifier: It defines the access type of the method and it is optional to use.
returnType: Method may return a value.
Method_name: This is the method name. The method signature consists of the
Example:
This method takes two parameters num1 and num2 and returns the maximum between
the two:
1.12: CONTRUCTORS
Definition:
Constructor is a special type of method that is used to initialize the object.
Constructor is invoked at the time of object creation. Once defined, the constructor is
automatically called immediately after the object is created, before the new operator
completes.
1. All data fields are initialized to their default value (0, false or null).
2. All field initializers and initialization blocks are executed, in the order in
which theyoccur in the class declaration.
3. If the first line of the constructor calls a second constructor, then the
body of thesecond constructor is executed.
4. The body of the constructor is executed.
Types of constructors
1. Default Constructor
Default constructor refers to a constructor that is automatically created by
compilerin the absence of explicit constructors.
Example:
class student
{
int id;
String name;
void display()
{
System
.out.pri
ntln(id
+"
;
"
+name
);
}
public static
void
main(String
args[])
{
DOWNLOADED FROM studentSTUCOR
s1=new student();
student s2=new
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 65
Output:
1 null
2 null
2) No-Argument Constructor
Constructor without parameters is called no-argument constructor.
Classname()
{
// Constructor body
}
Example:
class Box
{
double width;
double height;
double depth;
Constructing Box
Constructing
Box Volume is
1000.0
Volume is 1000.0
As you can see, both mybox1 and mybox2 were initialized by the Box( )
constructor when they were created. Since the constructor gives all boxes
the same dimensions, 10 by 10 by 10, both mybox1 and mybox2 will have
the same volume.
3. Parameterized Constructor
A constructor that takes parameters is known as parameterized
constructor.
Example:
class Box
{
double
width; double
height;
double depth;
// This is
DOWNLOADED
the constructor FROM STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 67
vol=mybox1.volume();
System.out.println(“Volume is ” +vol);
Output:
Volume is 3000.0
Volume is 162.0
As you can see, each object is initialized as specified in the parameters to its
constructor. Forexample, in the following line,
Box mybox1 = new Box(10, 20, 15);
the values 10, 20, and 15 are passed to the Box( ) constructor when new creates the
object. Thus,
mybox1‘s copy of width, height, and depth will contain the values 10, 20, and 15,
respectively.
It is illegal in Java to declare two local variables with the same name inside the same or
enclosing scopes.
We can also have local variables, which overlap with the names of the class‘ instance
variables.
However, when a local variable has the same name as an instance variable, the
local variable hides the instance variable.
We can use “this” keyword to to resolve any namespace collisions that might occur
betweeninstance variables and local variables.
Example:
class Student
{
int rollno;
String name;
float fee;
Student(int
rollno,String
name,float
fee)
{
this.rollno=rollno;
this.name=name;
this.fee=fee;
}
void display()
{
System.out.println
(rollno+"
"+name+" "+fee);
}
}
class TestThis2
{
public static void
main(String args[])
{
Student s1=new Student(111,"ankit",5000f);
Student s2=new Student(112,"sumit",6000f);
s1.display();
s2.display();
}
}
Output:
DOWNLOADED FROM STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 70
CONSTRUCTOR OVERLOADING:
Definition:
Constructor overloading is a technique in Java in which a class can have any
number of constructors that differ in parameter lists. The compiler differentiates
these constructors by taking into account the number of parameters in the list and
their type.
// constructor
used when all the
dimensions are
specified
Box(double w,
double h,
double d)
{
width=w;
height=h;
depth=d;
}
// constructor used
when no dimensions
are specified
Box()
{
width=-1;
height=-1;
depth=-1;
}
// constructor used
when cube is created
Box(double len)
{
width =
height =
depth =
len;
DOWNLOADED
} FROM STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 71
class ConsOverloadDemo
{
public static void main(String arg[])
{
// declare, allocate and initialize Box objects
Box mybox1=new Box(10,20,15);
Box mybox2=new Box();
Box mybox3=new Box(7);
double vol;
Output:
As we can see, the proper overloaded constructor is called based upon the
parameters specifiedwhen new is executed.
CONSTRUCTOR CHAINING:
Constructor chaining is the process of calling one constructor of a class from
another constructor of the same class or another class using the current
object of the class.
It occurs through inheritance.
o Within the same class: If we want to call the constructor from the same class, then
we use this keyword.
o From the base class: If we want to call the constructor that belongs to different
classes (parent and child classes), we use the super keyword to call the constructor
from the base class.
Advantage:
Avoids duplicate code while having multiple constructors.
Makes code more readable
Example
class Shape
{
int radius,length,breadth;
Shape(int radius)
{
this.radius=radius;
}
void
areaCircle()
{
System.out
.println("Ar
ea of Circle
is
"+(3.14*ra
dius*radiu
s));
}
void
areaRectangl
e()
{
System.out
.println("Ar
ea of
Rectangle
is "+
(length*br
eadth));
}
}
public class
ConstructorCh
aining
{
public static
voidAccess specifiers are used to specify the visibility and accessibility of a class
constructors,
main(Stringmember variables and methods.
arg[])
{ classes, fields, constructors and methods
Java have one of four
canShape s1=new
different Shape(5,10,50);
accessmodifiers:
s1.areaCircle();
1. Public
s1.areaRectangle();
2. Private
}
3.
} Protected
4. Default (package)
Output:
DOWNLOADED FROM
Area of Circle is 78.5 STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 74
Z:\MyPack\FirstClass.java
package MyPack;
Z:\MyPack2\SecondClass.java
package MyPack2;
import MyPack.FirstClass;
class SecondClass extends FirstClass {
void method()
{
System.out.println(i); // No Error: Will print "I am public
variable". System.out.println(j); // No Error: Will print “I am protected
variable”. System.out.println(k); // Error: k has private access in FirstClass
System.out.println(r); // Error: r is not public in FirstClass; cannot be accessed
// from outside package
}
Output:
I am public variable
I am protected variable
Static Members are data members (variables) or methods that belong to a static
or non-static class rather than to the objects of the class. Hence it is not necessary
to create object of that class to invoke static members.
Static Variable:
When a member variable is declared with the static keyword, then it is called
static variable and it can be accessed before any objects of its class are created,
and without reference to any object.
Syntax to declare a static variable:
[access_spefier] static data_type instance_variable;
When a static variable is loaded in memory (static pool) it creates only a single copy
of static variable and shared among all the objects of the class.
A static variable can be accessed outside of its class directly by the class name
anddoesn‘t need any object.
Syntax : <class-name>.<variable-name>
Static Method:
If a method is declared with the static keyword , then it is known as static
method.
A static method belongs to the class rather than the object of a class.
A static method can be invoked without the need for creating an instance of a class.
A static method can access static data member and can change the value of it.
o Syntax: (defining static method)
[access_specifier] static Return_type method_name(parameter_list)
// method body
The most common example of a static member is main( ). main( ) is declared as static
because it must be called before any objects exist.
Static Block:
Static block is used to initialize the static data member like constructors
helps toinitialize instance members and it gets executed exactly once, when the
class is first loaded.
It is executed before main method at the time of class loading in JVM.
Syntax:
class classname
{
static
{
// block of statements
}
}
The following example shows a class that has a static method, some static variables,
and a static
initialization block:
1. class Student
2. {
3. int rollno;
4. String name;
5. static String
6. college =
7. "ITS";
8. //static method
to change the
9. value of static
10. variable
11. static void change(){
12. college = "BBDIT";
13. }
14. //constructor to initialize
the variable
15.
16. Student(int r, String n){
17. rollno = r;
18. name = n;
19. }
//method to display values
20.
void display()
21.
22. {
System.out.println(roll
no+" "+name+"
DOWNLOADED FROM
"+college); STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 78
23. {
24. static
25. {
26. System.out.println(―*** STATIC MEMBERS – DEMO ***‖);
27. }
28.
29. public static void main(String args[])
30. {
31. Student.change(); //calling change method
32. //creating objects
33. Student s1 = new Student(111,"Karan");
34. Student s2 = new Student(222,"Aryan");
35. Student s3 = new Student(333,"Sonoo");
36. //calling display method
37. s1.display();
38. s2.display();
39. s3.display();
40. }
41. }
Definition:
Javadoc is a tool which comes with JDK and it is used for generating Java code
documentation in HTML format from Java source code. Java documentation can be
created as part of the source code.
Input: Java source files (.java)
Individual source files
Root directory of the source files
Output: HTML files documenting specification of java code
One file for each class defined
Package and overview files
Format:
A Javadoc comment precedes similar to a multi-line comment except that it
beginswith a forward slash followed by two asterisks (/**) and ends with a
*/
Each /** . . . */ documentation comment contains free-form text followed by
tags.
A tag starts with an @, such as @author or @param.
The first sentence of the free-form text should be a summary statement.
The javadoc utility automatically generates summary pages that extract
thesesentences.
In the free-form text, you can use HTML modifiers such as <em>...</em>
foremphasis, <code>...</code> for a monospaced ―typewriter
font, <strong>...</strong> for strong emphasis, and even <img ...> to include
an image.
Example:
/**
This is a <b>doc</b> comment.
*/
TYPES OF COMMENTS:
1. Class Comments
The class comment must be placed after any import statements, directly before the
classdefinition.
Example:
import java.io.*;
/** class comments should be written here */Public class sample
{
….
}
2. Method Comments
The method comments must be placed immediately before the method that it
describes.
Tags used:
Example:
3. Field Comments
Field comments are used to document public fields—generally that means static
constants.
For example:
/**
* Account number
*/
public static final int acc_no = 101;
4. General Comments
@see This tag adds a hyperlink in the ―see also @see reference
section. It can be used with both classes and
methods. Here, reference can be one of the
following:
package.class#feature label
<a ref="...">label</a>
"text"
Example:
@see ―Core java 2
@see <a
href=222.java.com>Co
re Java</a>
COMMENT EXTRACTION
Here, docDirectory is the name of the directory where you want the HTML files to go.
1. Change to the directory that contains the source files you want to document.
2.To create the document API, you need to use the javadoc tool followed by
java file name.There is no need to compile the javafile.
Here, docDirectory is the name of the directory where you want the HTML files
to go.
Example:
/**
* <h1>Find average of three numbers!</h1>
* The FindAvg program implements an application that
* simply calculates average of three integers and Prints
* the output on the screen.
*
* @author Pratik Agarwal
* @version 1.0
* @since 2017-02-18
*/
public class FindAvg
{
/**
* This method is used to find average of three integers.
* @param numA This is the first parameter to findAvg method
* @param numB This is the second parameter to findAvg method
* @param numC This is the third parameter to findAvg method
* @return int This returns average of numA, numB and numC.
*/
public int findAvg(int numA, int numB, int numC)
{
return (numA + numB + numC)/3;
}
/**
* This is the main method which makes use of findAvg method.
* @param args Unused.
* @return Nothing.
*/
OUTPUT:
Identifiers are names given to the variables, classes, methods, objects, labels,
package and interface in our program.
The name we are giving must be meaningful and it may have random length.
The following rule must be followed while giving a name:
1. The first character must not begin with a number.
2. The identifier is formed with alphabets, number, dollar sign ($) and underscore
(_).
3. It should not be a reserved word.
4. Space is not allowed in between the identifier name.
Example:
String name = "Homer Jay Simpson";
int weight = 300;
double height = 6;
//class code..
}
}
It will not compile, instead you will get the following error: <identifier> expected
The table below lists all the words that are reserved:
Type Conversion is the task of converting one data type into another data type.
Example:
byte a=100;
int b=a; // b is larger than a
Example:
class conversion {
public static void main(String
arg[])
{
byte b;
int i=257;
double
d=323.14
2;
Output:
Conversion of int to byte:
i and b : 257 , 1
Conversion of int to byte:
d and i : 323.142 , 323
Conversion of int to byte:
d and b : 323.142 , 67
Value of P = 20
1.16.6: GARBAGE
COLLECTION
Since objects are dynamically allocated by using the new operator, you might be
wondering how such objects are destroyed and their memory released for later
reallocation.
In some languages, such as C++, dynamically allocated objects must be manually
released by use of a FROM
DOWNLOADED delete operator.
STUCOR
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 91
Finalization:
Sometimes an object will need to perform some action when it is destroyed. For
example, if an object is holding some non-Java resource such as a file handle or
character font, then you might want to make sure these resources are freed before
an object is destroyed.
To handle such situations, Java provides a mechanism called finalization. By using
finalization, you can define specific actions that will occur when an object is just
about tobe reclaimed by the garbage collector.
Finalize() method:
A finalize() method is a method that will be called by the garbage collector on an
object when garbage collection determines that there are no more references to the
object.
Inside the finalize( ) method, we will specify those actions that must be
performed before anobject is destroyed.
Example:
Output:
object
is
garbag
e
collect
edobje
ct is
garbag
e
collect
ed
1.16.7:
USING
COMMAN
D LINE
ARGUME
NTS:
Sometimes you will want to pass information into a program when you run it.
This isaccomplished by passing command-line arguments to main( ).
To access the command-line arguments inside a Java program is quite easy—they are
stored as strings in a String array passed to the args parameter of main( ).
The first command-line argument is stored at args[0], the second at args[1], and so
on.
DOWNLOADED FROM
For example, the following STUCOR
program displays all of the command-line arguments that
DOWNLOADED FROM STUCOR APP
CS3391 - Object Oriented Programming 93
args[0]: this
args[1]: is
args[2]: a
args[3]: test
args[4]:
100
args[5]: -1
Overloading Methods 1
2.1
Method Overloading and Type Promotion 4
Objects as Parameters 6
2.2
Returning Objects 7
Inheritance 15
Types of Inheritance 17
2.4
2.4.1: Protected Member 22
Abstract Classes 33
2.8
Abstract Methods 34
2.9 final with Inheritance 37
Packages 41
2.10.1: Creating User-Defined Packages 42
2.10
2.10.2: Accessing a Package 43
2.10.3: Packages and Member Access 44
2.11 Interfaces 47
Method Overloading is a feature in Java that allows a class to have more than one
methods having same name, but with different signatures (Each method must have
different number of parameters or parameters having different types and orders).
Advantage:
Method Overloading increases the readability of the program.
Provides the flexibility to use similar method with different parameters.
In order to overload a method, the argument lists of the methods must differ in either of
these:
3. Sequence of Data
type of
parameters.
For example:
add(int, float)
add(float,
int)
CS3391– Object Oriented Programming – III Sem CSE Unit 2
return min;
}
public static
double
minFunction(i
nt n1, double
n2)
{
double min;
if (n1 >
n2) min =
n2;
else
min = n1;
return min;
}
}
This would
produce the
following
result:
Minimum(11,
6,3) = 3
Minimum(7.3,
9.4) = 7.3
Minimum(11,
7.3) = 7.3
Note:-
Method
overloa
ding is
not
possible
CS3391– Object Oriented Programming – III Sem CSE Unit 2
by
DOWNLOADED
changin FROM STUCOR
g the
4
{
return a+b;
}
public static void main(String arg[])
{
System.out.println(sum(10,20));
System.out.println(sum(15,25));
}
}
Output:
Compile by: javac
TestOverloading3.java
class Overloading
{
void sum(int a, float b)
{
System.out.println(a+b);
}
void sum(int a, int b, int c)
{
System.out.println(a+b+c);
}
OUTPUT:
40.0
165.0
60
Returning Objects:
In Java, a method can return any type of data. Return type may any primitive data type
or class type (i.e. object). As a method takes objects as parameters, it can also return
objects as return value.
Example:
class Add
{
int num1,num2,sum;
a3.num2=a2.num1+a2.num2;
a3.sum=a3.num1+a3.num2;
return a3;
}
Add ob2=new
Add();
ob2.num1=100;
ob2.num2=150;
CS3391– Object Oriented Programming – III Sem CSE Unit 2
Add ob3=calculateSum(ob1,ob2);
DOWNLOADED FROM1 STUCOR
System.out.println("Object -> Sum = "+ob1.sum);
8
OUTPUT:
Definition:
Benefits:
1. Name control
2. Access control
3. Code becomes more readable and maintainable because it locally group related
classes in one place.
1) Nested class can access all the members (data members and methods) of
outer class including private.
2) Nested classes are used to develop more readable and maintainable code.
3) Code Optimization: It requires less code to write.
A non-static class that is created inside a class but outside a method is called member
inner class.
Syntax:
class Outer
{
//code
class Inner
{
//code
}
}
In this example, we are creating msg() method in member inner class that is accessing
the private data member of outer class.
1. class TestMemberOuter1 2.
{
3. private int data=30;
4. class Inner
5. {
6. void msg()
7. {
8. System.out.println("data is
"+data); 9. }
10. }
11. public static void
main(String args[])
12. {
13. TestMemberOuter1 obj=new
TestMemberOuter1();
14. TestMemberOuter1.Inner
in=obj.new Inner();
15. in.msg();
16. }
17. }
Output:
CS3391– Object Oriented Programming – III Sem CSE Unit 2
data is 30
Output:
nice fruits
1. interface
Eatable 2. {
3. void
eat();
4. }
5. class
TestAnnonymousInner1 6.
{
7. public static void main(String
args[]) 8. {
9. Eatable e=new Eatable()
10. {
11. public void eat()
{System.out.println("nice fruits");
12. }
13. };
14. e.eat();
15. }
16. }
nice fruits
Output:
3. Java Local inner class
A class i.e. created inside a method is called local inner class in java. If you want to
invoke the methods of local inner class, you must instantiate this class inside the
method.
Output:
30
50
Properties:
1. Completely hidden from the outside world.
2.Cannot access the local variables of the method (in which they are defined), but the
local variables has to be declared final to access.
A static class i.e. created inside a class is called static nested class in java. It cannot
access non-static data members and methods. It can be accessed by outer class name.
o It can access static data members of outer class including private.
o Static nested class cannot access non-static (instance) data member or method.
1.class TestOuter1 2.
{
3. static int
data=30;
4. static class
Inner
5. {
6. void
CS3391–msg()
Object Oriented Programming – III Sem CSE Unit 2
7. {
8. System.out.println("data is "+data);
9. }
10. }
11. public static void main(String args[])
12. {
13. TestOuter1.Inner obj=new TestOuter1.Inner();
14. obj.msg();
15. }
16. }
Output:
data is 30
If you have the static member inside static nested class, you don't need to create
instance of static nested class.
1. class TestOuter2{
2. static int data=30;
3. static class Inner 4.
{
5. static
void msg() 6. {
7. System.out.println("data
is "+data); 8. }
9. }
10. public static void
main(String args[])
11. {
12. TestOuter2.Inner.msg();//no need to create the instance of
static nested class
13. }
14. }
Output: data is 30
2.4: Inheritance
Definition:
Inheritance is a process of deriving a new class from existing class, also called as
“extending a class”. When an existing class is extended, the new (inherited) class
has all the properties and methods of the existing class and also possesses its own
characteristics.
The class whose property is being inherited by another class is called “base class”
(or) “parent class” (or) “super class”.
The class that inherits a particular property or a set of properties from the base class
is called “derived class” (or) “child class” (or) “sub class”.
Class A
Base class
Properties and
methods
Extend
Class B ed
Derived
to
Properties and methods
of Class A + B’s own
properties and methods
Subclasses of a class can define their own unique behaviors and yet share some of
the same functionality of the parent class.
ADVANTAGES OF INHERITANCE:
Reusability of Code:
Inheritance is mainly used for code reusability (Code reusability means
that we can add extra features to an existing class without modifying it).
Effort and Time Saving:
The advantage of reusability saves the programmer time and effort. Since
the main code written can be reused in various situations as needed.
Increased Reliability:
The program with inheritance becomes more understandable and easily
maintainable as the sub classes are created from the existing reliably
working classes.
“extends” KEYWORD:
Inheriting a class means creating a new class as an extension of another class.
The extends keyword is used to inherit a class from existing class.
The general form of a class declaration that inherits a superclass is shown here:
Syntax:
[access_specifier] class subclass_name extends superclass_name
{
// body of class
}
class Bike
extends
Vehicle
{
}
In the above example, Vehicle is the super class or base class that holds the
common property of Car and Bike. Car and Bike is the sub class or derived class that
inherits the property of class Vehicle extends is the keyword used to inherit a class.
CS3391– Object Oriented Programming – III Sem CSE Unit 2
TYPES OF INHERITACE:
1. Single Inheritance
2. Multilevel Inheritance
3. Multiple Inheritance
Note: The following inheritance types are not directly supported in Java.
4. Hierarchical Inheritance
5. Hybrid Inheritance
1. SINGLE INHERITANCE
The process of creating only one subclass from only one super class is known as Single
Inheritance.
Only two classes are involved in this inheritance.
The subclass can access all the members of super class.
1. class Animal
2. {
3. void
eat()
4. {
5.
System.out.println("eating..."); 6.
}
7. }
8. class Dog extends Animal
9. {
10. void bark()
11. {
12.
System.out.println("barking...
");
13. }
14.}
15.class TestInheritance
16.{
17. public static void
main(String args[])
18. {
19. Dog d=new Dog();
20. d.bark();
21. d.eat();
22. }
barking...
23.}
eating...
Output:
$java
TestInheritance
2. MULTILEVEL INHERITANCE:
The process of creating a new sub class from an already inherited sub class is
known as Multilevel Inheritance.
Multiple classes are involved in inheritance, but one class extends only one.
The lowermost subclass can make use of all its super classes' members.
Multilevel inheritance is an indirect way of implementing multiple
inheritance.
Example: Animal Dog BabyDog
1. class Animal
2. {
3. void eat()
4. {
5.
System.out.println("eating..."); 6. }
7. }
8. class Dog extends
Animal 9. {
10. void bark()
11. {
12.
System.out.println("barking...");
13. }
14. }
15. class BabyDog extends
Dog
16. {
17. void weep()
18. {
19.
System.out.println("weeping...");
20. }
21. }
22. class TestInheritance2
23. {
24. public static void
main(String args[]) {
25. BabyDog d=new
BabyDog();
26. d.weep();
27. d.bark();
CS3391–
28. Object Oriented Programming – III Sem CSE
d.eat(); Unit 2
DOWNLOADED
29. } FROM STUCOR
20
Output:
$java TestInheritance2
weeping...
barking...
eating..
3. HIERARCHICAL INHERITANCE
The process of creating more than one sub classes from one super class is called
Hierarchical Inheritance.
Animal
Dog Cat
Example:
1. class Animal
2. {
3. void eat()
4. {
5. System.out.println("eating...");
6. }
7. }
8. class Dog extends Animal
9. {
10. void bark()
11. {
12. System.out.println("barking...");
13. }
14. }
15. class Cat extends Animal
16. {
17. void meow()
18. {
19. System.out.println("meowing...");
20. }
21. }
22. class TestInheritance3
23. {
24. public static void main(String args[])
25. {
26. Cat c=new Cat();
27. c.meow();
28. c.eat();
29. //c.bark();//
30. C.T.Error
31. }
Output: }
meowing...
eating...
The private members of a class cannot be directly accessed outside the class. Only
methods of that class can access the private members directly. However, sometimes it
may be necessary for a subclass to access a private member of a superclass. If you make
a private member public, then anyone can access that member. So, if a member of a
superclass needs to be (directly) accessed in a subclass then you must declare that
member protected.
Following program illustrates how the methods of a subclass can directly access a
protected member of the superclass.
Consider two kinds of shapes: rectangles and triangles. These two shapes have certain
common properties height and a width (or base).
This could be represented in the world of classes with a class Shapes from which we
would derive the two other ones : Rectangle and Triangle
Program : (Shape.java)
Program : (Rectangle.java)
Program : (Triangle.java)
Program : (TestProgram.java)
Output :
Area of rectangle : 20.0
Area of triangle : 25.0
In Java, constructor of base class with no argument gets automatically called in derived
class constructor.
Example:
class A
{
A()
{ System.out.println(“ Inside A’s
Constructor”); }
}
class B extends A
{
B()
CS3391– Object Oriented Programming – III Sem CSE Unit 2
B() After compiler inserts the super constructor, the sub class constructor
{looks like the following:
super();
System.out.println("Inside B’s Constructor");
}
C()
{
s
u
p
CS3391– e
Object Oriented Programming – III Sem CSE Unit 2
r
DOWNLOADED( FROM STUCOR
26
Super is a special keyword that directs the compiler to invoke the superclass
members. It is used to refer to the parent class of the class in which the keyword is
used.
super keyword is used for the following three purposes:
1. To invoke superclass constructor.
2. To invoke superclass members variables.
3. To invoke superclass methods.
Example:
class A // super class
{
int i;
A(String str) //superclass constructor
{
System.out.println(" Welcome to "+str);
}
void show() //superclass method
{
System.out.println(" Thank You!");
}
}
class B extends A
{
int i; // hides the superclass variable
'i'. B(int a, int b) // subclass constructor
{
super("Java Programming");
// invoking superclass constructor
super.i=a; //accessing superclass member
variable i=b;
}
// Mehtod overriding
@Override
void show()
{
System.out.println(" i in superclass : "+super.i);
System.out.println(" i in subclass : "+i);
super.show(); // invoking superclass
method
CS3391– Object Oriented Programming – III Sem CSE Unit 2
}
}
public class UseSuper {
public static void main(String[] args) {
B objB=new B(1,2); // subclass object
construction objB.show(); // call to subclass
method show()
}
}
Output:
Welcome to Java Programming
i in superclass : 1
i in subclass : 2
Thank You!
Program Explanation:
In the above program, we have created the base class named A that contains a instance
variable ‘i’ and a method show(). Class A contains a parameterized constructor that
receives string as a parameter and prints that string. Class B is a subclass of A which
contains a instance variable ‘i’ ( hides the superclass variable ‘i’) and overrides the
superclass method show(). The subclass defines the constructor with two parameters a
and b. The subclass constructor invokes the superclass constructor super(String) by
passing the string “Java Programming” and assigns the value a to the superclass
variable(super.i=a) and b to the subclass variable. The show() method of subclass
prints the values of ‘i’ form both superclass and subclass & invokes the superclass
method as super.show().
In the main class, object for subclass B is created and the object is used to invoke
show() method of subclass.
2.6: METHOD OVERRIDING
When a method in a subclass has the same name and type signature as a method in
its superclass, then the method in subclass is said to override a method in the
superclass.
Example:
class Bank
{
int getRateOfInterest()// super class method
{
return 0;
}
}
class Axis extends Bank// subclass of bank
{
int getRateOfInterest()// overriding the superclass method
{
return 6;
}
}
class ICICI extends Bank// subclass of Bank
{
int getRateOfInterest()// overriding the superclass method
{
return 15;
}
}
// Mainclass
class BankTest
{
public static
void
main(String[]
a)
{
Axis a=new Axis();
ICICI i=new ICICI();
// following method
call invokes the
overridden method of
subclass AXIS
System.out.println(
“AXIS: Rate of
Interest =
“+a.getRateOfIntere
st());
Output:
// following method
CS3391–
callObject Oriented
invokes the Programming – III Sem CSE Unit 2
overridden method of
DOWNLOADED FROM STUCOR
subclass ICICI
30
class B extends A {
//override callme()
void callme() {
System.out.println(
“Inside B’s callme
method”);
}}
class C extends A
{
//override callme()
void callme() {
System.out.println(
“Inside C’s callme
method”);
}
}
class Dispatch
{
Apublic
a=newstatic
A();void //object of type A
main(String
B b=newargs[]) //object of type B
{ C c=new
B(); //object of type C
C();
A r;// obtain a reference of type A
In Method Overloading,
In Method Overriding, sub
Methods of the same class
class have the same method
shares the same name but each
with same name and exactly
Definition method must have different
the same number and type of
number of parameters or
parameters and same return
parameters having different
type as a super class.
types and order.
For example sending sms, you just type the text and send the message. You don't
know the internal processing about the message delivery.
Abstraction lets you focus on what the object does instead of how it does it.
Abstract Classes:
Example:
abstract class GraphicObject {
int x, y;
...
void moveTo(int newX, int
newY) {
...
}
abstract void draw();
abstract void resize();
}
Abstract Methods:
A method that is declared as abstract and does not have implementation is
known as abstract method. It acts as placeholder methods that are
implemented in the subclasses.
System.out.pr
intln("-- -- --
-- -- -- -- -- --
-- -- -- -- -- --
-- -- -- -");
Triangle t =
new
Triangle();
t.x = 30;
t.y = 35;
t.printArea();
CS3391– Object Oriented Programming – III Sem CSE Unit 2
DOWNLOADED
System.out.p FROM STUCOR
rintln("-- -- --
37
System.out.pr
intln("-- -- --
-- -- -- -- -- --
-- -- -- -- -- --
-- -- -- -");
}
}
Output:
D:\>javac abs.java
D:\>java abs
Area of Rectangle
is 200
-- -- -- -- -- -- -- -- --
-- -- -- -- -- -- -- -- --
- 2.9: final WITH INHERITANCE
Area of Triangle is
What is final keyword in Java?
525
-- -- -- --Final
-- -- --is--a--keyword or reserved word in java used for restricting some
--functionality.
-- -- -- -- -- -- --It-- can be applied to member variables, methods, class and local
- variables in Java.
Area offinal
Circle is
keyword has three uses:
12
1. For declaring variable – to create a named constant. A final variable
-- -- -- -- -- -- -- -- --
cannot be changed once it is initialized.
-- -- -- -- -- -- -- -- --
- 2. For declaring the methods – to prevent method overriding. A final
method cannot be overridden by subclasses.
3. For declaring the class – to prevent a class from inheritance. A final
class cannot be inherited.
1. Final Variable:
Any variable either member variable or local variable (declared inside method or
block) modified by final keyword is called final variable.
The final variables are equivalent to const qualifier in C++ and #define directive
in C.
Syntax:
Example:
final int MAXMARKS=100;
final int PI=3.14;
There is a final variable speedlimit, we are going to change the value of this
variable, but It can't be changed because final variable once assigned a value can never
be changed. 1. class Bike
2. {
3. final
int
speedli
mit=9
0;//fin
al
variabl
e
4. void
run( )
5. {
6.
NOTE: Final variablesspeedlimit=400; 7.
are by default read-only.
}
8. public static void main(String
2. Final Methods: args[]) 9. {
Final keyword10. in java can
Bikealso be applied
obj=new to methods.
Bike();
A java method 11.with final keyword is called final method and it cannot be
obj.run();
overridden in12. }
sub-class.
13.}
If a method is defined with final keyword, it cannot be overridden in the
Output: Compile
subclass and its behaviour Time Error
should remain constant in sub-classes.
Syntax:
final return_type function_name(parameter_list)
{
// method body
}
1. class Bike
2. {
3. final void
run() 4. {
5.
System.out.println("running"); 6.
}
7. }
8. class Honda extends Bike
9. {
10. void run()
11. {
12.
System.out.println("running
safely with 100kmph");
13. }
14. public static void
main(String args[])
15. {
16. Honda honda= new
Output:Honda();
17. honda.run();
18. }
D:\>javac Honda.java
19.}
Honda.java:9: error: run() in Honda cannot override run() in Bike
void run()
^
overridden method is final
1 error
3. Final Classes:
Java class with final modifier is called final class in Java and they cannot
be sub-classed or inherited.
Syntax:
final class class_name
{
// body of the class
}
Several classes in Java are final e.g. String, Integer and other wrapper classes.
D:\>javac Honda.java
Honda.java:4: error: cannot inherit from final Bike class Honda extends Bike
^
1 error
Points to Remember:
2.10: PACKAGES
Definition:
Advantage of Package:
Package is used to categorize the classes and interfaces so that they can be easily
maintained.
Package provides access protection.
Package removes naming collision.
To bundle classes and interface
The classes of one package are isolated from the classes of another package
Provides reusability of code
We can create our own package or extend already available package
Java package created by user to categorize their project's classes and interface
are known as user-defined packages.
When creating a package, you should choose a name for the package.
Put a package statement with that name at the top of every source file that
contains the classes and interfaces.
The package statement should be the first line in the source file.
There can be only one package statement in each source file
Syntax:
package package_name.[sub_package_name];
public class classname
{ ……..
……..
}
Example:
package pack;
public class class1 {
public static void
greet()
{ System.out.printl
n(“Hello”); }
}
The import keyword is used to make the classes and interface of another package
accessible to the current package.
Syntax:
import package1[.package2][.package3].classname or *;
There are three ways to access the package from outside the package.
1. import package.*;
2. import package.classname;
3. fully qualified name.
Using packagename.*
If you use package.* then all the classes and interfaces of this package will be
accessible but not subpackages.
Using packagename.classname
If you import package.classname then only declared class of this package will be
accessible.
Using fully qualified name
If you use fully qualified name then only declared class of this package will be
accessible. Now there is no need to import. But you need to use fully qualified
name every time when you are accessing the class or interface.
Example :
package pack;
public class greeting{ public
static void greet()
{ System.out.println(“Hello! Good
Morning!”); }
}
package Factorial;
public class FactorialClass
{
Output:
F:\>java ImportClass
Enter a Number:
5
Hello! Good Morning!
Factorial of 5 = 120
Power(5,2) = 25.0
DOWNLOADED FROM
Access level modifiers STUCOR
determine whether other classes can use a particular field or
invoke a particular method.
45
The following figure shows the four classes in this example and how they are related.
Figure: Classes and Packages of the Example Used to Illustrate Access Levels
The following table shows where the members of the Alpha class are visible for each of
the access modifiers that can be applied to them.
Visibility
Modifier Alpha Beta Alphasub Gamma
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Example:
Z:\MyPack\FirstClass.java
package MyPack;
Z:\MyPack2\SecondClass.java
package MyPack2;
import MyPack.FirstClass;
class SecondClass extends FirstClass {
void method()
{
System.out.println(i); // No Error: Will print "I am
public variable". System.out.println(j); // No Error: Will print “I am
protected variable”. System.out.println(k); // Error: k has private access
in FirstClass
System.out.println(r); // Error: r is not public in FirstClass; cannot be
accessed
// from outside
package
}
CS3391– Object Oriented Programming – III Sem CSE Unit 2
Output:
I am public variable
I am protected variable
2.11: INTERFACES
Definition:
An interface is a collection of method definitions (without implementations)
and constant values. It is a blueprint of a class. It has static constants and abstract
methods.
Defining Interfaces:
An interface is defined much like a class. The keyword “interface” is used to
define an interface.
Where,
Access_specifer : either public or none.
Name: name of an interface can be any valid java identifier.
Variables: They are implicitly public, final and static, meaning that they cannot be
changed by the implementing class. They must be initialized with a constant
value.
Methods: They are implicitly public and abstract, meaning that they must be declared
without body and defined only by the implementing class.
Understanding relationship
between classes and interfaces
As shown in the figure given below, a class extends another class, an interface extends
another interface but a class implements an interface.
Once an interface has been defined, one or more classes can implement that
interface.
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.
Syntax:
Rules:
1. If a class implements an interface, then it must provide implementation for all the
methods defined within that interface.
2. A class can implement more than one interfaces by separating the interface
names with comma(,).
3. A class can extend only one class, but implement many interfaces.
4. An interface can extend another interface, similarly to the way that a class can
extend another class.
5. If a class does not perform all the behaviors of the interface, the class must
declare itself as abstract.
Example:
/* File name : Super.java */
interface Super
{
final int x=10;
void print();
}
/* File name :
Sub.java */
class Sub
implements
Super
{
int y=20;
x=100
//ERROR;
cannot
change
modify the
value of final
variable
{
Sub SubObj=new Sub();
SubObj.print();
Super SupObj=new Sub(); // interface variable referring to class object
SupObj.print();
}
}
Output:
$java sample
X = 10
Y = 20
X = 10
Y = 20
Member variables:
Can be only public
and are by default.
By default are
static and always
static
By default are final
and always final
Methods:
Can be only public
and are by default.
Cannot be static
Cannot be Final
not be implemented.
Properties of Interfaces:
1. Interfaces are not classes. So the user can never use the new operator to
instantiate an interface.
Example: interface super {}
CS3391– Object Oriented Programming – III Sem CSE Unit 2
X=new Super() // ERROR
DOWNLOADED FROM STUCOR
52
2. The interface variables can be declared, even though the interface objects
can’t be constructed.
Super x; // OK
3. An interface variable must refer to an object of a class that implements the
interface.
4. The instanceOf() method can be used to check if an object implements an
interface.
5. A class can extend only one class, but implement many interfaces.
6. An interface can extend another interface, similarly to the way that a class
can extend another class.
7. All the methods in the interface are public and abstract.
8. All the variable in the interface are public, static and final.
Extending Interfaces:
An interface can extend another interface, similarly to the way that a class can
extend another class.
The extends keyword is used to extend an interface, and the child interface
inherits the methods of the parent interface.
Syntax:
[accessspecifier] interface InterfaceName extends interface1, interface2,…..
{
Code for interface
}
Rule: When a class implements an interface that inherits another interface it must
provide implementation for all the methods defined within the interface inheritance
chain.
Example:
interface A
{
void method1();
}
/* One interface can extend another interface. B now has two abstract methods */
interface B extends A
{
void method2();
}
Output:
F:\> java MyClass
--Method from Interface: A
—
--Method from Interface: B
—
--Method of the class:
MyClass--
Class Interface
The class is denoted by a keyword class The interface is denoted by a keyword
interface
The class contains data members and The interfaces may contain data members
methods. but the methods are defined in and methods but the methods are not
the class implementation. thus class defined. the interface serves as an outline
contains an executable code for the class
By creating an instance of a class the class you cannot create an instance of an
members can be accessed interface
The class can use various access specifiers The interface makes use of only public
like public, private or protected access specifier
The members of a class can be constant or The members of interfaces are always
final declared as final
1. interface Bank
2. {
3. float
rateOfInterest(); 4. }
5. class SBI
implements Bank
6. {
7. public float
rateOfInterest()
8. {
9. return 9.15f;
10. }
11. }
12. class PNB
implements Bank
13. {
14. public float
rateOfInterest()
15. {
16. return 9.7f;
17. }
18. }
19. class TestInterface2
20. {
21. public static
void main(String[] args)
22.
Output: {
23. ROI: 9.15Bank b=new SBI();
24. System.out.println(
"ROI:
"+b.rateOfInterest(
));
25. }
26. }
Types of Exceptions 13
1. : Built-in Exceptions
3.5 A. Checked Exceptions 14
B. Unchecked Exceptions
3.5.2: User-Defined Exceptions (Custom Exceptions) 18
3.6 Multithreaded Programming 21
3.7 Thread Model 23
3.8 Creating Threads 27
3.9 Thread Priority 31
3.10 Thread Synchronization 33
3.11 Inter-Thread Communication 38
3.12 Suspending, Resuming and Stopping Threads 41
3.13 Wrappers 44
3.14 Autoboxing 47
Exception Handling basics - Multiple catch Clauses- Nested try Statements - Java’s built-in
exceptions, User defined exception, Multithreaded Programming: Java Thread Model,
Creating a thread and multiple threads- Priorities- Synchronization- Inter-Thread
communication-Suspending-Resuming and Stopping Threads- Multithreading. Wrappers-
Auto boxing.
Definition:
An Exception is an event that occurs during program execution which disrupts the normal
flow of a program. It is an object which is thrown at runtime.
Occurrence of any kind of exception in java applications may result in an abrupt
termination of the JVM or simply the JVM crashes.
In Java, an exception is an object that contains:
o Information about the error including its type
o The state of the program when the error occurred
o Optionally, other custom information
1
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Exceptions: Exceptions represents errors in the Java application program, written by the
user. Because the error is in the program, exceptions are expected to be handled, either
Try to recover it if possible
Minimally, enact a safe and informative shutdown.
Sometimes it also happens that the exception could not be caught and the program may
get terminated. Eg. ArithmeticException
An exception can occur for many different reasons. Following are some scenarios where an
exception occurs.
A user has entered an invalid data.
A file that needs to be opened cannot be found.
A network connection has been lost in the middle of communications or the JVM has
Errors: Errors represent internal errors of the Java run-time system which could not be
handled easily. Eg. OutOfMemoryError.
try Block:
The java code that might throw an exception is enclosed in try block. It must be used
within the method and must be followed by either catch or finally block.
3
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
catch Block:
Exceptions thrown during execution of the try block can be caught and handled in a
catch block.
On exit from a catch block, normal execution continues and the finally block is
executed.
finally Block:
A finally block is always executed, regardless of the cause of exit from the try block, or
whether any catch block was executed.
Generally finally block is used for freeing resources, cleaning up, closing
connections etc.
Even though there is any exception in the try block, the statements assured by
finally block are sure to execute.
Rule:
For each try block there can be zero or more catch blocks, but only one
finally block.
The finally block will not be executed if program exits(either by calling
System.exit() or by causing a fatal error that causes the process to abort).
try {
// Code block
}
catch (ExceptionType1 e1) {
// Handle ExceptionType1 exceptions
}
catch (ExceptionType2 e2) {
// Handle ExceptionType2 exceptions
}
// ...
finally {
//
Code
alway
s
execu
ted
4
after
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
the
DOWNLOADED // try FROM STUCOR
DOWNLOADED FROM STUCOR APP Department of CSE
Rules for try, catch and finally Blocks:
1) Statements that might generate an exception are placed in a try block.
2) Not all statements in the try block will execute; the execution is interrupted if an
exception occurs
3) For each try block there can be zero or more catch blocks, but only one finally
block.
4) The try block is followed by
i. one or more catch blocks
ii. or, if a try block has no catch block, then it must have the finally block
5) A try block must be followed by either at least one catch block or one finally block.
6) A catch block specifies the type of exception it can catch. It contains the code
known as exception handler
7) The catch blocks and finally block must always appear in conjunction with a try
block.
8) The order of exception handlers in the catch block must be from the most specific
exception
Output:
Program Explanation:
The JVM firstly checks whether the exception is handled or not. If exception is not
handled, JVM provides a default exception handler that performs the following tasks:
Prints out exception description.
Prints the stack trace (Hierarchy of methods where the exception occurred).
Causes the program to terminate.
5
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Example:
public class Demo
{
public static void main(String args[])
{
try {
int data=25/0;
System.out.println(data);
}
catch(ArithmeticException e)
{
System.out.println(e);
}
finally {
System.out.println("finally
block is always
executed");
}
System.out.println("rest of
the code...");
}
}
Output:
java.lang.ArithmeticException: / by zero
finally block is always executed
rest of the code...
6
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Multiple catch is used to handle many different kind of exceptions that may be generated
while running the program. i.e more than one catch clause in a single try block can be used.
Rules:
At a time only one Exception can occur and at a time only one catch block is executed.
All catch blocks must be ordered from most specific to most general i.e.
catch for ArithmeticException must come before catch for Exception.
Syntax:
try {
// Code block
}
catch (ExceptionType1 e1) {
// Handle ExceptionType1 exceptions
}
catch (ExceptionType2 e2) {
// Handle ExceptionType2 exceptions
}
7
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Example:
try
{
int a[]= {1,5,10,15,16};
System.out.println("a[1] = "+a[1]);
System.out.println("a[2]/a[3] =
"+a[2]/a[3]);
System.out.println("a[5] = "+a[5]);
}
catch(ArithmeticException e)
{
System.out.println("Arithmetic
Exception occurs");
}
catch(ArrayIndexOutOfBoundsExcep
tion e)
{
System.out.println("ArrayIndexOu
tOfBounds Exception occurs");
8
}
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
catch(Exception e)
DOWNLOADED
{ FROM STUCOR
DOWNLOADED FROM STUCOR APP Department of CSE
System.out.println("rest of the code");
}
}
Output:
a[1] = 5
a[2]/a[3] = 0
ArrayIndexOutOfBounds Exception occurs
rest of the code
Definition: try block within a try block is known as nested try block.
Before catching an exception, it is must to throw an exception first. This means that
there should be a code somewhere in the program that could catch exception thrown in
the try block.
An exception can be thrown explicitly
1. Using the throw statement
2. Using the throws statement
10
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
The Exception reference must be of type Throwable class or one of its subclasses. A detail
message can be passed to the constructor when the exception object is created.
Example:
Output:
In this example, we have created the validate method that takes integer value as a
parameter. If the age is less than 18, we are throwing the ArithmeticException otherwise
print a message welcome to vote.
Example:
1. import java.util.Scanner;
2.public class ThrowsDemo 3.
{
4. static void divide(int num, int din) throws ArithmeticException
5. {
6. int result=num/din;
7.System.out.println("Result : "+result); 8.
}
9. public static void main(String args[])
10. {
11. int n,d;
12. Scanner in=new Scanner(System.in);
13. System.out.println("Enter the
Numerator : ");
14. n=in.nextInt();
15. System.out.println("Enter the
Denominator : ");
16. d=in.nextInt();
17. try
18. {
19. divide(n,d);
20. }
21. catch(Exception e)
22. {
23. System.out.println(" Can't Handle :
divide by zero ERROR");
24. }
25. System.out.println(" ** Continue with
rest of the code ** ");
26. }
27. }
Output:
12
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Enter the Numerator :
DOWNLOADED
4 FROM STUCOR
DOWNLOADED FROM STUCOR APP Department of CSE
Enter the Denominator :
0
Can't Handle : divide by zero ERROR
** Continue with rest of the code **
Enter the Numerator :
6
Enter the Denominator :
2
Result : 3
** Continue with rest of the code **
13
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Built-in exceptions are the exceptions which are available in Java libraries. These
exceptions are suitable to explain certain error situations. Below is the list of important
built-in exceptions in Java.
A. Checked Exceptions:
Checked exceptions are called compile-time exceptions because these exceptions are
checked at compile-time by the compiler.
Checked Exceptions forces programmers to deal with the exception that may be thrown.
The compiler ensures whether the programmer handles the exception using try.. catch ()
block or not. The programmer should have to handle the exception; otherwise,
compilation will fail and error will be thrown.
14
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Output:
To make program able to compile, you must handle this error situation in try-catch block.
Below given code will compile absolutely fine.
With try-catch
import java.io.*;
public class CheckedExceptionExample
{ public static void main(String[]
args) { try {
@SuppressWarnings("resource")
FileReader file = new
FileReader("src/somefile.java");
System.out.println(file.toString());
}
catch(FileNotFoundException e)
{ System.out.println("Sorry...Requested resource not
availabe...");
} }
}
Output:
Sorry...Requested resource not availabe... 15
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
B. Unchecked Exceptions(RunTimeException):
Example:
1. ArrayIndexOutOfBoundsException
2. ArithmeticException
3. NullPointerException.
class Main {
public static void main(String args[]) {
int x = 0;
int y = 10; int
z = y/x;
}
}
Output:
16
CS3391 – Object Oriented Programming – III Semester CSE Unit - 3
Output:
NullPointerException..
Output:
The following program illustrates how user-defined exceptions can be created and
thrown.
if(rem==0)
{
System.out.println(arr[i]+" is an Even Number");
}
else
{
EvenNoException exp=new EvenNoException(arr[i]+" is
not an Even Number");
throw exp;
}
}
catch(EvenNoException exp)
{
System.out.println("Exception thrown is "+exp);
}
} // for loop
} // main()
} // class
Output:
2 is an Even Number
Exception thrown is EvenNoException: 3 is not an Even Number
4 is an Even Number
Exception thrown is EvenNoException: 5 is not an Even Number
Program Explanation:
In the above program, the EvenNumberException class is created which inherits the
Exception super class. Then the constructor is defined with the call to the super class
constructor. Next, an array arr is created with four integer values. In the main(), the array
elements are checked one by one for even number. If the number is odd, then the object of
EvenNumberException class is created and thrown using throw clause. The
EvenNumberException is handled in the catch block.
Basis for
final finally finalize
comparison
3.6.2: MULTITHREADING
A program can be divided into a number of small processes. Each small process can be
addressed as a single thread.
Definition: Multithreading
Multithreading is a technique of executing more than one thread, performing different
tasks, simultaneously.
Multithreading enables programs to have more than one execution paths which
executes concurrently. Each such execution path is a thread. For example, one thread
is writing content on a file at the same time another thread is performing spelling
check.
MULTITASKING
Definition: Multitasking
Multitasking is a process of executing multiple tasks simultaneously. We use
multitasking to maximize the utilization of CPU.
Different states, a thread (or applet/servlet) travels from its object creation to
object removal (garbage collection) is known as life cycle of thread. A thread goes
through various stages in its life cycle. At any time, a thread always exists in any one of
the following state:
1. New State
2. Runnable State
3. Running State
4. Waiting/Timed Waiting/Blocked state
5. Terminated State/ dead state
1. New State:
A new thread begins its life cycle in the new state. It remains in this state until the
program starts
the thread by calling start() method, which places the thread in the runnable
state.
A new thread is also referred to as a born thread.
When the thread is in this state, only start() and stop() methods can be called.
Calling any other methods causes an IllegalThreadStateException.
Sample Code: Thread myThread=new Thread();
2. Runnable State:
After a newly born thread is started, the thread becomes runnable or running by
calling the run() method.
A thread in this state is considered to be executing its task.
Sample code: myThread.start();
The start() method creates the system resources necessary to run the thread,
schedules the thread to run and calls the thread’s run() method.
3. Running state:
Thread scheduler selects thread to go from runnable to running state. In running
state Thread starts executing by entering run() method.
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
Thread scheduler selects thread from the runnable pool on basis of priority, if
priority of two threads is same, threads are scheduled in unpredictable manner.
Thread scheduler behaviour is completely unpredictable.
When threads are in running state, yield() method can make thread to go in
Runnable state.
Timed Waiting:
A runnable thread can enter the timed waiting state for a specified interval of time
by calling the sleep() method.
After the interval gets over, the thread in waiting state enters into the runnable
state.
Sample Code:
try {
Thread.sleep(3*60*1000);// thread sleeps for 3 minutes
}
catch(InterruptedException ex) { }
Blocked State:
When a particular thread issues an I/O request, then operating system moves the
thread to
blocked state until the I/O operations gets completed.
This can be achieved by calling suspend() method.
After the I/O completion, the thread is sent back to the runnable state.
5. Terminated State:
A runnable thread enters the terminated state when,
(i) It completes its task (when the run() method has finished)
public void run() { }
(ii) Terminates ( when the stop() is invoked) – myThread.stop();
New : A thread begins its life cycle in the new state. It remains in this state until the
start() method is called on it.
Runnable : After invocation of start() method on new thread, the thread becomes
runnable.
Running : A thread is in running state if the thread scheduler has selected it.
Waiting : A thread is in waiting state if it waits for another thread to perform a task.
In this stage the thread is still alive.
Terminated : A thread enter the terminated state when it complete its task.
The “main” thread is a thread that begins running immediately when a java
program starts up. The “main” thread is important for two reasons:
1. It is the thread form which other child threads will be spawned.
2.It must be the last thread to finish execution because it performs various shutdown
actions.
Although the main thread is created automatically when our program is started,
it can be controlled through a Thread object.
To do so, we must obtain a reference to it by calling the method currentThread().
Example:
class CurrentThreadDemo {
public static void main(String args[])
{
Thread t=Thread.currentThread();
System.out.println(“Current Thread: “+t);
try {
for(int n=5;n>0;n--)
{ System.out.println(n);
Thread.sleep(1000);// delay for 1 second
}
} catch(InterruptedException e) {
System.out.println(“Main Thread Interrrupted”);
}
}
}
Output:
Current Thread: Thread[main,5,main]
After name change: Thread[My Thread,5,main]
5
4
3
2
1
We can create threads by instantiating an object of type Thread. Java defines two ways
to create threads:
Example:
class MyThread implements Runnable
{
}
}
}
}
public class RunnableDemo {
public static void main(String[] args)
{
MyThread obj=new MyThread();
MyThread obj1=new MyThread();
Thread t=new Thread(obj,"Thread-1");
t.start();
Thread t1=new Thread(obj1,"Thread-2");
t1.start();
}
}
Output:
Thread-0 # Printing 0
Thread-1 # Printing
0 Thread-1 #
Printing 1
Thread-0 # Printing 1
Thread-1 # Printing
2 Thread-0 #
Printing 2
Every thread in java has some priority, it may be default priority generated by
JVM or customized priority provided by programmer.
Priorities are represented by a number between 1 and 10.
1 – Minimum Priority5 – Normal Priority 10 – Maximum Priority
Thread scheduler will use priorities while allocating processor. The thread which
is havingscheduler
Thread highest priority will get
is a part of the
Javachance
Virtualfirst.
Machine (JVM). It decides which
thread should execute first among two or more threads that are waiting for
execution.
It is decided based on the priorities that are assigned to threads. The thread
having highest priority gets a chance first to execute.
If two or more threads have same priorities, we can’t predict the execution of
waiting threads. It is completely decided by thread scheduler. It depends on the
type of algorithm used by thread scheduler.
Higher priority threads get more CPU time than lower priority threads.
A higher priority thread can also preempt a lower priority thread. For instance,
when a lower priority thread is running and a higher priority thread resumes (for
sleeping or waiting on I/O), it will preempt the lower priority thread.
If two or more threads have same priorities, we can’t predict the execution of
waiting threads. It is completely decided by thread scheduler. It depends on the
type of algorithm used by thread scheduler.
3 constants defined in Thread class:
1. public static int MIN_PRIORITY
2. public static int NORM_PRIORITY
3.public static int MAX_PRIORITY
Default priority of a thread is 5 (NORM_PRIORITY). The value of MIN_PRIORITY is
1 and the value of MAX_PRIORITY is 10.
To set a thread’s priority, use the setPriority() method.
To obtain the current priority of a thread, use getPriority() method.
Example:
class TestMultiPriority1 extends Thread{
public void run(){
System.out.println("running thread name is:"+Thread.currentThread().getNam
e());
System.out.println("running thread priority is:"+
Thread.currentThread().getPriority());
Output:
running thread name is:Thread-0
running thread priority is:10
running thread name is:Thread-1
running thread priority is:1
3.10: Thread Synchronization
Thread Synchronization
There are two types of thread synchronization mutual exclusive and inter-thread
communication.
1. Mutual Exclusive
1. Synchronized method.
2. Synchronized block.
3. static synchronization.
2. Cooperation (Inter-thread communication in java)
Mutual Exclusive
Mutual Exclusive helps keep threads from interfering with one another while sharing
data. This can be done by two ways in java:
1. by synchronized method
2. by synchronized block
class Table{
synchronized void printTable(int
n)//synchronized method
{
for(int i=1;i<=5;i++)
{ System.out.println(n*i);
try{
Thread.sleep(400); }
catch(Exception e)
{ System.out.println(e); }
}
}
}
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
Example of
synchronized block
class Table{
void
printTable(int n)
{
synchronized(th
is)
//synchronized
block
{
for(int i=1;i<=5;i++)
{ System.out.println(n*
i);
try{
Thread.sleep(400);
}catch(Exception e)
{System.out.println(e);}
}
}
}//end of the method
}
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
class MyThread1 extends Thread{
DOWNLOADED
Table t;
FROM STUCOR
37
}
}
t1.start();
t2.start();
}
}
Output:
5
10
15
20
25
100
200
300
400
500
It is implemented by following methods of Object class and all these methods can be
called only from within a synchronized context.
Example: The following program illustrates simple bank transaction operations with
inter-thread communication:
class Customer{
int Balance=10000;
if(Balance<amount)
{
System.out.println("Less balance; Balance = Rs. "+Balance+"\nWaiting for
deposit...\n");
try
{
wait();
}
catch(Exception e){}
}
Balance-=amount;
System.out.println("withdraw completed...");
}
synchronized void deposit(int amount)
{
System.out.println("going to deposit... Rs. "+amount);
Balance+=amount;
System.out.println("deposit completed... Balance = "+Balance);
notify();
}
}
class ThreadCommn
{
public static void main(String args[]) {
Customer c=new Customer();
new Thread()
{
public void run()
{c.withdraw(20000);}
}.start();
new Thread(){
public void run()
{c.deposit(15000);}
}.start();
}
}
Output:
going to withdraw...20000
Less balance; Balance = Rs. 10000
Waiting for deposit...
The functions of Suspend, Resume and Stop a thread is performed using Boolean-type
flags in a multithreading program. These flags are used to store the current status of the
thread.
1. If the suspend flag is set to true, then run() will suspend the execution of the
currently running thread.
2. If the resume flag is set to true, then run() will resume the execution of the
suspended thread.
3. If the stop flag is set to true, then a thread will get terminated.
Example
NewThread(String
threadname)
{
name =
threadname;
thr = new Thread(this, name);
System.out.println("New thread : " + thr);
suspendFlag = false;
stopFlag = false;
thr.start(); // start the thread
}
synchronized(this)
{
while(suspendFlag)
{
wait();
}
if(stopFlag)
break;
}
}
}
catch(InterruptedE
xception e)
{
System.out.printl
n(name + "
interrupted");
}
System.out.println(
name + "
exiting...");
}
synchronized void
mysuspend()
{
suspendFlag = true;
}
synchronized void
myresume()
{
suspendFlag = false;
notify();
}
synchronized void
mystop()
{
suspendFlag=false;
stopFlag=true;
CS3391 – Object Oriented Programming – III Sem CSE
notify(); Unit 3
DOWNLOADED
System.out.println(" FROM STUCOR
Thread "+name+"
43
class SuspendResumeThread
{
public static void main(String args[])
{
try
{
Thread.sleep(1000);
obj1.mysuspend();
System.out.println("Suspending thread One...");
Thread.sleep(1000);
obj1.myresume();
System.out.println("Resuming thread One...");
obj2.mysuspend();
System.out.println("Suspending thread Two...");
Thread.sleep(1000);
obj2.myresume();
System.out.println("Resuming thread Two...");
obj2.mystop();
}
catch(InterruptedException e)
{
System.out.println("Main thread
Interrupted..!!");
}
}
}
Output:
One : 1
two : 1
One : 2
Suspending thread One...
two : 2
two : 3
Resuming thread One...
One : 3
Suspending thread Two...
One : 4
Resuming thread Two...
two : 4
Thread two Stopped!!!
Main thread exiting...
two exiting...
One : 5
One : 6
One : 7
One : 8
One : 9
One exiting...
3.13: Wrappers
Wrappers
Wrapper classes provide a way to use primitive data types (int, boolean, etc..) as objects.
The table below shows the primitive type and the equivalent wrapper class:
Primitive Data Type Wrapper Class
byte Byte
short Short
int Integer
long Long
float Float
double Double
Boolean Boolean
char Character
Example:
//Java Program to convert all primitives into its corresponding
//wrapper objects and vice-versa
public class
WrapperExample3{ public static void
main(String args[]){ byte b=10;
short s=20;
int i=30;
long l=40;
float f=50.0F;
double d=60.0D;
char c='a';
boolean b2=true;
//Printing objects
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
//Printing primitives
System.out.println("---Printing primitive values---");
System.out.println("byte value: "+bytevalue);
System.out.println("short value: "+shortvalue);
System.out.println("int value: "+intvalue);
System.out.println("long value: "+longvalue);
System.out.println("float value: "+floatvalue);
System.out.println("double value: "+doublevalue);
System.out.println("char value: "+charvalue);
System.out.println("boolean value: "+boolvalue);
}
}
Output
---Printing object values---
Byte object: 10
Short object: 20
Integer object: 30
Long object: 40
3.14: Autoboxing
14. Autoboxing
The automatic conversion of primitive data type into its corresponding wrapper class is
known as autoboxing, for example, byte to Byte, char to Character, int to Integer, long to
Long, float to Float, boolean to Boolean, double to Double, and short to Short.
Example:
public class
WrapperExample1{ public static void
main(String args[]){
//Converting int into Integer
int a=20;
Integer
i=Integer.valueOf(a);//conve
rting int into Integer
explicitly
Integer j=a;//autoboxing, now compiler will write Integer.valueOf(a) internally
System.out.println(a+" "+i+" "+j);
}
}
Output
20 20 20
1. Unboxing
The automatic conversion of wrapper type into its corresponding primitive type is
known as unboxing. It is the reverse process of autoboxing.
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
Example:
A Stack Trace is a list of method calls from the point when the application was
started to the current location of execution within the program. A Stack Trace is
produced automatically by the Java Virtual Machine when an exception is thrown
to indicate the location and progression of the program up to the point of the
exception. They are displayed whenever a Java program terminates with an
uncaught exception.
We can access the text description of a stack trace by calling the
printStackTrace() method of the Throwable class.
The java.lang.StackTraceElement is a class where each element represents a
single stack frame.
We can call the getStackTrace() method to get an array of
StackTraceElement
objects that we want analyse in our program.
Class Declaration
Following is the declaration for java.lang.StackTraceElement class
public final class StackTraceElement extends Object implements
Serializable
Class constructors
Parameters:
declaringClass – the fully qualified name of the class containing the execution point
represented by the stack trace element.
methodName – the name of the method containing the execution point represented
by
the stack trace element.
fileName – the name of the file containing the execution point represented by the
stack
trace element, or null if this information is unavailable
lineNumber – the line number of the source line containing the execution point
represented by this stack trace element, or a negative number if this
information is unavailable. A value of -2 indicates that the method containing
the execution point is a native method.
Throws: NullPointerException – if declaringClass or methodName is null.
Example:
The following program for finding factorial(using recursion) prints the stack trace of a
recursive factorial function.
import java.util.Scanner;
Output:
CS3391 – Object Oriented Programming – III Sem CSE Unit 3
Enter n:
DOWNLOADED
3
FROM STUCOR
51
Factorial (3):
StackTraceTest.factorial(StackTraceTest.java:10)
StackTraceTest.main(StackTraceTest.java:30)
Factorial (2):
StackTraceTest.factorial(StackTraceTest.java:10)
StackTraceTest.factorial(StackTraceTest.java:20)
StackTraceTest.main(StackTraceTest.java:30)
Factorial (1):
StackTraceTest.factorial(StackTraceTest.java:10)
StackTraceTest.factorial(StackTraceTest.java:20)
StackTraceTest.factorial(StackTraceTest.java:20)
StackTraceTest.main(StackTraceTest.java:30)
return 1
return 2
return 6
Java assert keyword is used to create assertions in Java, which enables us to test
the assumptions about our program. For example, an assertion may be to make
sure that an employee’s age is positive number.
Assertions are Boolean expressions that are used to test/validate the code. It is a
statement in java that can be used to test your assumptions about the program.
For making the program more readable and user friendly, the assert statements
are used.
For validating the internal control flow and class invariant, the assertions are
used.
Syntax of using Assertion:
There are two ways to use assertion.
First way:
1. assert expression;
Here the Expression is evaluated by the JVM and if any error occurs then
AssertionError occurs.
Second way:
2. assert expression1 : expression2;
In this, Expression1 is evaluated and if it is false then the error message is displayed
with the help of Expression2.
For Enabling:
We can enable the assertions by running the java program with the
-enableassertions (or) -ea option:
When assertions are disabled, the class loader strips out the assertion code so
that it won’t slow excetuion.
Example:
class Test
{
public static void main( String args[] )
{
int value = 15;
assert value >= 20 : " Underweight";
System.out.println("value is "+value);
}
}
Output:
value is 15
Output:
Exception in thread "main" java.lang.AssertionError:
Underweight
Advantage of Assertions:
It provides an effective way to detect and correct
programming errors.
Input/output Basics 1
4.1 4.1.1: Streams 3
I/O Basics – Reading and Writing Console I/O – Reading and Writing Files. Generics:
Generic Programming – Generic classes – Generic Methods – Bounded Types –
Restrictions and Limitations. Strings: Basic String class, methods and String Buffer Class.
Java I/O (Input and Output) is used to process the input and produce the output.
Java Input
There are several ways to get input from the user in Java. To get input by using
Scanner object, import Scanner class using:
import java.util.Scanner;
Then, we will create an object of Scanner class which will be used to get input
from the user.
Scanner input = new Scanner
(System.in); int number = input.nextInt();
import
java.util.Scanner; class
Input{
public static void main(String[] args)
{ Scanner input =newScanner
(System.in); System.out.print ("Enter an
integer: "); int number =input.nextInt ();
CS3391 – Object Oriented Programming – III Sem CSE Unit 4
Output
Enter an integer: 23
You entered 23
Java Output
What's the difference between println (), print () and printf ()?
print () - prints string inside the quotes.
println () - prints string inside the quotes similar like print() method. Then the
4.1.1: STREAMS
PREDEFINED STREAMS:
In java, 3 streams are created for us automatically. All these streams are attached
with console.
1)System.in: This is used to feed the data to user's program and usually a keyboard
is used as standard input stream and represented as System.in. – It is an object of type
InputStream.
2)System.out: This is used to output the data produced by the user's program and
usually a computer screen is used to standard output stream and represented as
System.out. - It is an object of type PrintStream
3)System.err: This is used to output the error data produced by the user's
program and usually a computer screen is used to standard error stream and
represented as System.err. - It is an object of type PrintStream
TYPES OF STREAMS:
1.Byte Stream – Byte Streams provide a convenient means of handling input and output
in terms of bytes. Byte streams are used when reading or writing binary data.
2.Character Stream – Character streams provide a convenient means of handling input
or output in terms of characters. In some cases, character streams are more efficient
than byte streams.
OutputStream
Java application uses an output stream to write data to a destination, it may be a
file, an array, peripheral device or socket.
InputStream
Java application uses an input stream to read data from a source, it may be a file,
an array, peripheral device or socket.
OutputStream class
Method Description
1) public void write(int)throws is used to write a byte to the current output
IOException stream.
2) public void write(byte[])throws is used to write an array of byte to the
IOException current output stream.
3) public void flush()throws
flushes the current output stream.
IOException
4) public void close()throws
is used to close the current output stream.
IOException
InputStream class
Method Description
1) public abstract int read() reads the next byte of data from the input stream.It
throws IOException returns -1 at the end of file.
2) public int available() throws returns an estimate of the number of bytes that can
IOException be read from the current input stream.
3) public void close()throws
is used to close the current input stream.
IOException
FileOutputStream class
Java FileOutputStream is an output stream for writing data to a file.
If you have to write primitive values then use FileOutputStream. Instead, for
character-oriented data, prefer FileWriter. But you can write byte-oriented as
well as character-oriented data.
Method Description
protected void finalize() It is used to clean up the connection with the file output
stream.
void write(byte[] ary) It is used to write ary.length bytes from the byte array to
the file output stream.
void write(byte[] ary, int It is used to write len bytes from the byte array starting at
off, int len) offset off to the file output stream.
void write(int b) It is used to write the specified byte to the file output stream.
void close() It is used to closes the file output stream.
Output:success...
FileInputStream class
Java FileInputStream class obtains input bytes from a file.It is used for reading
streams of raw bytes such as image data. For reading streams of characters, consider
using FileReader.
It should be used to read byte-oriented data for example to read image, audio,
video etc.
Method Description
int available() It is used to return the estimated number of bytes that can
be read from the input stream.
int read() It is used to read the byte of data from the input stream.
int read(byte[] b) It is used to read up to b.length bytes of data from the
input stream.
int read(byte[] b, int off, It is used to read up to len bytes of data from the input
int len) stream.
long skip(long x) It is used to skip over and discards x bytes of data from the
input stream.
protected void finalize() It is used to ensure that the close method is call when
there is no more reference to the file input stream.
void close() It is used to closes the stream.
12.BufferedOutputStream and
BufferedInputStream
BufferedOutputStream class
Java BufferedOutputStream
class uses an internal buffer to
Constructor Description
store data. It adds
BufferedOutputStream(Output It creates the new buffered output stream which is
more efficiency than to write data directly into a stream. So, it makes the
Stream os) used for writing the data to the specified output
performance fast.
stream.
BufferedOutputStream(Output It creates the new buffered output stream which is
Stream os, int size) used for writing the data to the specified output
stream with a specified buffer size.
Method Description
void write(int b) It writes the specified byte to the buffered output stream.
void write(byte[] b, int off, It write the bytes from the specified byte-input stream into
int len) a specified byte array, starting with the given offset
void flush() It flushes the buffered output stream.
1. import java.io.*;
2. class Test{
3. public static void main(String args[])throws Exception{
4. FileOutputStream fout=new FileOutputStream("f1.txt");
5. BufferedOutputStream bout=new BufferedOutputStream(fout);
6. String s="Java is my favourite language";
7. byte b[]=s.getBytes();
8. bout.write(b);
9. bout.flush();
10. bout.close();
11. fout.close();
12. System.out.println("success");
13. }
14.}
Output: success...
BufferedInputStream class
Java BufferedInputStream class is used to read information from stream. It
internally uses buffer mechanism to make the performance fast.
Constructor Description
BufferedInputStream(InputStream It creates the BufferedInputStream and saves it
IS) argument, the input stream IS, for later use.
BufferedInputStream(InputStream It creates the BufferedInputStream with a
IS, int size) specified buffer size and saves it argument, the
input stream IS, for later use.
Method Description
int available() It returns an estimate number of bytes that can be read from
the input stream without blocking by the next invocation
method for the input stream.
int read() It read the next byte of data from the input stream.
int read(byte[] b, int off, It read the bytes from the specified byte-input stream into a
int ln) specified byte array, starting with the given offset.
void close() It closes the input stream and releases any of the system
resources associated with the stream.
void reset() It repositions the stream at a position the mark method was
last called on this input stream.
void mark(int readlimit) It sees the general contract of the mark method for the input
stream.
long skip(long x) It skips over and discards x bytes of data from the input
stream.
boolean markSupported() It tests for the input stream to support the mark and reset
methods.
DataInputStream class
DataInputStream class allows the programmer to read primitive data from the
input source.
Method Description
int read(byte[] b) It is used to read the number of bytes from the input
stream.
int readInt() It is used to read input bytes and return an int value.
byte readByte() It is used to read and return the one input byte.
char readChar() It is used to read two input bytes and returns a char value.
double readDouble() It is used to read eight input bytes and returns a double
value.
boolean readBoolean() It is used to read one input byte and return true if byte is
non zero, false if byte is zero.
int skipBytes(int x) It is used to skip over x bytes of data from the input
stream.
void readFully(byte[] b) It is used to read bytes from the input stream and store
them into the buffer array.
void readFully(byte[] b, int It is used to read len bytes from the input stream.
off, int len)
DataOutputStream class
The DataOutputStream stream let you write the primitives to an output source.
Example:
Following is the example to demonstrate DataInputStream and DataInputStream. This
example reads 5 lines given in a file test.txt and converts those lines into capital letters
and finally copies them into another file test1.txt.
Method Description
int size() It is used to return the number of bytes written to the data
output stream.
void write(int b) It is used to write the specified byte to the underlying
output stream.
void writeChar(int v) It is used to write char to the output stream as a 2-byte
value.
void writeChars(String s) It is used to write string to the output stream as a
sequence of characters.
Test.txt
this is test 1 ,
this is test 2 ,
this is test 3 ,
this is test 4 ,
this is test 5 ,
test.java
import java.io.*;
public class Test{
public static
void
main(String
args[])throws
IOException{
DataInputStream d = new DataInputStream(new FileInputStream("test.txt"));
DataOutputStream out = new DataOutputStream(new FileOutputStream("test1.txt"));
String count;
while((count = d.readLine()) != null){
String u = count.toUpperCase();
System.out.println(u);
out.writeBytes(u + " ,");}
d.close();
out.close();
}}
Output:
THIS IS TEST 1 ,
THIS IS TEST
2 , THIS IS
TEST 3 , THIS
CS3391
IS – Object
TEST 4 ,Oriented Programming – III Sem CSE Unit 4
DOWNLOADED
THIS IS TEST 5 , FROM STUCOR
13
4. PrintStream
The PrintStream class provides methods to write data to another stream. The
PrintStream class automatically flushes the data so there is no need to call flush()
method. Moreover, its methods don't throw IOException.
There are many methods in PrintStream class. Let's see commonly used methods of
PrintStream class:
public void print(boolean b): it prints the specified boolean value.
public void print(char c): it prints the specified char value.
public void print(char[] c): it prints the specified character array values.
public void print(int i): it prints the specified int value.
public void print(long l): it prints the specified long value.
public void print(float f): it prints the specified float value.
public void print(double d): it prints the specified double value.
public void print(String s): it prints the specified string value.
public void print(Object obj): it prints the specified object value.
public void println(boolean b): it prints the specified boolean value and
line.
public void println(char[] c): it prints the specified character array values and
line.
public void println(long l): it prints the specified long value and terminates the
line.
public void println(float f): it prints the specified float value and terminates the
line.
public void println(double d): it prints the specified double value and
the line./li>
public void println(Object obj): it prints the specified object value and
Output:10
Reader class:
The Java.io.Writer class is a abstract class for writing to character streams.
Method Description
This method closes the stream and releases any
abstract void close()
system resources associated with it.
This method marks the present position in the
void mark(int numChars)
stream.
This method tells whether this stream supports
boolean markSupported()
the mark() operation.
int read() This method reads a single character.
int read(char buffer[]) This method reads characters into an array.
abstract int read(char buffer[],int This method reads characters into a portion of
offset,int numChars) an array.
This method tells whether this stream is ready
boolean ready()
to be read.
void reset() This method resets the stream.
long skip(long numChars) This method skips characters.
Writer class:
The Java.io.Writer class is a abstract class for writing to character streams
Methods defined by Writer class:
Method Description
This method appends the specified
Writer append(char ch)
character to this writer.
This method appends the specified
Writer append(CharSequence chars)
character sequence to this writer.
Writer append(CharSequence chars, int This method appends the specified
begin, int end) character sequence to this writer.
This method loses the stream, flushing it
abstract void close()
first.
abstract void flush() This method flushes the stream.
void write(int ch) This method writes a single character.
void write(char buffer[]) This method writes an array of characters.
Method Description
Constructor Description
It gets filename in string. It opens the given file in read
FileReader(String file)
mode. If file doesn't exist, it throws FileNotFoundException.
It gets filename in file instance. It opens the given file in
FileReader(File file) read mode. If file doesn't exist, it throws
FileNotFoundException.
BufferedReader
BufferedReader class can read character data
from the file.
Constructors
1. BufferedReader br = new BufferedReader(Reader r)
2. BufferedReader br = new BufferedReader(Reader r, int buffersize)
3. BufferedReader never communicates directly with It should
the file. Communicate through some reader object only.
3.
In
pu
tSt
re
am
Re
ad
er
an
d
Ou
tp
utS
tre
am
Wr
ite
r – Object Oriented Programming – III Sem CSE
CS3391 Unit 4
cla
DOWNLOADED
sse FROM STUCOR
19
OutputStreamWriterDemo.java
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class OutputStreamWriterDemo
{ public static void main(String[] args)
{
String str = "Hello World! \nThis is OutputStreamWriter Code Example.”
BufferedWriter bw = null;
try {
Writer w = new OutputStreamWriter(System.out);
bw = new BufferedWriter(w);
bw.write(str);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.clo
se();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Output
Hello World!
This is OutputStreamWriter
Code Example.
InputStreamReader
InputStreamReader behaves as bridge from bytes stream to character stream. It
also uses charset to decode byte stream into character stream.
Constructors
1. InputStreamReader(InputStream in_strm)
2. InputStreamReader(InputStream in_strm, Charset cs)
3. InputStreamReader(InputStream in_strm, CharsetDecoder dec)
4. InputStreamReader(InputStream in_strm, String charsetName)
InputStreamReaderDemo.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderDemo {
public static void main(String[]
args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
int a=0;
int
b=0;
try {
System.out.println("Enter a number..");
a = Integer.parseInt(br.readLine());
System.out.println("Enter another number..");
b = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("you
CS3391 – Object Oriented entered
Programming – III Sem CSE "+a+" and "+b); }} Unit 4
Output
Enter a number..
10
Enter another number..
14
you entered 10 and 14
4. PrintWriter
Class
The Java.io.PrintWriter class prints formatted representations of objects to a text-
output stream.
PrintWriter defines several constructors. The one we will use is shown here:
PrintWriter(OutputStream outputStream, boolean flushOnNewline)
Here, outputStream is an object of type OutputStream, and flushOnNewline
controls
whether Java flushes the output stream every time a newline ('\\n') character is output.
If flushOnNewline is true, flushing automatically takes place. If false, flushing is not
automatic.
PrintWriter supports the print( ) and println( ) methods for all types including
Object. Thus, you can use these methods in the same way as they have been used with
System.out. If an argument is not a simple type, the PrintWriter methods call the
object's toString( ) method and then print the result.
To write to the console by using a PrintWriter, specify System.out for the output
stream and flush the stream after each newline. For example, this line of code creates
a PrintWriter that is connected to console output:
PrintWriter pw = new PrintWriter(System.out, true);
The Java Console class is be used to get input from console. It provides methods to read
texts and passwords.
If you read password using Console class, it will not be displayed to the user.
The java.io.Console class is attached with system console internally.
1. String text=System.console().readLine();
2. System.out.println("Text is: "+text);
Method Description
It is used to retrieve the reader object associated
Reader reader()
with the console
It is used to read a single line of text from the
String readLine()
console.
String readLine(String fmt, It provides a formatted prompt then reads the
Object... args) single line of text from the console.
It is used to read password that is not being
char[] readPassword()
displayed on the console.
char[] readPassword(String fmt, It provides a formatted prompt then reads the
Object... args) password that is not being displayed on the console.
Console format(String fmt, It is used to write a formatted string to the console
Object... args) output stream.
Console printf(String format, It is used to write a string to the console output
Object... args) stream.
It is used to retrieve the PrintWriter object
PrintWriter writer()
associated with the console.
void flush() It is used to flushes the console.
System class provides a static method console() that returns the singleton instance of
Console class.
public static Console console(){}
Console c=System.console();
1. import java.io.Console;
2. class ReadStringTest{
3. public static void main(String args[]){
4. Console c=System.console();
5. System.out.println("Enter your name: ");
6. String n=c.readLine();
7.System.out.println("Welcome "+n); 8.
}
9. }
Output
Java Console
Example to read
password
8. import
java.io.Console;
9. class
ReadPasswordTe
st{
10.public static void
main(String
args[]){
11.Console
c=System.console
();
12.System.out.printl
n("Enter
password: ");
13.char[]
ch=c.readPasswo
4.3: READING AND WRITING FILES
rd();
14.String
Whatpass=String.value
is File Handling in Java?
FileOf(ch);//converti
handling in Java implies reading from and writing data to a file.
The ngFile
charclass from the java.io package, allows us to work with different formats of
array
into string
files.
15.System.out.println("Password
is: "+pass);
In order to use the File class, you 9.
need to create an object of the class and specify the
}filename or directory name.
10.}
Output
For example:
1) // Import the File class
Enter password:
Password is: 123
CS3391 – Object Oriented Programming – III Sem CSE Unit 4
2) import java.io.File
3) // Specify the filename
4) File obj = new File("filename.txt");
The File class has many useful methods for creating and getting information about files.
For example:
Method Type Description
1) Create a File
To create a file in Java, you can use the createNewFile() method. This method
returns a boolean value: true if the file was successfully created, and false if
the file already exists.
Example:
import java.io.File;
import java.io.IOException;
FileWrite
2) created:
To afilename.txt
File
In the following example, we use the FileWriter class together with its write()
method to write some text to the file we created in the example above. Note
that when we are done writing to the file, we should close it with the close()
method:
Example:
import java.io.FileWriter; // Import the FileWriter class
import java.io.IOException; // Import the IOException class to handle errors
public class WriteToFile {
public static void main(String[] args) {
try {
FileWriter myWriter = new FileWriter("filename.txt");
myWriter.write("Files in Java might be tricky, but it is fun enough!");
myWriter.close();
3) Read a File
In the following example, we use the Scanner class to read the contents of the
text file we created in the previous example:
Example:
import java.io.File; // Import the File class
import java.io.FileNotFoundException; // Import this class to handle errors
import java.util.Scanner; // Import the Scanner class to read text files
public class ReadFile {
public static void main(String[] args) {
try {
File myObj = new File("filename.txt");
Scanner myReader = new Scanner(myObj);
while (myReader.hasNextLine()) {
String data = myReader.nextLine();
System.out.println(data);
}
myReader.close();
} catch (FileNotFoundException e)
{ System.out.println("An error
occurred."); e.printStackTrace();
}}}
Output:
Files in Java might be tricky, but it is fun
enough!
NON-GENERICS:
Example:
class NonGen
{
Object ob;
NonGen(Object o)
{
o
b
=
o
;
}
Object getob()
{
return ob;
}
void showType()
{
System.out.prin
tln("Type of ob
is
"+ob.getClass().
getName());
}
}
public class
NonGenDemo
{
public static void
main(String[] arg)
{
NonGen integerObj;
integerObj=new NonGen(88);
integerObj.showType();
int v=(Integer)integerObj.getob(); // casting required
System.out.println("Value = "+v);
NonGen strObj=new NonGen("Non-Generics Test");
strObj.showType();
String str=(String)strObj.getob(); // casting required
System.out.println("Vlaue = "+str);
} Oriented Programming – III Sem CSE
CS3391 – Object Unit 4
}
DOWNLOADED
Output:
FROM STUCOR
30
Limitation of Non-Generic:
1) Explicit casts must be employed to retrieve the stored data.
2) Type mismatch errors cannot be found until run time.
A class that can refer to any type is known as generic class. Here, we are using T
type parameter to create the generic class of specific type.
A generic class declaration looks like a non-generic class declaration, except that the
class name is followed by a type parameter section.
Where, the type parameter section, delimited by angle brackets (<>), follows the class
name. It specifies the type parameters (also called type variables)
Example:
public class Pair<T, S>
{
...
}
Purpose: To define a generic class with methods and fields that depends on type
variables.
T show()
{
return
obj;
}
void disp()
{
System.o
ut.pr
intln
(obj.
getC
lass(
).get
Nam
e());
}
}
CS3391 – Object Oriented Programming – III Sem CSE Unit 4
DOWNLOADED
public class FROM STUCOR
33
ob.disp();
System.out.println("value : " +ob.show());
Output:
java.lang.String
value : java programming with Generics
java.lang.Integer
value :550
In Generic parameterized types, we can pass more than 1 data type as parameter. It
works the same as with one parameter Generic type.
class Gen <T1,T2>
{
T1 obj1;
T2
obj2;
Gen(T1
o1,T2
o2)
{
obj1 = o1;
obj2 =
o2;
}
T1 get1()
{
return
obj1;
}
T2 get2()
{
return
CS3391 – obj2;
Object Oriented Programming – III Sem CSE Unit 4
DOWNLOADED
} FROM STUCOR
34
System.out.println(obj2.getClass().getName());
}
}
Output:
java.lang.String
java.lang.Integer
value 1 : java programming with Generics
value 2: 560
java.lang.Integer
java.lang.Integer
value 1 : 1000
value 2: 560
A Generic Method is a method with type parameter. We can write a single generic
method declaration that can be called with arguments of different types. Based on
the types of the arguments passed to the generic method, the compiler handles each
method call appropriately.
All generic method declarations have a type parameter section delimited by angle
brackets (< and >) that precedes the method's return type.
Each type parameter section contains one or more type parameters separated by
commas. A type parameter, also known as a type variable, is an identifier that
specifies a generic type name.
The type parameters can be used to declare the return type and act as
placeholders for the types of the arguments passed to the generic method, which
are known as actual type arguments.
A generic method's body is declared like that of any other method. Note that type
parameters can represent only reference types, not primitive types (like int,
double and char).
Example: (To iterate through the list and display the element using generic method)
System.out.println("String array");
a<String> o2=new a<String>();
String[] ar1={"Hai","Hello","Welcome","to","Java programming"};
o2.show(ar1);
System.out.println("Boolean array");
a<Boolean> o3=new a<Boolean>();
Boolean[] ar2={true,false};
o3.show(ar2);
System.out.println("Double array");
a<Double> o4=new a<Double>();
Double[] ar3={10.234,67.451,23.90};
o4.show(ar3);
}
}
Output:
Integer array
10
67
23
String array
Hai
Hello
Welcome
to
Java
program
ming
CS3391 – Object Oriented Programming – III Sem CSE Unit 4
Boolean array
true
false
Double array
10.234
67.451
23.9
Bounded Type Parameter is a type parameter with one or more bounds. The
bounds restrict the set of types that can be used as type arguments and give access
to the methods defined by the bounds.
For example, a method that operates on numbers might only want to accept instances of
Number or its subclasses.
Syntax:
<T extends superclass>
Example:
The following example creates a generic class that contains a method that returns
the average of array of any type of numbers. The type of the numbers is represented
generically using Type Parameter.
sum+=nums[i].doubleValue();
double avg=sum/nums.length;
return avg;
}
public static void main(String[]
args)
{
Integer inum[]={1,2,3,4,5};
GenBounds<Integer> iobj=new GenBounds<Integer>(inum);
System.out.println("Average of Integer Numbers : "+iobj.average());
Double dnum[]={1.1,2.2,3.3,4.4,5.5};
GenBounds<Double> dobj=new GenBounds<Double>(dnum);
System.out.println("Average of Double Numbers : "+dobj.average());
Output:
F:\>java GenBounds
Average of Integer Numbers : 3.0
Average of Double Numbers : 3.3
Question mark (?) is the wildcard in generics and represents an unknown type.
The wildcard can be used as the type of a parameter, field, or local variable and
sometimes as a return type.
The following program illustrates the use of wildcards with upper bound. In below
method we can use all the methods of upper bound class Number.
import java.util.ArrayList;
import java.util.List;
public class
GenericsWildcards
{
public static void
main(String[] args)
{
List<Integer> ints = new ArrayList<Integer>();
ints.add(3);
ints.add(5);
ints.add(10);
double sum = sum(ints);
System.out.println("Sum of ints="+sum);
}
Output:
DOWNLOADED
to FROM STUCOR
41
1) In Java, generic types are compile time entities. The runtime execution is possible
only if it is used along with raw type.
2) Primitive type parameters are not allowed for generic programming.
For example:
Stack<int> is not allowed.
3) For the instances of generic class throw and catch keywords are not allowed.
For example:
public class Test<T> extends Exception
{
// code // Error: can’t extend the Exception class
}
4) Instantiation of generic parameter T is not allowed.
For Example:
new T(); //
Error new T[10];
//
Error
5) Arrays of
parameterized types
are not allowed. 4.9: STRINGS
For Example:
New
Definition:
Stack<String>[10]; /
String is a sequence of characters. But in Java, a string is an object that
/ Error
represents a sequence of characters. The java.lang.String class is used to create string
object.
Java String pool refers to collection of Strings which are stored in heap memory.
In this, whenever a new object is created,
1) String pool first checks whether the object is already present in the pool
or not.
2) If it is present, then same reference is returned to the variable
3) else new object will be created in the String pool and the respective reference will
be returned.
Refer to the diagrammatic representation for better understanding: In the above image,
two Strings are created using literal i.e “Apple” and “Mango”. Now, when third String is
created with the value “Apple”, instead of creating a new object, the already present
object reference is returned.
Output:
java
strings
example
4.10: METHODS
We can compare two given strings on the basis of content and reference.
It is used in authentication (by equals() method), sorting (by compareTo()
method), reference matching (by == operator) etc.
There are three ways to compare String objects:
1. By equals() method
2. By = = operator
3. By compareTo() method
1) By equals() method
equals() method compares the original content of the string.It compares values of
string for equality.String class provides two methods:
public boolean equals(Object another){} compares this string to the specified
object.
public boolean equalsIgnoreCase(String another){} compares this String to
class Simple{
public static void main(String args[]){
String s1="Sachin";
String
s2="Sachin";
String s3=new String("Sachin");
String s4="Saurav";
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s1.equals(s4));//false
}
}
Output:
true
true
false
Example:
equalsIgnor
eCase(Strin
g) method
class
Simple{
public
static
void
main(Str
ing
args[]){
String s1="Sachin";
String s2="SACHIN";
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s3));//true
}
}
Output:
CS3391 – Object Oriented Programming – III Sem CSE Unit 4
false
DOWNLOADED FROM STUCOR
47
2) By == operator
The = = operator compares references not values.
Example: == operator:
class Simple{
public static void main(String args[])
{
String s1="Sachin";
String
s2="Sachin";
String s3=new
String("Sachin");
System.out.println(
s1==s2);//true
(because both
refer to same
instance)
System.out.println(
s1==s3);//
false(because s3
refers to instance
created in nonpoo
l)
compareTo() method compares values and returns an int which tells if the values
}
compare less than, equal, or greater than.
Suppose
} s1 and s2 are two string variables.If:
s1 == s2 :0
Output:
s1 > s2 :positive value
s1true< s2 :negative value
false
Example: compareTo() method:
3) By
compareT
class Simple{
o()
public static void main(String args[]){
method:
String s1="Sachin";
String
s2="Sachin";
String s3="Ratan";
System.out.println(s1.compareTo(s2));//0
System.out.println(s1.compareTo(s3));//1(because s1>s3)
System.out.println(s3.compareTo(s1));//-1(because s3 < s1 )
}
}
Output:
0
1
-1
Concating strings form a new string i.e. the combination of multiple strings.
class Simple{
public static void main(String args[]){
Example:
class Simple{
public static void main(String args[]){
String s=50+30+"Sachin"+40+40;
System.out.println(s);//80Sachin4040
}
}
Output: 80Sachin4040
Note: If either operand is a string, the resulting operation will be string concatenation. If
both operands are numbers, the operator will perform an addition.
2) By concat() method
concat() method concatenates the specified string to the end of current string.
Syntax: public String concat(String another){}
Example of concat(String) method
class Simple{
public static void main(String args[]){
String s3=s1.concat(s2);
System.out.println(s3);//Sachin Tendulkar
}
}
Output: Sachin Tendulkar
Substring 1: Tendulkar
System.out.println(“Trim: “+s.trim()); Substring2: Sachin
System.out.println(“Start With: “+s.startsWith("Sa")); Uppercase: SACHIN TENDULKAR
System.out.println(“End with: “+s.endsWith("n")); Lowercase: sachin tendulkar
System.out.println(“Char at Position 0: “+s.charAt(0)); Trim: Sachin Tendulkar
System.out.println(“Char at Position 3: “+s.charAt(3)) Start With: true
End with: false
System.out.println(“Length: “+s.length());
Char at Position 0: S
String s2=s.intern();
Char at Position 3: h
System.out.println(“Intern: “+s2); Length: 16
System.out.println(“Replace: “+s.replace(‘a’,’q’)); Intern: Sachin
System.out.println(“Index 1: “+s.indexOf(‘I’)); Tendulkar
System.out.println(“Index 2: “+s.indexOf(‘I’,5)); Replace: Sqchin Tendulkqr
} Index 1: -1
} Index 2: -1
StringBuffer CLASS
The StringBuffer class is used to created mutable (modifiable) string. The StringBuffer
class is same as String except it is mutable i.e. it can be changed.
StringBuffer can be changed dynamically. String buffers are preferred when heavy
modification of character strings is involved (appending, inserting, deleting, modifying
etc).
Constructor Description
creates an empty string buffer with the initial capacity of 16.
StringBuffer() Example:
StringBuffer s=new StringBuffer();
creates a string buffer with the specified string.
StringBuffer(String str) Example:
StringBuffer s=new StringBuffer("Alice in Wonderland");
creates an empty string buffer with the specified capacity as
StringBuffer(int length.
capacity) Example:
StringBuffer s=new StringBuffer(20);
Modifier and
Method Description
Type
is used to append the specified string with this
public
string. The append() method is overloaded like
synchronized append(String s)
append(char), append(boolean), append(int),
StringBuffer
append(float), append(double) etc.
is used to insert the specified string with this
public string at the specified position. The insert()
insert(int offset, String
synchronized method is overloaded like insert(int, char),
s)
StringBuffer insert(int, boolean), insert(int, int), insert(int,
float), insert(int, double) etc.
public
replace(int startIndex, is used to replace the string from specified
synchronized
int endIndex, String str) startIndex and endIndex.
StringBuffer
public
delete(int startIndex, int is used to delete the string from specified
synchronized
endIndex) startIndex and endIndex.
StringBuffer
public
synchronized reverse() is used to reverse the string.
StringBuffer
public int capacity() is used to return the current capacity.
Example:
Output:
strBuf1 : Bobby
strBuf1 capacity : 21
strBuf2 capacity : 100
strBuf3 capacity : 16
strBuf1 length : 5
strBuf1 charAt 2 : b
strBuf1 after setCharAt 1 to t is : Btbby
strBuf1 toString() is : Btbby
strBuf3 when appended with a String : beginner-java-tutorial
strBuf3 when c is inserted at 1 : bceginner-java-tutorial
strBuf3 when c is deleted at 1 : b
Reversed strBuf3 : b
strBuf2 : jdbc-tutorial
strBuf2 when cleared
using setLength(0):
JAVAFX Events and Controls: Event Basics – Handling Key and Mouse Events.
Controls: Checkbox, ToggleButton – RadioButtons – ListView – ComboBox –
ChoiceBox – Text Controls – ScrollPane. Layouts – FlowPane – HBox and VBox –
BorderPane – StackPane – GridPane. Menus – Basics – Menu – Menu bars –
MenuItem.
What is JavaFX?
JavaFX is a set of graphics and media packages that enable developers to design,
create, test, debug, and deploy desktop applications and Rich Internet
Applications (RIA) that operate consistently across diverse platforms. The
applications built in JavaFX can run on multiple platforms including Web, Mobile, and
Desktops.
Features of JavaFX:
Feature Description
It consists of many classes and interfaces that are written in
Java Library
Java.
FXML is the XML based Declarative markup language. The
FXML coding can be done in FXML to provide the more enhanced GUI
to the user.
Scene Builder generates FXML mark-up which can be ported to
Scene Builder
an IDE.
Web View uses WebKitHTML technology to embed web pages
Web view
into the Java Applications.
Built-in controls are not dependent on operating system. The UI
Built in UI controls
components are used to develop a full featured application.
JavaFX code can be embedded with the CSS to improve the style
CSS like styling
and view of the application.
The JavaFX applications can be embedded with swing code
Swing
using the Swing Node class. We can update the existing swing
interoperability
application with the powerful features of JavaFX.
Canvas API provides the methods for drawing directly in an area
Canvas API
of a JavaFX scene.
Rich Set of APIs JavaFX provides a rich set of API's to develop GUI applications.
1) Stage
Stage(a window) in a JavaFX application is similar to the Frame in a Swing
Application. It acts like a container for all the JavaFX objects.
Primary Stage is created internally by the platform. Other stages can further be
created by the application.
A stage has two parameters determining its position namely Width and Height. It
is divided as Content Area and Decorations (Title Bar and Borders).
There are five types of stages available −
o Decorated
o Undecorated
o Transparent
o Unified
o Utility
We have to call the show() method to display the contents of a stage.
2) Scene
A scene represents the physical contents of a JavaFX application. It contains all
the contents of a scene graph.
The class Scene of the package javafx.scene represents the scene object. At an
instance, the scene object is added to only one stage.
The JavaFX Application class has three life cycle methods, which are –
1) launch() - to launch JavaFX application.
2) init() − An empty method which can be overridden, but you
cannot create a stage or scene in this method.
3) start() − The entry point method where the JavaFX graphics
code is to be written.
4) stop() − An empty method which can be overridden, here we
can write the logic to stop the application.
A GUI based applications are mostly driven by Events. Events are the actions that the
user performs and the responses the application generates.
JavaFX provides support to handle events through the base class “Event” which is
available in the package javafx.event.
Examples of Events:
o Action Event — widely used to indicate things like when a button is pressed.
Class:- ActionEvent
Actions:- button pressed.
o Mouse Event — occurs when mouse is clicked
Class:- MouseEvent
Actions:- mouse clicked, mouse pressed, mouse released, mouse moved, mouse
entered target, mouse exited target.
o Drag Event — occurs when the mouse is dragged.
Class:- DragEvent
Actions:- drag entered, drag dropped, drag entered target, drag exited target,
drag over.
o Key Event — indicates that a keystroke has occurred.
Class:- KeyEvent
Actions:- Key pressed, key released and key typed.
o Window Event:
Class:- WindowEvent
Actions:- window
hiding, window
shown, window
hidden, window
showing.
o Scroll Event —
indicates scrolling by
mouse wheel, track
pad, touch screen,
CS3391 – Object Oriented Programming – III Sem CSE Unit 5
etc...
DOWNLOADED
o TouchEvent —FROM STUCOR
6
Event handling is the mechanism that controls the event and decides what should
happen, if an event occurs. It has the code which is known as Event Handler that is
executed when an event occurs.
Event Handling in JavaFX is done by Event Filters and Event Handlers. They contain the
event handling logic to process a generated event.
Every event in JavaFX has three properties:
1. Event source
2. Event target
3. Event type
5. Target Selection:
The first step to process an event is the selection of the event target. Event target
is the node on which the event is created. Event target is selected based in the
Event Type.
For key events, the target is the node that has key focus.
The node where the mouse cursor is located is the target for mouse events.
2. Route Construction:
Usually, an event travels through the event dispatchers in order in the event
dispatch chain. An Event Dispatch Chain is created to determine the default route
of the event whenever an event is generated. It contains the path from the stage
to the node on which the event is generated.
3. Event Capturing:
In this phase, an event is dispatched by the root node and passed down in the
Event Dispatch Chain to the target node.
Event Handlers will not be invoked in this phase.
If any node in the chain has registered the event filter for the type of event that
occurred, then the filter on that node is called. When the filter completes, the
event is moved down to the next node in the Dispatch Chain. If no event filters
consumes the event, then the event target receives and processes the generated
event.
4. Event Bubbling:
In this phase, a event returns from the target node to the root node along the
event dispatch chain.
Events handlers will be invoked in this phase.
If any node in the chain has a handler for the generated event, that handler is
executes. When the handler completes, the event is bubbled up in the chain. If the
handler is not registered for a node, the event is returned to the bubbled up to
next node in the route. If no handler in the path consumed the event, the root
node consumes the event and completes the processing.
Event Filters:
Event Filters provides the way to handle the events generated by the Keyboard
Actions, Mouse Actions, Scroll Actions and many more event sources.
They process the events during Event Capturing Phase.
A node must register the required event filters to handle the generated event on that
node. handle() method contains the logic to execute when the event is triggered.
Syntax:
node.addEventFilter (<Event_Type>, new EventHandler<Event-Type>()
{
public void handle(Event-Type)
{
//Actual logic
});
Where,
First argument is the type of event that is generated.
Second argument is the filter to handle the event.
Removing Event-Filter:
We can remove an event filter on a node using
removeEventFilter() method.
Syntax:
node.removeEventFilter(<Input-Event>, filter);
Event Handlers:
Event Filters provides the way to handle the events generated by the Keyboard
Actions, Mouse Actions, Scroll Actions and many more event sources.
They are used to handle the events during Event Bubbling Phase.
A node must register the event handlers to handle the generated event on that node.
handle() method contains the logic to execute when the event is triggered.
Syntax:
node.addEventHandler (<Event_Type>, new EventHandler<Event-Type>()
{
public void handle(<Event-Type> e)
{
//Handling Code
});
Where,
First argument is the type of event that is generated.
Second argument is the filter to handle the event.
Removing Event-Filter:
We can remove an event handler on a node using
removeEventHandler() method.
Syntax:
node.removeEventHandler(<EventType>,
handler);
CS3391 – Object Oriented Programming – III Sem CSE Unit 5
A node can register for more than one Event Filters and Handlers.
The interface javafx.event.EventHanler must be implemented by all the event filters and
event handlers.
Key Event − It is an input event that indicates the key stroke occurred on a node.
It is represented by the class named KeyEvent.
This event includes actions like key pressed, key released and key typed.
Example:
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.scene.input.*;
import
javafx.scene.control.Alert.*;
{ @Override
public void start(Stage primaryStage)
{
{ String str="",str1="";
int d;
public void handle(KeyEvent event)
{
if(event.getCode()== KeyCode.BACK_SPACE)
{
str=str.substring(0,str.length()-1);
tf2.setText(str);
}
else
{
str+=event.getText();
tf2.setText(str);
}
}
};
tf1.setOnKeyPressed(handler1);
tf2.setOnKeyTyped(handler2);
CS3391 – Object Oriented Programming – III Sem CSE Unit 5
Figure 1: When a key is pressed in TextField 1 Figure 2: When backspace key is pressed in TextField 1
JavaFX Mouse Events are used to handle mouse events. The MouseEvents works when
you Clicked, Dragged, or Pressed and etc. An object of the MouseEvent class represents
a mouse events.
you want your node to receive all types of events. This event type would be used for
your handlers.
MOUSE_PRESSED – When you press a mouse button, this event is triggered. The
MouseButton enum defines three constants that represent a mouse button: NONE,
PRIMARY, and SECONDARY. The MouseEvent class’s getButton() method returns the
mouse button that is responsible for the event.
MOUSE_RELEASED – The event is triggered if you pressed and released a mouse
node.
MOUSE_EXITED – This event occurs when the mouse or cursor leaves or moved
Example:
import javafx.application.Application;
import javafx.event.Event.*;
import javafx.scene.*;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.scene.control.*;
import java.util.*;
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
Label status=new Label();
btn.setText("Mouse Event");
status.setText("Hello");
btn.setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
status.setText("Mouse pressed");
}
}
)
;
btn.setOnMouseEntered(e->
{ status.setText("Mouse
Entered");
});
btn.setOnMouseExited(e->
{ status.setText("Mouse
Exited");
});
btn.setOnMouseReleased(e->
{ status.setText("Mouse
Released");
});
BorderPane bp = new BorderPane();
bp.setCenter(btn);
bp.setBottom(status);
primaryStage.setTitle("MouseEvent-Demo");
primaryStage.setScene(scene);
CS3391 – Object Oriented Programming – III Sem CSE Unit 5
primaryStage.show();
DOWNLOADED
}
FROM STUCOR
15
OUTPUT
import javafx.application.Application;
import javafx.collections.*;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.image.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.Stage;
educationListView.getSelectionModel().setSelectionMode(SelectionMode.MU
LTIPLE);
gridPane.add(dobLabel, 0, 1);
gridPane.add(datePicker, 1, 1);
gridPane.add(genderLabel, 0, 2);
gridPane.add(maleRadio, 1, 2);
gridPane.add(femaleRadio, 2, 2);
gridPane.add(reservationLabel, 0,
3);
gridPane.add(yes, 1, 3);
gridPane.add(no, 2, 3);
gridPane.add(technologiesLabel, 0,
4);
gridPane.add(javaCheckBox, 1, 4);
gridPane.add(dotnetCheckBox, 2, 4);
gridPane.add(educationLabel, 0, 5);
gridPane.add(educationListView, 1,
5);
gridPane.add(interest,0,6);
gridPane.add(AoI,1,6);
gridPane.add(locationLabe
l, 0, 7);
gridPane.add(locationchoic
eBox, 1, 7);
gridPane.add(buttonRegist
er, 2, 8);
DOWNLOADED
} FROM STUCOR
23
OUTPUT:
In JavaFX, Layout defines the way in which the components are to be seen on the stage. It
basically organizes the scene-graph nodes.
Layout Panes: Layout panes are containers which are used for flexible and dynamic
arrangements of UI controls within a scene graph of a JavaFX application.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.stage.Stage;
mc.getItems().addAll(c1,c2);
MenuBar mb = new MenuBar();
VBox vb=new
VBox(mb);
m1.setOnAction(e -> {
tfNumber1.setText("10"
);
tfNumber2.setText("20");
});
m2.setOnAction(e -
>{ tfNumber1.setText(
"");
tfNumber2.setText("");
tfResult.setText("");
});
DOWNLOADED FROMInsets(5));
calcBottom.setPadding(new STUCOR
30
c1.setOnAction(e -> {
pane.setBackground(new
Background(new
BackgroundFill(Color.RED,null,null)));
});
c2.setOnAction(e ->
{ pane.setBackground(new
Background(new
BackgroundFill(Color.GREEN,null,null)));
});
btSubtract.setOnAction(e -> {
double a = getDoubleFromTextField(tfNumber1);
double b = getDoubleFromTextField(tfNumber2);
tfResult.setText(String.valueOf(a - b));
});
btMultiply.setOnAction(e -> {
double a = getDoubleFromTextField(tfNumber1);
double b = getDoubleFromTextField(tfNumber2);
tfResult.setText(String.valueOf(a * b));
});
btDivide.setOnAction(e -> {
double a = getDoubleFromTextField(tfNumber1);
double b = getDoubleFromTextField(tfNumber2);
tfResult.setText(b
CS3391 – Object Oriented== 0 ? "NaN" :–String.valueOf(a
Programming III Sem CSE / b)); Unit 5
});
Menu is a popup menu that contains several menu items that are displayed when
the user clicks a menu. The user can select a menu item after which the menu goes into
a hidden state.
MenuBar is usually placed at the top of the screen which contains several menus. JavaFX
MenuBar is typically an implementation of a menu bar.
Method Explanation
getItems() returns the items of the menu
hide() hide the menu
show() show the menu
getMenus() The menus to show within this MenuBar.
isUseSystemMenuBar() Gets the value of the property useSystemMenuBar
setUseSystemMenuBar(boolean
Sets the value of the property useSystemMenuBar.
v)
setOnHidden(EventHandler v) Sets the value of the property onHidden.
JavaFX Menu
In the JavaFX application, in order to create a menu, menu items, and menu bar,
Menu, MenuItem, and MenuBar class is used. The menu allows us to choose
options among available choices in the application.
All methods needed for this purpose are present in the javafx.scene.control.Menu
class.
Example: Java program to create a menu bar and add menu to it and also add
menuitems to the menu
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.VBox;
public class MenuUI extends Application {
@Override
public void start(Stage primaryStage)
throws Exception
{
Menu newmenu = new Menu("File");
Menu newmenu2 = new Menu("Edit");
Output: