23IT1301 - OOPs - Unit - 1
23IT1301 - OOPs - Unit - 1
Main Program
Global Data
Procedure
Procedure Procedure
3(Printing)
1(Reading) 2(Calculation)
Local Data Local Data Local Data
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 program.
So, there is no security for the data.
Examples of Procedural languages :
BASIC
C
Pascal
FORTRAN
In POP, program is divided into small In OOP, program is divided into parts
Divided Into
parts called functions. called objects.
In POP, Importance is not given to In OOP, Importance is given to the data
Importance data but to functions as well as rather than procedures or functions
sequence of actions to be done. because it works as a real world.
Approach POP follows Top Down approach. OOP follows Bottom Up approach.
Access POP does not have any access OOP has access specifiers named
Specifiers specifier. Public, Private, Protected, etc.
In OOP, objects can move and
In POP, Data can move freely from
Data Moving communicate with each other through
function to function in the system.
member functions.
To add new data and function in POP OOP provides an easy way to add new
Expansion
is not so easy. data and function.
In POP, Most function uses Global In OOP, data cannot move easily from
data for sharing that can be accessed function to function, it can be kept
Data Access
freely from function to function in the public or private so we can control the
system. access of data.
POP does not have any proper way OOP provides Data Hiding so provides
Data Hiding
for hiding data so it is less secure. more security.
In OOP, overloading is possible in the
Overloading In POP, Overloading is not possible. form of Function Overloading and
Operator Overloading.
Examples of POP are: C, VB, Examples of OOP are: C++, JAVA,
Examples
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. It can't
be physical.
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.
For example: chair, pen, table, keyboard, bike etc. It can be physical and logical.
Object is an instance of a class. Class is a template or blueprint from which objects are
created. So object is the instance (result) of a class.
The object of a class can be created by using the new keyword in Java Programming
language.
Syntax to create Object in Java:
class_name object_name = new class_name;
(or)
class_name object_name;
object_name = new class_name();
3. Encapsulation:
Wrapping of data and method together into a single unit is known as
Encapsulation.
In OOP, data and methods operating on that data are combined together to
form a single unit, which 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 means the ability of an object to take more than one form.
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: - In this method, object is bound to the function
call at the compile time itself.
2. Runtime polymorphism: - In this method, object is bound to the function call
only at the run time.
In java, we use method overloading and method overriding to achieve
polymorphism.
Example:
1. draw(int x, int y, int z)
2. draw(int l, int b)
3. draw(int r)
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.
Using abstraction one can simulate real world objects.
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 properties
and behaviors of another object.
It is an important part of OOPs (Object Oriented Programming system).
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.
7. Message Passing:
Message Communication:
Objects interact and communicate with each other by sending messages to each
other. This information is passed along with the message as parameters.
JAVA
Java programming language was originally developed by Sun Microsystems which was
initiated by James Gosling and released in 1995 as core component of Sun Microsystems'
Java platform (Java 1.0 [J2SE]).
Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of
UNIX.
1. Object Oriented:
Without class:
#include<iostream.h> Without class is not possible
void main()
{
clrscr();
cout<<‖\n Hello!‖;
getch();
}
2. Simple:
3. Secure :
Since Java is intended to be used in networked/distributed environments, lot of emphasis
has 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 any
computer 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 easily
translated into native machine code.
9. Interpreted:
Java supports cross-platform code through the use of Java bytecode.
The Java interpreter can execute Java Bytecodes directly on any machine to which the
interpreter has been ported.
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.
It is a highly optimized set of instructions designed to be executed by the Java
run-time system, which is called Java Virtual Machine (JVM). JVM is an
interpreter for Byte Code.
Verifies code
Executes code
Provides runtime environment
JVM provides definitions for the:
Memory area
Class file format
Register set
Garbage-collected heap
Fatal error reporting etc.
1. Application Programs
Application programs are stand-alone programs that are written to carry out
certain tasks on local computer such as solving equations, reading and writing files etc.
The application programs can be executed using two steps:
1. Compile source code to generate Byte code using Javac compiler.
2. Execute the byte code program using Java interpreter.
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.
A Java source file is a plain text file containing Java source code and
having .java extension. The .java extension means that the file is the Java source file.
Java source code file contains source code for a class, interface, enumeration, or
annotation type. There are some rules associated to Java source file.
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 author
and other details.
Comments help in Maintaining the Program.
Java uses a Style of comment called documentation comment.
/* * …… */
This type of comment helps is generating the documentation automatically.
Example:
/*
* Title: Conversion of Degrees
* Aim: To convert Celsius to Fahrenheit and vice versa
* Date: 31/08/2000
* Author: tim
*/
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.
The number of classes depends on the complexity of the program.
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 hello
would 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 class
name.
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 the
class name do not match your program will not compile).
Example : Assume 'MyFirstJavaProgram' is the class name. Then the file should
be 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.
This will take the source code in the file HelloWorld.java and create the java
bytecode in a file ―HelloWorld.class‖
5. To run the compiled program use the command java as follows:
java HelloWorld
(Note that you do not use any file extension in this command.)
At compile time, java file is compiled by Java Compiler (It does not interact with OS) and
converts 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.
/* simple
* Helloworld
* program
*/
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello World");
}
}
Save: HelloWorld.java
Compile: javac HelloWorld.java
Run: java HelloWorld
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.
Output:
Enter a Number: 25
The value of 25 * 2 = 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:
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 valid
Java 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).
The data, or variables, defined within a class are called instance variables.
The code to do operations is contained within methods.
Collectively, the methods and variables defined within a class are called members of the
class.
Variables defined within a class are called instance variables because each instance of the
class (that is, each object of the class) contains its own copy of these variables.
Thus, the data for one object is separate and unique from the data for another.
Example:
class box {
double width;
double height;
double depth;
void volume()
{
System.out.println(―\n Volume is : ―);
Systme.out.println(width*height*depth);
}
}
Program Explanation:
Class : keyword that initiates a class definition
Box : class name
Double : primitive data type
Height, depth, width: Instance variables
Void : return type of the method
Volume() : method name that has no parameters
DEFINING OBJECTS
It is a structured set of data with a set of operations for manipulating that data.
The methods are the only gateway to access the data. In other words, the methods and data
are grouped together and placed in a container called Object.
Characteristics of an object:
CREATING OBJECTS:
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 reference
to the declared variable.
NOTE: The new operator dynamically allocates memory for an object and returns a reference
to 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 during
the 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;
double depth;
void volume()
{
System.out.print("\n Box Volume is : ");
System.out.println(width*height*depth+" cu.cms");
}
}
1.6: 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 method
name and the parameter list.
Parameter List: The list of parameters, it is the type, order, and number of parameters of
a method. These are optional, method may contain zero parameters.
method body: The method body defines what the method does with statements.
Example:
This method takes two parameters num1 and num2 and returns the maximum between the two:
return min;
}
Program Explanation:
public static: modifier
int: data type
minFunction: method name
int n1, int n2: list of parameters
int min;
if (n1 > n2) Method body which do the operation of identifying the minimum
min = n2; value between n1 and n2 & returns the min value to the main().
else
min = n1;
return min;
METHOD CALLING (Example for Method that takes parameters and returning value):
The process of method calling is simple. When a program invokes a method, the program
control gets transferred to the called method.
This called method then returns control to the caller in two conditions, when:
Example:
Following is the example to demonstrate how to define a method and how to call it:
Minimum value = 6
MEHTOD OVERLOADING:
Method Overloading means more than one methods shares the same name in the class
but having different signature. i.e., In Method Overloading, Methods of the same class
shares the same name but each method must have different number of parameters or
parameters having different types and order.
Example:
class Add
{
int sum(int a, int b)
{
return a + b;
}
int sum(int a)
{
return a + 10;
}
}
// for integer
public static int minFunction(int n1, int n2)
{
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
// for double
public static double minFunction(double n1, double n2)
{
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
Minimum Value = 6
Minimum Value = 7.3
1.7: 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.
Types of constructors
There are two types of constructors:
1. Default constructor (no-arg constructor)
2. Parameterized constructor
1) Default Constructor
Definition:
Constructor without parameters as default constructor and all of its class instance
variables are set to default values.
Default constructor refers to a constructor that is automatically created by compiler
in the absence of explicit constructors.
Syntax of default constructor:
Example: <class_name>() { }
class Box {
double width;
double height;
double depth;
2. Parameterized constructor
Definition:
A constructor that takes parameters is known as parameterized constructor.
class Box {
double width;
double height;
double depth;
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. For
example, 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.
Definition:
In java, this is a reference variable that refers to the current object.
To better understand what this refers to, consider the following version of Box( ):
This version of Box( ) operates exactly like the earlier version. The use of this is redundant, but
perfectly correct. Inside Box( ), this will always refer to the invoking object.
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:
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;
// Get volume of first box
vol=mybox1.volume();
System.out.println(―Volume of Box1 is ―+vol);
Output:
As we can see, the proper overloaded constructor is called based upon the parameters specified
when new is executed.
Definition:
Access specifiers are used to specify the visibility and accessibility of a class
constructors, member variables and methods.
Java classes, fields, constructors and methods can have one of four different access
modifiers:
1. Public
2. Private
3. Protected
4. Default (package)
The protected access specifier makes the instance variables and instance methods visible
to all the classes, subclasses of that package and subclasses of other packages.
Super Class
package mypack;
Sub Class
package mypack;
import mypack.FirstClass;
void method() {
System.out.println(i); // i is public in super class can be accessed from anywhere.
System.out.println(j);
/*
* Here you are trying to access protected variable directly. So it will
* not be accessible and compile will give an error.
*/
System.out.println(cls.j);
System.out.println(r); // since r is default can be accessed from any class within the same
package.
}
}
“static” MEMBERS:
There will be times when we will want to define a class member that will be used
independently of any object of that class. To create such a member, precede its
declaration with the keyword static.
The static can be:
• variable (also known as class variable)
• method (also known as class method)
• block
• nested class
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.
A static variable can be accessed outside of its class directly by the class name and
doesn‘t need any object.
Syntax : <class-name>.<variable-name>
1. class Student{
2. int rollno;
3. String name;
4. String college="ITS";
5. }
Suppose there are 500 students in my college, now all instance data members will get memory
each time when the object is created. All students have its unique rollno and name, so instance
data member is good in such case. Here, "college" refers to the common property of all objects.
If we make it static, this field will get the memory only once.
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.
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:
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 college = "ITS";
6. //static method to change the value of static variable
7. static void change(){
8. college = "BBDIT";
9. }
10. //constructor to initialize the variable
11. Student(int r, String n){
12. rollno = r;
13. name = n;
14. }
15. //method to display values
16. void display()
17. {
18. System.out.println(rollno+" "+name+" "+college);
19. }
20. }
21. //Test class to create and display the values of object
22. public class TestStaticMembers
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. }
1. Line comment:
When you want to make a one line comment type "//" and follow the two forward slashes
with your comment.
Syntax: // text
Example: // this is a single line comment
The compiler ignores everything from // to the end of the line.
2. Block Comment:
To start a block comment type "/*". Everything between the forward slash and asterisk,
even if it's on a different line, will be treated as comment until the characters "*/" end the
comment.
Syntax: /* text */
Example: /* it is a comment */ (or)
/* this
is
a
block
comment
*/
The compiler ignores everything from /* to */.
3. Documentation Comment:
This type of comment helps is generating the documentation automatically.
Syntax: /** documentation */
The JDK javadoc tool uses doc comments when preparing automatically
generated documentation. For more information on javadoc, see the Java tool
documentation.
Example:
/*
* Title: Conversion of Degrees
* Aim: To convert Celsius to Fahrenheit and vice versa
* Date: 31/08/2000
* Author: Tim
*/
Example:
String name = "Homer Jay Simpson";
int weight = 300;
double height = 6;
The following declaration is allowed because the variable has "hasDataType" is declared
to be a boolean data type:
boolean hasDataType;
For the rest of its life, hasDataType can only ever have a value of true or false.
Every variable must have a data type. A variable's data type determines the values that
the variable can contain and the operations that can be performed on it.
Data types in Java are of two types:
1. Primitive Types( Intrinsic or built-in types )
2. Derived Types (Reference Types).
1. Primitive Types:
There are eight primitive types in Java:
Integer Types: 1. int
2. short
3. long
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:
Floating-point Types:
The floating-point types denote numbers with fractional parts. The two floating-point
types are shown below:
Type Storage Range Example Default
Requirement Value
float 4 bytes Approximately ±3.40282347E+38F float f1 = 0.0f
(6-7 significant decimal digits) 234.5f
double 8 bytes Approximately double d1 = 0.0d
±1.79769313486231570E+308 123.4
(15 significant decimal digits)
char:
boolean:
Reference variables are created using defined constructors of the classes. They are used
to access objects. These variables are declared to be of a specific type that cannot be
changed. For example, Employee, Puppy etc.
Class objects, interfaces and various types of array variables come under reference data
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.
Default value of any reference variable is null.
A reference variable can be used to refer to any object of the declared type or any
compatible type.
Example: Animal animal = new Animal("giraffe");
A Variable is a named piece of memory that is used for storing data in java Program.
A variable is an identifier used for storing a data value.
In addition to the name and type that you explicitly give a variable, a variable has scope.
Rules followed for variable names ( consist of alphabets, digits, underscore and
dollar characters)
1. A variable name must begin with a letter and must be a sequence of letter or digits.
2. They must not begin with digits.
2. Uppercase and lowercase variables are not the same.
Example: Total and total are two variables which are distinct.
3. It should not be a keyword.
4. Whitespace is not allowed.
5. Variable names can be of any length.
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.
Two ways to initialize a variable:
1. Initialize after declaration:
Syntax: variablename=value;
int months;
months=12;
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
Access modifiers can be used for Access modifiers can be
3 cannot be used for
instance variables. used for class variables.
local variables.
Local variables are
visible only within The instance variables are visible
the declared for all methods, constructors and Visibility is similar to
4
method, block in the class. instance variables.
constructor or
block.
There is no default
value for local Instance variables have default
variables so local values. For numbers the default
variables should be value is 0, for Booleans it is false
Default values are same as
5 declared and an and for object references it is null.
instance variables.
initial value should Values can be assigned during the
be assigned before declaration or within the
the first use. constructor.
Program Explanation:
Java allows variables to be declared in any block. A block defines a scope. Each time
when we start a new block we are starting a new scope.
Scope determines what objects are visible to other parts of the program and also
determines the lifetime of those objects.
Two major scopes in Java are
1. Defined by a class.
2. Defined by a method.
class Scope {
public static void main(String arg[])
{
int x;// x is known to all code within main
x=10;
if(x==10)
{// start new scope
int y=20;// y is known only to this block
System.out.println(―X and Y : ―+x+‖ , ―+y); // x and y both known here
x=y*2;
}
y=100;// Error! y not known here
System.out.println(―x is ―+x);// x is still know here
}
}
Type Conversion is the task of converting one data type into another data type.
float sum=10;
int s=sum;// s is smaller than sum, So we need to go for explicit conversion.
Example:
class conversion {
public static void main(String arg[]) {
byte b;
int i=257;
double d=323.142;
Output:
Conversion of int to byte:
i and b : 257 , 1
Value of P = 20
1.16: OPERATORS
They are used to manipulate primitive data types. Java operators can be classified as unary,
binary, or ternary—meaning taking one, two, or three arguments, respectively.
1. class OperatorExample{
2. public static void main(String args[]){
3. int x=10;
4. System.out.println(x++);//10 (11)
5. System.out.println(++x);//12
6. System.out.println(x--);//12 (11)
7. System.out.println(--x);//10
8. }}
Output:
10
12
12
10
1. class OperatorExample{
2. public static void main(String args[]){
3. int a=10;
4. int b=10;
5. System.out.println(a++ + ++a);//10+12=22
6. System.out.println(b++ + b++);//10+11=21
7. }}
Output:
22
21
Output:
-11
9
false
true
<variable> = <expression>
If the value already exists in the variable it is overwritten by the assignment operator (=).
14
16
Java arithmetic operators are used to perform addition, subtraction, multiplication, and division.
They act as basic mathematical operations.
returns remainder
++ Increment - Increases the value of operand by 1 B++ gives 21
-- Decrement - Decreases the value of operand by 1 B-- gives 19
Output:
21
3. Relational Operators
Relational operators in Java are used to compare 2 or more objects. Java provides six
relational operators: Assume variable A holds 10 and variable B holds 20, then:
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 boolean logical operators are defined in
the Table below.
x&y x|y
x y !x x^y
x && y x || y
Example:
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. Bitwise Operators
Java provides Bit wise operators to manipulate the contents of variables at the bit level.
The result of applying bitwise operators between two corresponding bits in the operands
is shown in the Table below.
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
Output:
$java Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15
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);
}
public static void main(String args[]) {
new TernaryOperatorsDemo();
}
}
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 {
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:
result = 4 + 5 * 3
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 kind
of precedence of one operator over another applies to all the operators.
if statements
switch statements
if Statement:
An if statement consists of a Boolean expression followed by one or more statements.
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
closing curly brace) will be executed.
Example:
Output:
$java IfStatementDemo
b > a
if-else Statement
The if/else statement is an extension of the if statement. If the statements in the if
statement fails, the statements in the else block are executed.
You can either have a single statement or a block of code within if-else blocks.
Note that the conditional expression must be a Boolean expression.
Syntax:
The if-else statement has the following syntax:
if (<conditional expression>)
{
<statement action 1>
}
else
{
<statement action 2>
}
Output:
$java IfElseStatementDemo
b>a
Syntax:
The syntax of an if...else is:
if(Boolean_expression 1){
//Executes when the Boolean expression 1 is true
}else if(Boolean_expression 2){
//Executes when the Boolean expression 2 is true
}else if(Boolean_expression 3){
//Executes when the Boolean expression 3 is true
}else {
Example:
public class Test {
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. Each
value 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
controlling expression 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 statement
code 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:
Its general form is as follows:
switch (<expression>)
{
case label1: <statement1>
case label2: <statement2>
…
case labeln: <statementn>
default: <statement>
} // end switch
When executing a switch statement, the program falls through to the next case.
Therefore, if you want to exit in the middle of the switch statement code block, you must
insert a break statement, which causes the program to continue executing after the current
code block.
Below is a java example that demonstrates conditional execution based on nested if else
statement condition to find the greatest of 3 numbers.
public class SwitchCaseStatementDemo {
Output:
c is the greatest
While Statement
The while statement is a looping construct control statement that executes a block of code
while a condition is true.
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
Below is an example that demonstrates the looping construct namely while loop used to
print numbers from 1 to 10.
public class WhileLoopDemo {
Output
Printing Numbers from 1 to 10
6
7
8
9
10
The do-while loop is similar to the while loop, except that the test is performed at the end
of the loop instead of at the beginning.
This ensures that the loop will be executed at least once. A do-while loop begins with the
keyword do, followed by the statements that make up the body of the loop.
Finally, the keyword while and the test expression completes the do-while loop. When
the loop condition becomes false, the loop is terminated and execution continues with the
statement immediately following the loop.
You can either have a single statement or a block of code within the do-while loop.
Syntax:
Below is an example that demonstrates the looping construct namely do-while loop used
to print numbers from 1 to 10.
Output:
Output
Printing Numbers from 1 to 10
1
2
3
4
5
6
7
8
9
10
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.
Syntax:
{
<loop body>
}
The first part of a for statement is a starting initialization, which executes once
before the loop begins. The <initialization> section can also be a comma-separated
list of expression statements.
The second part of a for statement is a test expression. As long as the expression is
true, the loop will continue. If this expression is evaluated as false the first time,
the loop will never be executed.
The third part of the for statement is the body of the loop. These are the
instructions that 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.
All the sections in the for-header are optional. Any one of them can be left empty,
but the two semicolons are mandatory. In particular, leaving out the <loop
condition> signifies that the loop condition is true.
The (;;) form of for loop is commonly used to construct an infinite loop.
Below is an example that demonstrates the looping construct namely for loop used to
print numbers from 1 to 10.
Output:
Printing Numbers from 1 to 10
1
2
3
4
5
6
7
8
9
10
Syntax:
for(declaration : expression)
{
//Statements
}
Expression: This evaluates to the array you need to loop through. The expression
can be an array variable or method call that returns an array.
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
The break keyword is used to stop the entire loop. The break keyword must be used
inside any loop or a switch statement.
The break keyword will stop the execution of the innermost loop and start executing the
next line of code after the block.
Syntax:
break;
Example:
for(int x : numbers ) {
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
Output:
10
20
In a for loop, the continue keyword causes flow of control to immediately jump to
the update statement.
In a while loop or do/while loop, flow of control immediately jumps to the
Boolean expression.
Syntax:
The syntax of a continue is a single statement inside any loop:
continue;
Example:
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
Output:
10
20
40
50
Definition:
Normally, 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 set of elements in a Java
array.
Array in Java is index-based, the first element of the array is stored at the 0th index, 2nd
element is stored on 1st index and so on.
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 grow
its size at runtime.
Types of Array:
1. One-Dimensional Arrays
2. Multidimensional Arrays
1. One-Dimensional Array:
Definition: One-dimensional array is an array in which the elements are stored in one
variable name by using only one subscript.
Creating an array:
Three steps to create an array:
1. Declaration of the array
2. Instantiation of the array
3. Initialization of arrays
1. Declaration of the array:
Declaration of array means the specification of array variable, data_type and array_name.
Example:
int[] floppy; (or) int []floppy (or) int floppy[];
3. Initialization of arrays:
Definition:
Storing the values in the array element is called as Initialization of arrays.
Example:
floppy[0]=20;
SHORTHAND TO CREATE AN ARRAY OBJECT:
Java has a shorthand to create an array object and supply initial values at the same time
when it is created.
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.
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 indices
are from 0 to 9.
class Array
{
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;
Output:
Example 2: Finding sum of the array elements and maximum from the array:
{
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 array
int i,j,k=0;
// printing 2D array2
System.out.println(―----------Array2--------------―);
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
In the above program, the statement int array1[][]=new int[4][5]; is interpreted automatically
as follows:
array1[0]=new int[5];
array1[1]=new int[5];
array1[2]=new int[5];
array1[3]=new int[5];
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;
Output:
0
12
345
6789
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.
The java comments are exactly statements which are never executed by the compiler and
interpreter. The comments can be used to give information or details about the variable, function,
class or any statement. It can also be used to wrap program code for exact time.
Output:10
3. Java DocumentationComment
The documentation comment is used to make documentation API. To generate documentation
API, you want to use javadoc tool.
Syntax:
/** This is documentation comment
*/
Example:
/** The Calculator class provides
functions to get addition and subtraction of given 2 numbers.*/
public class Calculator {
/** The add() method returns addition of given numbers.*/
public static int add(int a, int b)
{return a+b;}
/** The sub() method returns subtraction of given numbers.*/
public static int sub(int a, int b){return a-b;}
}
Compile it by javac tool:
javac Calculator.java
Create Documentation API by javadoc tool:
javadoc Calculator.java
Now, there will be HTML files formed for your Calculator class in the present directory. Open
the HTML files and observe the details of Calculator class provided through documentation
comment.
JAVADOC COMMENTS TYPES
ClassComments
MethodComments
FieldComments
Package & OverviewComments
Sample tags of javadoc:
@author
@exception
@deprecated
{@link}
@param
@return
Example:
/**
* <h1>Hello,World!</h1>
* The HelloWorld program implements an applicationthat
* simply displays "Hello World!" to the standardoutput.
* <p>
* Giving proper comments in your program makes itmore
* user friendly and it is assumed as a high qualitycode.
*
*
* @authorZaraAli
* @version1.0
*@since2014-03-31
*/
public class HelloWorld {
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 delete operator.
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 to
be 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 an
object is destroyed.
Example:
Output:
object is garbage collected
object is garbage collected
Sometimes you will want to pass information into a program when you run it. This is
accomplished 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.
For example, the following program displays all of the command-line arguments that it is
called with:
// Display all command-line arguments.
class CommandLine {
public static void main(String args[]) {
for(int i=0; i<args.length; i++)
System.out.println("args[" + i + "]: " + args[i]);
}
}