Java
Java
Java
|Page
Index
1) Introduction 1 - 70 pages
2) OOPS 71 - 105 pages
3) Interfaces 106 - 111 pages
4) Packages 112 - 121 pages
5) java.lang.String 122 - 141 pages
6) Wrapper classes 142 - 146 pages
7) Java.io 147 - 154 pages
8) Exception Handling 155 - 187 pages
9) Multithreading 188 - 210 pages
10) Nested classes 211 - 218 pages
11) Enumaration & GC 219 - 224 pages
12) Collections 225 - 237 pages
13) Java.net 238 - 243 pages
14) Java.awt 244 - 274 pages
15) Swings 275 - 283 pages
16) JVM 284 - 286 pages
2|Page
JAVA introduction:-
Ex:-
Class Test
{
Public static void main (String [] args)
{
System.out.println (“welcome to java language”);
}
}
3|Page
Importance of :-
According to the SUN 3 billion devices run on the java language only.
Technologies Depends on :-
android
Adv java
JAVA VERSIONS:-
Java Alpha & beta : 1995
JDK1.1 : 1997
JAVA SE 6 : 2006
JAVA SE 7 : 2011
JAVA SE 8 : 2014
4|Page
Core Java
C –language:-
Extensions : .c & .h
Released in : 1972
Ex:-
#include<stdio.h>
Void main()
{
Printf(“hello Java”);
}
Compilation :- alt+f5
Execution :- ctrl+f9
Output :- hello Java
CPP –language:-
Implementation Languages : C
Released in : 1983
Ex:-
#include<iostream.h>
Void main()
{
Cout<<“hello Javaech”;
}
Compilation :- alt+f5
Execution :- ctrl+f9
Output :- hello Javaech
5|Page
Core Java
As per the sun micro system standard the java language is divided into three types.
1) J2SE/JSE(java 2 standard edition)
2) J2EE/JEE(java 2 enterprise edition)
3) J2ME/JME(java 2 micro edition)
J2SE:-
By using j2se we are able to develop the standalone applications.
Ex:- notepad, WordPad, paint, Google Talk………..etc
Standalone applications:-
1) Standalone applications are the java applications which don’t need the client server
architecture.
2) The standalone applications applicable for the only one desktop hence it is called
desktop applications or window based applications.
3) For the standalone applications doesn’t need internet connections.
4) It is a local application it doesn’t need any other external application support.
5) This type of the applications we can launch by using the command line or by
using the executable jar.
Client Database
J2EE:-
By using j2ee we are able to develop the web based applications.
Ex:- Gmail, yahoo mail, bank, reservation…………etc
Web-applications:-
1) Web applications are the java applications which needs client and server concept.
2) Web applications must need the internet connections to access the application.
3) The application which is present in the internet is called the web application.
4) Web application can be launched by using HTTP driven. HTTP request sent to the
Servlet present in the server side.
6|Page
Core Java
Web-application architecture:-
Html request
Css (java)
Jsp (.net) Hibernate
Used to
velocity (php)
response Jdbc store the
data.
Client:-
The person who is sending the request is called client. All web browsers come under the clients.
Ex:- InternetExploral, MozillaFrefox, opera………..etc
Server:-
The server contains the applications. The main purpose of the server is
a. It will contain the application.
b. Take the request from the client.
c. Based on the taken request it will identify the project resource and execute that project
resource.
d. By executing the project some response will be generated that response is dispatched to the
client browser.
Ex:- Tomcat,GlassFish,WebLogic,JBOSS,WebSphere………..etc
DataBase:-
DataBase is used to store the details like client details, application details,
registration details……etc.
Ex:- Oracle, MySql………..etc
J2ME:-
By using j2me we are able to develop the applications that applications only run on mobile
devices.
As a software engineer we must know these
technologies:-HTML(Hyper Text Markup Language):-
It is used for web pages designing. Introduced by World Wide Web Consortium and
developed by Tim Berners-Lee
Old new
7|Page
Core Java
JavaScript(JS):-
It is designed by Brendan Eich at NetScape Communications Corporation in 1995.it is used to
validate the forms.
Java:-
Developed by James Gosling at Sun Micro Systems in 1995 used to develop particular for client-server
web applications. Now it is merged into Oracle Corporation.
.net:-
Developed by Microsoft peoples in 2002 and it is used to develop the we based applications.
Oracle:-
It is a data base used to store the data permanently. Developed by oracle people in 1977.
8|Page
Core Java
Android:-
It is a Linux based mobile phone operating system used to develop the mobile applications
that runs only on mobile devices.
Technology:-
1. J2SE
2. J2EE
3. J2ME
Frame works:-
1. Struts
2. Spring
3. Hibernate
Servers:-
1. Tomcat
2. Glassfish
3. Jboss
4. Weblogic
5. Websphere……………
IDE(integrated development environment):-
1. Eclips
2. Myeclips
3. Netbeans
4. Jdeveloper…………………
Database :-
Oracle Mysql……………..
9|Page
Core Java
Difference between
C-lang Cpp-lang Java -lang
1) The program execution The program execution starts The program execution starts
starts from main method from main method called by from main method called by
and main method is called by operating system.
Operating system. JVM(java virtual machile).
To make available
4) to make available To make available
predefined support into our
predefined support into our predefined support into our
program we have to use
program we have to use program we have to use
#include statement.
#include statement. import statement.
Ex:- #include<iostream>
Ex:- #include<stdio.h> Ex:- import java.lang.*;
Allocation :constructor
5) memory allocation: malloc Allocation :constructor
Deallocation:destructors
Memory deallocation: free Deallocation:Garbage
collector(part of the jvm)
Irrespective of any os
6) size of the data types are
Int -4
varied from operating system Irrespective of any os
to the operating system. Char-2
Int -4
16-bit int -2bytes char- 1byte Char-2
32-bit int -4bytes char – 2 bytes
8) C is dynamic language Cpp is static language the Java is dynamic language the
the memory is allocated at memory is allocated at memory is allocated at
compilation time. compilation time. runtime time
10 | P a g e
Core Java
c-language:-
c-language Dennis Ritchie void main() (program starting point)
Functions printf,scanf…..
cpp-language:-
Functions cout,cin….
java-language:-
java-language james gosling public static void main(String[] args)
(program starting point)
Packages java.lang System.out.println(“ ”);
JAVA Features:-
1. Simple
2. Object Oriented
3. Platform Independent
4. Architectural Neutral
5. Portable
6. Robust
7. Secure
8. Dynamic
9. Distributed
10. Multithread
11. Interpretive
12. High Performance
11 | P a g e
Core Java
1. Simple:-
Java is a simple programming language because:
▪
Java technology has eliminated all the difficult and confusion oriented
concepts like pointers, multiple inheritance in the java language.
▪
The c,cpp syntaxes easy to understand and easy to write. Java maintains C and
CPP syntax mainly hence java is simple language.
▪
Java tech takes less time to compile and execute the program.
2. Object Oriented:-
Java is object oriented technology because to represent total data in the form of object. By
using object reference we are calling all the methods, variables which is present in
that class.
Class Test
{ Test t=new Test(); Class data
Class data; t
}
The total java language is dependent on object only hence we can say java is a object
oriented technology.
3. Platform Independent :-
Compile the Java program on one OS (operating system) that compiled file can execute
in any OS(operating system) is called Platform Independent Nature. The java is
platform independent language. The java applications allows its applications
compilation one operating system that compiled (.class) files can be executed in any
operating system.
exe
Test.class JVM Windows
Test.java
exe
JVM Linux
Javac
JVM
exe
JVM Macos
exe Solaris
source file compilation JVM understandable file output console
12 | P a g e
Core Java
4. Architectural Neutral:-
Java tech applications compiled in one Architecture (hardware----RAM, Hard Disk) and
that Compiled program runs on any hardware architecture(hardware) is called
Architectural Neutral.
5. Portable:-
In Java tech the applications are compiled and executed in any OS(operating system)
and any Architecture(hardware) hence we can say java is a portable language.
6. Robust:-
Any technology if it is good at two main areas it is said to be
ROBUST 1 Exception Handling
2 Memory
Allocation JAVA is Robust because
a. JAVA is having very good predefined Exception Handling mechanism whenever
we are getting exception we are having meaning full information.
b. JAVA is having very good memory management system that is Dynamic Memory (at
runtime the memory is allocated) Allocation which allocates and deallocates
memory for objects at runtime.
7. Secure:-
To provide implicit security Java provide one component inside JVM called
Security Manager.
To provide explicit security for the Java applications we are having very good predefined
library in the form of java.Security.package.
Web security for web applications we are having JAAS(Java Authentication and
Authorization Services) for distributed applications.
8. Dynamic:-
Java is dynamic technology it follows dynamic memory allocation(at runtime the
memory is allocated) and dynamic loading to perform the operations.
9. Distributed:-
By using JAVA technology we are preparing standalone applications and
Distributed applications.
Standalone applications are java applications it doesn’t need client server architecture.
web applications are java applications it need client server architecture.
Distributed applications are the applications the project code is distributed in multiple
number of jvm’s.
10. Multithreaded: -
Thread is a light weight process and a small task in large program.
13 | P a g e
Core Java
If any tech allows executing single thread at a time such type of technologies is called
single threaded technology.
If any technology allows creating and executing more than one thread called as
Multithreaded technology called JAVA.
11. Interpretive:-
JAVA tech is both Interpretive and Completive by using Interpretator we are converting
source code into byte code and the interpretator is a part of JVM.
14 | P a g e
Core Java Gopal
2) Then operating system goes to environmental variables and check is there any path
is sets or not. up to now we are not setting any path. So operating system don’t know
anything about javac command Because of this reason we are getting error message.
Hence we have to environmental variables. The main aim of the setting environmental
variable is to make available the fallowing commands javac,java,javap (softwares) to
the operating system.
To set the environmental variable:-
My Computer (right click on that) ---->properties----->Advanced--->Environment Variables---->
Editor is a tool or software it will provide very good environment to type the java application
Ex. Notepad,Notepad++,eclipse,netbeans ….etc
Write the java program based on the java API(Application Programming Interface) rule and
regulations .
Java is a case Sensitive Language while writing the program we have to take care about the
case (Alphabet symbols)
After writing the program we have to save the program while saving the program we have to consider
fallowing steps
Check whether the source file contain the public class or not
15 | P a g e
Core Java
1. if the source file contain public class the name of the public class and the name of the
Source file must be same(publicClassName.java). Otherwise we are getting compilation
error.
2. if the source file does not contain any public class at that situation we can save
the source file with (anyName.java)
The java compiler goes to Test.java file and it will search for syntactical error if the syntactical errors are
presented the java compiler raise compilation error if there is no syntactical errors are presented at
that situation the java compiler converts the .java files into the .class file.
Note:- the .class file generation totally based on the number of classes present in the source it is not
depending the number of classes present in the source file it is not depending on the name of
the file.
To compile multiple source files at a time
Javac *.java
Venu.java
Class A A.class
{
} B.class
Class B Compilation C.class
{
} Javac Venu.java
Class C
{
}
16 | P a g e
Core Java Gopal
17 | P a g e
Core Java
Class Test
{
1. variables
2. methods
3. constructors
4. instance blocks
5. static blocks
}
TOKENS:-Smallest individual part in a java program is called Token. It is possible to provide any number
of spaces in between two tokens.
Ex:-Class Test
{
Public static void main(String[] args)
{int a=10;
System.out.println(“java tokens”);
}
}
→
Tokens are--------- class,test,{,”,[-----------------------------etc
Print() vs Println ():-
Print():-
Print is used to print the statement into the console and the control is available in the same
line. Ex:- System.out.print(“JavaHome”);
System.out.print(“ ”);
Output:-JavaHome Core Java
Println():-
In the println statement Print is used to print the statement into the console and ln represent
go to the new line now the control is available in the next line.
Ex:- System.out.println(“JavaHome”);
System.out.println(“ ”);
Output: - JavaHome
18 | P a g e
Core Java
Identifiers:-
any name in the java program like variable name,class name,method name,interface name is called
identifier.
→
class Test Test------- identifier
{
→
void add() add------- identifier
{
→
int a=10; a---------- identifiers
→
int b=20; b---------- identifiers
}
};
Rules to declare identifiers:-
1. the java identifiers should not start with numbers,it may start with alphabet symbol
and underscore symbol and dollar symbol.
→
a. Int abc=10;----- valied
→
b. Int 2abc=20;---- not valied
→
c. Int _abc=30;---- valied
→
d. Int $abc=40;---- valied
→
e. Int @abc=50;--- not valied
2. The identifier will not contains symbols like
+ , - , . , @ , # , *………………….
3. The identifier should not duplicated.
class Test
{
void add()
{
int a=10;
int a=20; the identifier should not be duplicated.
}
};
4. In the java applications it is possible to declare all the predefined class names and
predefined interfaces names as a identifier. But it is not recamanded to use.
class Test
{
public static void main(String[] args)
{
int String=10; //predefind String class
int Serializable=20; //predified Seriaiable class
float Exception=10.2f; //predefined Exception class
System.out.println(String);
System.out.println(Serializable);
System.out.println(Exception);
}
};
19 | P a g e
Core Java
3. All java variables should start with lowercase letter and inner words start with
uppercase letter.
Ex:- pageContent
bodyContent
4. All java constant variables should be in uppercase letter.
Ex: MIN_PRIORITY
MAX_PRIORITY
NORM_PRIORITY
5. All java packages should start with lower case letters only.
Ex: java.awt
Java.io
NOTE:-
The coding standards are applicable for predefined library not for user defined library .But it is
recommended to fallow the coding standards for user defined library also.
JAVA COMMENTS :-
To provide the description about the program we have to use java
comments. There are 3 types of comments present in the java language.
1) Single line Comments:-
By using single line comments we are providing description about our program within
a single line.
Starts with…………….>// (double slash)
Syntax:- //description
20 | P a g e
Core Java
3) Documentation Comments:-
This comment is used to provide description about our program in more than one page. In
general we are using document comment to prepare API kind of documents but it is not
sujastable.
Syntax: - /*…………….line-1
*……………..line-2
*………………line-
3 */
Ex:-/*project name:-green
project team size:- 6
team lead:- */
class Test
{
//main method
public static void main(String[] args)
{
//printing statement
System.out.println(" ");
}
};
java Statements:-
Java statements
Selection
Statements Iteration Transfer
statements statement
If
if-else while break
Switch do-while continue
For retur
n try
21 | P a g e
Core Java
If syntax:-
if (condition)
{
if body;
}
The curly brasses are optional whenever we are taking single statements.
The curly brasses are mandatory whenever we are taking multiple statements.
Ex 1:-
class Test
{
public static void main(String[] args)
{
int a=10;
if (a>5)
{
System.out.println("if body / true body");
}
}
}
Ex 2:-
class Test
{
public static void main(String[] args)
{
if (true)
{
System.out.println("if body / true body");
}
System.out.println("hi Java");
}
}
Ex 3:-
class Test
{
public static void main(String[] args)
{
if (false)
{
System.out.println("if body / true body");
}
System.out.println("hi Java");
}
}
22 | P a g e
Core Java
if (condition)
{
if body;(true body)
}
else
{
else body;(false body)
}
The curly brasses are optional whenever we are taking single statements.
The curly brasses are mandatory whenever we are taking multiple statements.
Ex:-class
Test
{
public static void main(String[] args)
{
int a=10;
int b=20;
if (a<b)
{
System.out.println("if body / true body");
}
else
{
System.out.println("else body/false body ");
}
System.out.println("hi Java");
}
}
23 | P a g e
Core Java
Switch statement:-
1) Switch statement is used to take multiple selections.
2) Curly brasses are mandatory if we are not taking we are getting compilation error.
3) Inside the switch It is possible to declare any number of cases but is possible to declare only
one default.
4) Switch is taking the argument the allowed arguments are
a. Byte
b. Short
c. Int
d. Char
e. String(allowed in 1.7 version)
5) Float and double and long is not allowed for a switch argument because these are having
more number of possibilities (float and double is having infinity number of possibilities)
hence inside the switch statement it is not possible to provide float and double and long as a
argument.
6) If the case is matched particular case will be executed if there is no case is matched
default case is executed.
Syntax:-
switch(argument)
{
Case label1 : sop(“ “);
break;
| |
| |
24 | P a g e
Core Java
Eg:
class Test
{
public static void main(String[] args)
{
int a=10;
switch (a)
{
case 10:System.out.println("10");
break;
case 20:System.out.println("20");
break;
case 30:System.out.println("30");
break;
case 40:System.out.println("40");
break;
default:System.out.println("default");
break;
}
}
};
Output: 10
Ex:-the case label must be unique. Duplicate case labels are not allowed in switch statement.
class Test
{
public static void main(String[] args)
{
int a=10;
switch (a)
{
case 10:System.out.println("10");
break;
case 10:System.out.println("20");
break;
case 30:System.out.println("30");
break;
default :System.out.println("default");
break;
}
}
};
25 | P a g e
Core Java
Eg:- the case labels must be constant expression if we are providing variables as a case labels the
compiler will raise compilation error.
class Test
{
public static void main(String[] args)
{
int a=10,b=20,c=30;
switch (a)
{
case a: System.out.println("10");
break;
case b: System.out.println("20");
break;
case c: System.out.println("30");
break;
default: System.out.println("default");
break;
}
}
};
Ex:- for the case label it is possible to provide constant
expressions. class Test
{
public static void main(String[] args)
{
int a=100;
switch (a)
{
case 10+20+70:System.out.println("10");
break;
case 100+200:System.out.println("20");
break;
default :System.out.println("default");
break;
}
}
};
Ex:- inside the switch the default is optional part.
class Test
{
public static void main(String[] args)
{
int a=10;
switch (a)
{
26 | P a g e
Core Java
case 10:System.out.println("10");
break;
}
}
};
Ex 4:- Inside the switch case is optional part.
class Test
{
public static void main(String[] args)
{
int a=10;
switch (a)
{
default: System.out.println("default");
break;
}
}
};
Ex 5:- inside the switch both case and default Is
optional. public class Test
{
public static void main(String[] args)
{
int a=10;
switch(a)
{}
}
}
Ex :-inside the switch independent statements are not allowed. If we are declaring the statement
that statement must be inside the case or default.
public class Test
{
public static void main(String[] args)
{
int x=10;
switch(x)
{
System.out.println("Hello World");
}
}
}
27 | P a g e
Ex:- Inside the switch statement break is optional. If we are not providing break statement at that
situation from the matched case onwards up to break statement is executed if no beak is available up
to the end of the switch is executed. This situation is called as fall though inside the switch case.
class Test
{
public static void main(String[] args)
{
int a=10;
switch (a)
{
case 10:System.out.println("10");
case 20:System.out.println("20");
case 30:System.out.println("30");
case 40:System.out.println("40");
break;
default: System.out.println("default");
break;
}
}
};
Ex :-inside the switch statement we are able take the default anywhere else.(starting ,middle
,ending) class Test
{
public static void main(String[] args)
{
int a=100;
switch (a)
{
default: System.out.println("default");
case 10:System.out.println("10");
case 20:System.out.println("20");
}
}
};
Ex 7:- from the 1.7 version onwards the string also allowed argument for the switch statement.
class Tict
{
public static void main(String[] args)
{
String str = “aaa”;
switch (str)
{
case "aaa" : System.out.println("Hai");
break;
28 | P a g e
Core Java
29 | P a g e
Core Java
break;
}
}
}
Ex:-inside switch the case label must be within the range of provided argument data type.
class Test
{
public static void main(String[] args)
{
byte b=125;
switch (b)
{
case 125:System.out.println("10");
case 126:System.out.println("20");
case 127:System.out.println("30");
case 128:System.out.println("40");
default:System.out.println("default");
}
}
};
Ex :- this program only executed only in 1.7 version.
class Test
{
public static void main(String[] args)
{
String str="aaa";
switch (str)
{
case "aaa" : System.out.println("Hai");
break;
case "bbb" : System.out.println("Hello");
break;
default : System.out.println("what");
break;
}
}
}
30 | P a g e
Core Java
Iteration Statements:-
If we want to execute group of statements repeatedly or more number of times then we should go for
iteration statements.
Three types of iteration statements present in the java language
1) for
2) while
3) do-while
for syntax:-
for (part 1;part 2 ;part 3 )
{
Body;
}
Ex:- for (initialization ;condition ;increment/decrement )
{
Body;
}
1) The for loop contains three parts initialization, condition, increment/decrement part.
2) Each and every part is separated by semicolon and it is mandatory.
The curly brasses are optional whenever we are taking single statement.
The curly brasses are mandatory whenever we are taking more than one statements.
Flow of execution in for loop:-
1 2 5 4 7
for (initialization ;condition ;increment/decrement )
{
Body; 3 6
}
Step1:- initialization is down
Step 2:- condition will be checked.
Step 3:- if the condition is true body will be executed. If the condition is false loop
stopped. Step 4:- after body increment/decrement part will be executed.
Step 5:- condition will be checked.
Step 6:- if the condition is true body is executed.
Step 7:- after body increment/decrement part will be executed.
The above process is repeated until the condition is false. If the condition is false the loop is stopped.
Initialization part:-
1) Inside the for loop initialization part is optional.
2) Instead of initialization it is possible to take any number of System.out.println(“Java”); also and
each and every statement is separated by camas(,).
3) Initialization part it is possible to take the singe initialization it is not possible to take the more
than one initialization.
31 | P a g e
Core Java
32 | P a g e
Core Java
Conditional part:-
1) Inside the for loop conditional part is optional.
2) If we are not taking any condition then the compiler places the true value.
3) The condition is always must return Boolean(true, false) values only.
Ex 1:-if we are not providing condition it is always true representing infinite
loop. class Test
{
public static void main(String[] args)
{
for (int i=0;;i++)
{
System.out.println("Java");
}
}
}
Ex 2:-
class Test
{
public static void main(String[] args)
{
for (int i=0;true;i++)
{
System.out.println("Java");
}
}
}
Ex:- compiler is unable to identify the ex:- compiler able to identify the unreachable
unreachable statement. Statement.
class Test class Test
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
for (int i=1;i>0;i++) for (int i=1;true;i++)
{ {
System.out.println("infinite times ");
} System.out.println(" ");
System.out.println("rest of the code"); }
} System.out.println("rest of the code");
} }
}
33 | P a g e
Core Java
Increment/decrement:-
1) Inside the for loop increment/decrement session is optional.
2) Instead of increment/decrement it is possible to take the any number of
System.out.pritnln(“ranta”); also and each and every statement is separated by camas(,).
Ex1:-inc/dec part is
optional class Test
{
public static void main(String[] args)
{
for (int i=0;i<10;)
{
System.out.println("Java");
}
}
}
Ex 2:- instead if inc/dec it is possible to take the any number of System.out.println(“ranta”);
class Test
{
public static void main(String[] args)
{
for (int i=0;i<10;System.out.println("aruna"),System.out.println("nagalakshmi"))
{
System.out.println("Java");
i++;
}
}
}
Note :
each and every part inside the for loop is optional.
for(;;)------------ represent infinite loop because the condition is always true.
While:-
If we want to execute group of statements repeatedly or more number of times then we should
go for while loop.
Syntax:-
while (condition)
{
body;
}
Ex 1 :-
class Test
{
public static void main(String[] args)
{
int i=0;
34 | P a g e
Core Java
while (i<10)
{
System.out.println("Java");
i++;
}
}
}
Ex 2:-represent infinite
loop class Test
{
public static void main(String[] args)
{
int i=0;
while (true)
{
System.out.println("Java");
i++;
}
}
}
Ex 3:- compilation error unreachable statement
class Test
{
public static void main(String[] args)
{
int i=0;
while (false)
{
System.out.println("Java");//unreachable statement
i++;
}
}
}
Do-While:-
1) If we want to execute the loop body at least one time them we should go for do-
while statement.
2) In the do-while first body will be executed then only condition will be checked.
3) In the do-while the while must be ends with semicolon otherwise we are getting
compilation error.
4) do is taking the body and while is taking the condition and the condition must be
Boolean condition.
Syntax:-do
{
//body of loop
} while(condition);
35 | P a g e
Core Java
Ex :-class
Test
{
public static void main(String[] args)
{
int i=0;
do
{
System.out.println("Java");
i++;
}while (i<10);
}
}
Ex :- unreachable
statement class Test
{
public static void main(String[] args)
{
int i=0;
do
{
System.out.println("Java");
}
while (true); System.out.println("Javaech");//unreachable
statement
}
}
Ex :-class
Test
{
public static void main(String[] args)
{
int i=0;
do
{
System.out.println("Java");
}
while (false);
System.out.println("Javaech");
}
Output:- Java Javaech
36 | P a g e
Core Java
Transfer statements:- by using transfer statements we are able to transfer the flow of execution from
one position to another position .
1. break
2. continue
3. return
4. try
break:- we are able to use the break statement only two places if we are using any other place
the compiler will raise compilation error.
a. Inside the switch statement.
b. Inside the loops.
Ex :-break means stop the execution come out of
loop. class Test
{
public static void main(String[] args)
{
for (int i=0;i<10;i++)
{
if (i==5)
{
break;
}
System.out.println(i);
}
}
}
Continue:-(skip the current iteration continue the rest of the iterations normally)
class Test
{
public static void main(String[] args)
{
for (int i=0;i<10;i++)
{
if (i==5)
{
continue;
}
System.out.println(i);
}
}
}
37 | P a g e
Core Java
Key words:-
38 | P a g e
Core Java
Data Types:-
1) Data types are used to represent the type of the variable and type of the expression.
2) Data types are used to specify the how much memory is allocated for variables.
39 | P a g e
Core Java
Boolean literal:-
The Boolean values are true or alse.
→
boolean b=true; ------ good
→
Boolean b=0;----------- it’s working in c-lang but not in java
Char literal:-
A character literal is represented by a character in single quote.
Char ch=’a’;
Char ch1=’#’;
Char ch=’1’;
class Test
{
public static void main(String[] args)
{
char ch1='"';
+System.out.println((int)ch1);
char ch2='\'';
System.out.println((int)ch2);
}
}
String literal:-
A string literal represented by group of character in double quotes.
String str=” ”;
class Test
{
public static void main(String[] args)
{
String str1=" ";
System.out.println(str1+"soft");
System.out.println("venu"+"javahome");
}
}
Ex:-
byte+byte=int byte+short=int short+int=int byte+int=int byte+long=long
short+float=float long+float=float float+double=double String+int=String
40 | P a g e
Core Java
}
Static area:-
Static Void m1()
{
Static
area Static method
}
Static variables & methods accessing:-
Static variables/methods
Instance variables/methods
41 | P a g e
Core Java
Types of variables:-
• Variables are used to store the values. By storing that values we are achieveing the
functionality of the project.
• While declaring variable we must specify the type of the variable by using data type’s concept.
}
}
Instance variables:-
1. The variables which are declare inside a class and outside of the methods is called instance
variables.
2. We are able to access instance variables only inside the class any number of methods.
class Test
{
int a=10;
int b=20;
void add()
{
System.out.println(a+b);
}
public static void main(String[] args)
{
Test t=new Test();
System.out.println(t.a+t.b);
t.add();
}
}
42 | P a g e
Core Java
3. Static variables:-
• The instance variables which are declared as a static modifier such type of
variables are called static variables.
• We are able to access static variables within the class any number of methods.
class Test
{
static int a=10;
static int b=20;
public static void main(String[] args)
{
System.out.println(a+b);
}
void add()
{
System.out.printl(a+b);
}
}
Calling of static variables:-
a. Directly possible.
b. By using class name possible.
c. By using reference variable possible.
class Test
{
static int x=100;
public static void main(String[] args)
{
//1-way(directly possible)
System.out.println(a); //2-
way(By using class name)
System.out.println(Test.a);
//3-way(By using reference
variable) Test t=new Test();
System.out.println(t.a);
}
};
Instance vs Static variables:-
1. Instance variable for the each and every object one separate copy is maintained.
2. Static variable for all objects same copy is maintained. One Object change the value another
object is affected.
class Test
{
int a=10; static
int b=20;
public static void main(String... )
{
43 | P a g e
Core Java
44 | P a g e
Core Java
class Test
{
public static void main(String[] args)
{
byte a=10;
int b;
System.out.println(a);
System.out.println(b);
}
}
Compilation error:- Variables b might not have been initialized
System.out.println(b);
Practice example:-
class Test
{
//2-instance
variables int a=10;
boolean b; //2-static
variables static int
c=20; static double d;
//1-instance methods
void m1()
{
System.out.println(a);//10
System.out.println(b);//false
System.out.println(c);//20
System.out.println(d);//0.0
}
//1-static method
static void m2()
{
Test t=new Test();
System.out.println(t.a);//10
System.out.println(t.b);//false
System.out.println(c);//20
System.out.println(d);//0.0
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
m2();
}
}
45 | P a g e
VenuGopal
Class vs Object:-
4. PEN(object):-
State:- name raynolds,color red etc……
Behaviour:- used to write
Test t;
a. It notifies the compiler refers the Test data with t reference variable.
b. Declaring reference variable doesn’t mean creating object we must use new operator to create
object.
t is reference variable pointing to nothing.
t nothing
Core Java
t Test object
100
t X
200
y
Core Java
Arrays:-
Advantages of array:-
1) Length of the code will be decreased
2) We can access the element present in the any location.
3) Readability of the code will be increased.
0 1 2 3 4 5 6 7 8 index
Length is 9
Root structure:-
java.lang.Object
|
+--java.lang.reflect.Array
}
}
Core Java
Ex:-
class Test
{
public static void main(String[] args)
{
int[] a=new int[100];
System.out.println(a.length);
System.out.println(a[99]);
boolean[] b=new boolean[100];
System.out.println(b[99]); char[]
ch=new char[50];
System.out.println(ch[44]);
byte[] bb=new byte[100];
System.out.println(bb[100]);//ArrayIndexOutOfBoundsException
}
}
Ex:-class
Test
{
public static void main(String[] args)
{
int[] a=new int[4];// allocates memory for 4 elements
a[0]=10;
a[1]=100;
a[2]=1000;
a[3]=10000;
System.out.println(a.length);
for (int i=0;i<a.length;i++ )
{
System.out.println(a[i]);
}
}
}
To get the class name of the array:-
getClass() method is used to get the class.
getName() method is used to print the name of the
class. class Test
{
public static void main(String[] args)
{
int[] a={10,20,30};
System.out.println(a.getClass().getName());
}
}
Core Java
10 20 30 10 20 30
0 1 2 0 1 2
→
a[0][0]------ 10
→
a[0][1]------ 20
→
a[0][2]----- 30
→
a[1][0]----- 40
→
a[1][1]----- 50
→
a[1][2]----- 60
Core Java
Methods (behaviors):-
1) Methods are used to provide the business logic of the project.
2) The methods like a functions in C-language called functions, in java language is called
methods.
3) Inside the class it is possible to declare any number of methods based on the developer
requirement.
4) As a software developer while writing method we have to fallow the coding standards
like the method name starts with lower case letters if the method contains two words
every inner word also starts uppercase letter.
5) It will improve the reusability of the code. By using methods we can optimize the code.
Syntax:-
Ex:-
void m1() declaration of the method.
{
statement-1
statement-2
statement-3 implementation/body
statement-4
}
Ex:-
Void deposit()
{ defining a method
System.out.println(“money deposit logic”);
System.out.println(“congrats your money is deposited”); functionality of a method
}
52 | P a g e
Core Java
Instance method:-
void m1()
{
Instance
Instance method
area
Static Method:-
Static
area Static method
}
Ex :- instance methods without
arguments. class Test
{
void venu()
{
System.out.println("JavaHome solutions");
}
void soft()
{
System.out.println("software solutions");
}
public static void main(String[] args)
{
Test t=new Test();
t.venu();
t.soft();
}
}
53 | P a g e
Core Java
venu()
soft()
}
}
54 | P a g e
Core Java
Ex :-while calling methods it is possible to provide the variables as a parameter values to the
methods.
class Test
{
void m1(int a,int b)
{
System.out.println(a);
System.out.println(b);
}
void m2(boolean b)
{
System.out.println(b);
}
55 | P a g e
Core Java
→ → → →
m1()-- calling -- m2()---- calling------ m3()
m1()<------- after completion-m2()<------ after completion m3()
Ex:-calling of
methods class Test
{
void m1()
{m2();
System.out.println("m1 ");
}
void m2()
{ m3(100); System.out.println("m2
venu"); M3(200);
}
void m3(int a)
{
System.out.println(a);
System.out.println("m3 naresh");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
}
}
Ex :- methods with return type.
class Test
{
static int add(int a,int b)
{
int c=a+b;
return c;
}
static float mul(int a,int b)
{
int c=a*b;
return c;
}
public static void main(String[] args)
{
int a=add(10,20);
System.out.println(a);
float b=mul(100,200);
System.out.println(b);
}}
56 | P a g e
Core Java
Ex :-for the java methods return type is mandatory otherwise the compilation will raise error
return type required.
class Test
{
void m1()
{
System.out.println("hi m1-method");
}
m2()
{
System.out.println("hi m2-method");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
t.m2();
}
}
Ex :-Duplicate method signatures are not allowed in java language if we are declaring
duplicate method signatures the compiler will raise compilation error m1() is already defined
in test class Test
{
void m1()
{
System.out.println("Java");
}
void m1()
{
System.out.println("venu");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
}
}
Ex :-
a. Declaring the class inside the class is called inner classes concept java supports inner
methods concept.
b. Declaring the methods inside the methods inner methods concept java not supporting inner
methods concept.
57 | P a g e
Core Java
class Test
{
void m1()
{
void m2()
{
System.out.println("this ia a m2-static method");
}
System.out.println("this ia a m1-instance method");
}
public static void main(String[] args)
{
Test t1=new
Test(); t.m1();
}
};
Stack Mechanism:-
1) Whenever we are executing the program stack memory is created.
2) The each and every method is called by JVM that method entries are stored in the stack memory
and whatever the variables which are available within the method that variables are stored in
the stack.
3) If the method is completed the entry is automatically deleted from the stack means
that variables are automatically deleted from the stack.
4) Based on the 1 & 2 points the local variables scope is only within the method.
Ex :-class Test
{
void deposit(int accno)
{
System.out.println("money is deposited into "+accno);
}
void withdraw(float amount)
{
System.out.println("money withdraw is over amount "+amount);
}
public static void main(String[] args)
{
Test t=new Test();
t.deposit(111);
t.withdraw(10000);
}
}
Step 1:- One empty stack is created
Step 2:-
Whenever the JVM calls the main method the main method entry is stored in the stack memory.
The stored entry is deleted whenever the main method is completed.
Step 3:-
58 | P a g e
Core Java
Whenever the JVM is calling the deposit () the method entry is stored in the stack and local
variables are store in the stack. The local variables are deleted whenever the JVM completes
the Deposit () method execution. Hence the local variables scope is only within the method.
Step 4 :-
The deposit method is completed Then deposit () method is deleted from the stack.
Step 5 :-
Only main method call present in the stack.
Step 6:-
Whenever the JVM calls the withdraw method the entry is stored in the stack.
Step 7:-
Whenever the Withdraw method is completed the entry is deleted from the stack.
Step 8:-
Whenever the main method is completed the main method is deleted from the
stack. Step 9:- the empty stack is deleted from the memory.
Deposit()
Accno=111
Withdraw()
Amount=
10000
59 | P a g e
Core Java
M2()
Ex:-
M1()
class Operations
{ Main()
int a; int
b; void
add()
{
System.out.println(a+b);
}
};
class Test
{
public static void main(String[] args)
{
Operations o1=new
Operations(); Operations
o2=new Operations(); o1.a=100;
o1.b=200;
o2.a=1000;
o2.b=2000;
o1.add();
o2.add();
}
};
60 | P a g e
Core Java
1) Accessor methods just used to read the data. To read the reading the data use getters methods.
2) Mutator methods used to store the data and modify the data for the storing of data use setters
methods.
class Test
{
String name;
int id;
61 | P a g e
Core Java
1) It is used to store the objects 1) It is used to store the function calls and local
variables.
62 | P a g e
Core Java
}
static void m4(char ch,char ch1)
{
System.out.println(ch);
System.out.println(ch1);
}
}
}
CONSTRUCTORS:-
1) Constructors are executed as part of the object creation.
2) If we want to perform any operation at the time of object creation the suitable place is
constructor.
3) Inside the java programming the compiler is able to generate the constructor and user is able to
declare the constructor. so the constructors are provided by compiler and user.
There are two types of constructors
1) Default Constructor.
a. Zero argument constructor.
2) User defined Constructor
a. zero argument constructor
b. parameterized constructor
constructor
Parameterized constructor
63 | P a g e
Core Java
Default Constructor:-
1) in the java programming if we are not providng any constructor in the class then compiler
provides default constructor.
2) The default constructor is provided by the compiler at the time of compilation.
3) The default constructor provided by the compiler it is always zero argument constructors
with empty implementation.
4) The compiler generated default constructortaht default constructor is executed by the JVM at
the time of execution.
Ex:- Before compilation After compilation:-
class Test
{ class Test
void good() {
{ Test()
System.out.println("good girl"); { default constructor
} provided by compiler
public static void main(String[] args) }
{ void good()
Test t=new Test(); {
t.good(); System.out.println("good girl");
} }
} public static void main(String[] args)
{
Test t=new Test();
t.good();
}
}
64 | P a g e
Core Java
65 | P a g e
Core Java
66 | P a g e
Core Java
this heyword:-
This keyword is used to represent current
class object and refers to
1. Current class variables.
2. Current class methods.
3. Current class constructors.
Current class variables:- Note:- this keyword is required
Ex 1:-No need of this
keyword class Test class Test
{ {
int a=10; int a=10;
int b=20; int b=20;
void add(int i,int j) void add(int a,int b)
{ System.out.println(a+b); {
System.out.println(i+j); System.out.println(a+b);
} System.out.println(this.a+this.b);
public static void main(String[] args) }
{ public static void main(String[] args)
Test t=new Test(); {
t.add(100,200); Test t=new Test();
} t.add(100,200);
}; }
};
67 | P a g e
Core Java
Ex:-convertion of local variables into Ex:- to convert local variables into the
the instance/static variables instance/static variables need of this
class Test keyword. class Test
{ { static int a; int b;
static int i;
int j; void values(int a,int b)
void values(int a,int b) {
{ this.a=a;
i=a; this.b=b;
j=b; }
} void add()
void add() {
{ System.out.println(a+b);
System.out.println(i+j); }
} void mul()
void mul() {
{ System.out.println(a*b);
System.out.println(i*j); }
} public static void main(String[] args)
public static void main(String[] args) {
{ Test t=new Test();
Test t=new Test(); t.values(100,200);
t.values(100,200); t.add();
t.add(); t.mul();
t.mul(); }
} }
}
Ex:- to call the current class mehods we have to use this keyword The both examples gives same
output( both examples are same)
class Test
class Test {
{
void m1() void m1()
{ {
this.m2(); m2();
System.out.println("m1 method"); System.out.println("m1 method");
} }
void m2() void m2()
{ {
System.out.println("m2 method"); System.out.println("m2 method");
} }
public static void main(String[] args) public static void main(String[] args)
{ {
Test t=new Test(); Test t=new Test();
t.m1(); t.m1();
} }
}; };
68 | P a g e
Core Java
69 | P a g e
Core Java
Student() Student()
{ {
Scanner s=new Scanner(System.in); Scanner s=new Scanner(System.in);
System.out.println("enter sname:"); System.out.println("enter sname:");
String sname=s.next(); sname=s.next();
this.sname=sname; System.out.println("enter
System.out.println("enter no"); sno"); sno=s.nextInt();
int sno=s.nextInt(); }
this.sno=sno;
} void display()
void display() {
{ System.out.println("**student deatils**");
System.out.println("**student details******"); System.out.println("student sname"+sname);
System.out.println("student name:---"+sname); System.out.println("student sno"+sno);
System.out.println("student no:---"+sno); }
} public static void main(String[] args)
public static void main(String[] args) {
{ Student s=new Student();
Student s=new Student();
s.display(); }
} }
}
70 | P a g e
Core Java
Oops conceps:-
1)inheritance
2)polymorphisum
3)abstraction
4)encapsulation
Inheritance:-
The process of getting properties and behaviors from one class to another class is called inheritance.
Properties : variables
Behaviors : methods
1. The main purpose of the inheritance is code extensibility whenever we are extending
automatically the code is reused.
2. In inheritance one class giving the properties and behavior and another class is taking the
properties and behavior.
3. Inheritance is also known as is-a relationship means two classes are belongs to the same
hierarchy.
4. By using extends keyword we are achieving inheritance concept.
5. In the inheritance the person who is giving the properties is called parent the person who is
taking the properties is called child.
6. To reduce length of the code and redundancy of the code sun peoples introducing inheritance
concept.
Types of inheritance:-
Single inheritance:-
Class A
Extending the properties from single parent class to
B extends A single child class is called single inheritance.
Class B
Class A is Parent class
Class B is Child class
1) Multilevel inheritance:-
Class A
B extends A
Class B one super and one sub class at each and every level.
C extends B
Class C
2) Multiple inheritance:-
71 | P a g e
Core Java
The process of getting properties and behaviors form more than one super class to the one
child class. The multiple inheritance is not possible in the java language so one class can extends
only one class at time it is not possible to extends more than one class at time.
→
Class B extends A------- possible Class C
→
extends B------ possible Class C extends
→
A,B-- not possible Class A Class B
C extends A,B
Class C
3) Hierarchical inheritance:-
The process of getting properties and behaviors from one super class to the more than one
sub classes is called hierarchical inheritance.
Class A
hierarchical inheritance
D extends C E extends C
class D class E
Before inheritance :- };
class A class C
{ {
Void m1(); Void m1();
Void m2(); Void m2();
}; Void m3();
class B Void m4();
{ Void m5();
Void m1(); Void m6();
Void m2(); }
Void m3();
Void m4();
72 | P a g e
Core Java
73 | P a g e
Core Java
Note:-
1. Every class in the java programming is a child class of object.
2. The root class for all java classes is Object class.
3. The default package in the java programming is java.lang package.
Final:-
• Final is the modifier applicable for classes, methods and variables (for all instance,
Static and local variables).
• if a class is declared as final, then we cannot inherit that class i.e., we cannot create any
child class for that final class.
• Every method present inside a final class is always final by default but every variable present
inside the final class need not be final.
• The main advantage of final modifier is we can achieve security as no one can be allowed
to change our implementation.
• But the main disadvantage of final keyword is we are missing key benefits of Oops like
74 | P a g e
Core Java
Case 1:-
Ex :-overriding the method is possible. Ex:- overrding the method is not possible
class Parent
{ class Parent
void andhra() {
{ void andhra()
System.out.println("Andhra Pradesh"); {
} System.out.println("Andhra Pradesh");
} }
class Child extends Parent }
{ class Child extends Parent
void andhra() {
{ final void andhra()
System.out.println("division is not possible"); {
} System.out.println("division is not possible");
public static void main(String[] args) }
{ public static void main(String[] args)
Child c=new Child(); {
c.andhra(); Child c=new Child();
} c.andhra();
}; }
};
Case 2:-
child class creation is possible child class creation is not possible
getting compilation error.
class Parent
{ final class Parent
}; {
class Child extends Parent };
{ class Child extends Parent
}; {
};
Case 3:-
Reassignment is possible. For the final variables reassignment is not
possible.
class Test class Test
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
int a=10; final int a=10;
a=a+10; a=a+10;
System.out.println(a); System.out.println(a);
} }
}; };
75 | P a g e
Core Java
Note :-
Every method present inside a final class is always final by default but every variable
present inside the final class need not be final.
1) One thing can exhibits more than one form called polymorphism.
2) The ability to appear in more forms.
3) Polymorphism is a Greek word poly means many and morphism means forms.
Polymorphism
Polymorphism
Method Overloading:-
1) Two methods are said to be overloaded methods if and only if two methods are having
same name but different argument list.
2) We can overload the methods in two ways in java language
a. Provide the different number of arguments to the same methods.
b. Provide the same number of arguments with different data types.
3) If we want achieve overloading one class is enough.
4) It is possible to overload any number of methods.
Types of overloading:-
a. Method overloading explicitly by the programmer
b. Constructor overloading
c. Operator overloading implicitly by the JVM(‘+’ addition& concatenation)
76 | P a g e
Core Java
Method overloading:-
Ex:-
class Test
{
void m1(char ch)
{
System.out.println(" char-arg constructor ");
}
void m1(int i)
{ Overloaded Methods
System.out.println("int-arg constructor ");
}
void m1(int i,int j)
{
System.out.println(i+"------"+j);
}
public static void main(String[] args)
{
Test t=new Test();
t.m1('a');
t.m1(10);
t.m1(10,20);
}
}
You can have any number of main methods in a class by method overloading. But JVM calls main() method
which receives string array as arguments only
Ex:-
class Test
{
public static void main(String[] args)
{
System.out.println("String[] parameter main method start");
main(100);
main('r');
}
public static void main(int a)
{
System.out.println("integer parameter argument");
System.out.println(a);
} overloaded main method
public static void main(char ch)
{
System.out.println("character paramer argument");
System.out.println(ch);
}
}
77 | P a g e
Core Java
Ex :-class
Test
{
void sum(int a,int b)
{
System.out.println("int arguments method");
System.out.println(a+b);
}
void sum(long a,long b)
{
System.out.println("long arguments
method"); System.out.println(a+b);
}
Constructor Overloading:-
The constructors are having same name but different argument list such type of
constructors are called Overloaded constructors.
class Test
{
Test()
{
System.out.println("0-arg constructor");
}
Test(int i)
{ Overloaded Constructor
System.out.println("int argument constructor");
}
Test(char ch,int i)
{
System.out.println(ch+"-----"+i);
}
public static void main(String[] args)
{
Test t1=new Test();//calling of zero argument constructor Test
t2=new Test(10);//calling of one argument constructor Test
t3=new Test('a',100);//calling of two argument constructor
}
}
78 | P a g e
Core Java
Operator overloading:-
One operator can act as more than one form is called Operator overloading . the only
operator overloaded in java language is ‘+’.
Ex:- class Test
{
public static void main(String[] args)
{
String str1="Java"; String
str2="Venu";
System.out.println(str1);
System.out.println(str1);
System.out.println(str1+str2);
int a=10;
int b=20;
System.out.println(a);
System.out.println(b);
System.out.println(a+b);
}
}
Method Overriding:-
1) If the child class not satisfy the parent class method implementation then it is possible
to override that method in the child class based on child class requirement.
2) If we want to achieve method overriding we need two class(child and parent).
3) In the overriding concept the child class and parent class method signatures must be
same otherwise we are getting compilation error.
→
The parent class method is called------------- overridden method
→
The child class method is called--------------- overriding method
Ex:-methodOverriding
class Parent
{
void property()
{
System.out.println("money+land+hhouse");
}
void marry()
{
System.out.println("black girl"); Overridden method
}
};
class Child extends Parent
{
void marry()
{
System.out.println("white girl/red girl"); overriding method
}
public static void main(String[] args)
79 | P a g e
Core Java
{
Child c=new Child();
c.property();
c.marry();
Parent p=new Parent();
p.property(); p.marry();
}};
Abstraction:-
Hiding the internal implementation and highlighting the set of services that process is called
abstraction.
Ex:-
a. Bank ATM Screens (Hiding thee internal implementation and highlighting set
of services like withdraw, money transfer, mobile registration).
b. Mobile phones (The mobile persons are hiding the internal circuit implementation
and highlighting touch screen).
c. Syllabus copy (the institutions persons just highlighting the set of contents that
persons provided the persons are not highlighting the whole content).
Ex:- Abstract classes
Interfaces
The way of representation the methods are divided into two types
1) Normal methods
2) Abstract methods
Normal methods:-
Abstract methods:-
• The method which is having declaration but not implementations such type of methods are
called abstract Method. Hence every abstract method should end with “;”.
• The child classes are responsible to provide implementation for parent class
abstract methods.
80 | P a g e
Core Java
Based on above representation of methods the classes are devided into two types
1) Normal classes
2) Abstract classes
Normal classes:-
Normal class is a java class it contains only normal methods.
Abstract class:-
• Abstract class is a jav class which contains at least one abstract method.
• To specify the particular class is abstract and particular method is abstract method to the
compiler use abstract modifier.
• For the abstract classes it is not possible to create an object. Because it contains the
unimplemented methods.
• For any class if we don’t want instantiation then we have to declare that class as abstract i.e., for
abstract classes instantiation (creation of object) is not possible.
Normal class:-
class Test
{ Abstract class:-
void m1() Abstract class Test
{ {
body; void m1() { body; }
} void m2() { body; }
void m2() Abstract void m3();
{ }
body; Abstract class:-
} class Test
void m3()
{
{
body Abstract void m1();
} Abstract void m2();
} Abstract void m3();
}
Ex :-the abstract class contains abstract methods for that abstract methods provide
the implementation in child classes.
abstract class Test
{
abstract void m1();
abstract void m2();
abstract void m3();
}
class AbstractDemo extends Test
{
void m1()
{
System.out.println("m1-method");
}
void m2()
81 | P a g e
Core Java
{
System.out.println("m2-method");
}
void m3()
{
System.out.println("m3-method");
}
public static void main(String[] args)
{
AbstractDemo ad=new
AbstractDemo(); ad.m1();
ad.m2();
ad.m3();
}
};
Ex :- if the child class is unable to provide the implementation for parent class abstract methods at
that situation we can declare that class is an abstract then take one more child class in that class
provide the implementation for remaining methods.
abstract class Test
{
abstract void m1();
abstract void m2();
abstract void m3();
}
abstract class AbstractDemo1 extends Test
{
void m1()
{
System.out.println("m1-method");
}
void m2()
{
System.out.println("m2-method");
}
};
class AbstractDemo extends AbstractDemo1
{
void m3()
{
System.out.println("m3-method");
}
public static void main(String[] args)
{
AbstractDemo ad=new
AbstractDemo(); ad.m1();
ad.m2();
ad.m3();
82 | P a g e
Core Java
}
};
Note :-
In the above program
→
abstract Test--------------------------- not possible to create an object.
→
abstract AbstractDemo1----------- not possible to create an object.
→
AbstractDemo------------------------ possible to create a object.
Note :-
we can take the any number of child classes but we have to provide the implementation
for each and every abstract method.
Ex:- for the abstract methods it is possible to provide any type of return type(void,
int, char,Boolean…..)
abstract class Test1
{
abstract int m1();
abstract boolean m2();
}
class Test2 extends Test1
{
int m1()
{
System.out.println("m1 method");
return 100;
}
boolean m2()
{
System.out.println("m2 method");
return true;
}
public static void main(String[] args)
{
Test2 t=new Test2();
int a=t.m1();
System.out.println(a);
boolean b=t.m2();
System.out.println(b);
}
};
Ex:- for the abstract methods it is possible to provide arguments.
abstract class Test1
{
abstract int m1(int a,int b);
abstract boolean m2(char ch);
}
class Test2 extends Test1
{
83 | P a g e
Core Java
84 | P a g e
Core Java
Encapsulation:-
The process of binding the data and code as a single unit is called encapsulation.
We are able to provide more encapusulation by taking the private data(variables) members.
To get and set the values from private members use getters and setters to set the data and
to get the data.
Ex:-
class Encapsulation
{
private int sid; private
int sname; public void
setSid(int x)
{
this.sid=sid;
}
public int getSid()
{
return sid;
}
public void setSname(String sname)
{
this.sname=sname;
}
public String getSname()
{
return sname;
}
};
To access encapsulated use fallowing code:-
class Test
{
public static void main(String[] args)
{
Encapsulation e=new
Encapsulation(); e.setSid(100);
e.setSname(" "); int
num=e.getSid();
String name=e.getSname();
System.out.println(num);
System.out.println(name);
}
};
85 | P a g e
Core Java
86 | P a g e
Core Java
87 | P a g e
Core Java
Ex 1:- inside the constructors super keyword must be first statement of the constructor otherwise the
compiler raise compilation error.
Note :- inside the constructors it is possible to call only one constructor at a time that calling must be
first statement of the constructor.
Note: super() is added in each class constructor automatically by compiler if there is no super() or
this().
88 | P a g e
Core Java
The compiler will provide the super() In this example user is providing super()
keyword at the time of compilation. keyword .
class Test2 class Test2
{ {
Test2() Test2()
{ {
//super(); provided by compiler Super();
System.out.println("softrware"); System.out.println("softrware");
} }
}; };
class Test1 extends Test2 class Test1 extends Test2
{ {
Test1() Test1()
{ {
//super(); provided by compiler Super();
System.out.println("venu"); System.out.println("venu");
} }
}; };
class Test extends Test1 class Test extends Test1
{ {
Test() Test()
{ {
//super(); provided by compiler super();
System.out.println("0 arg constructor"); System.out.println("0 arg constructor");
} }
public static void main(String[] args)
public static void main(String[] args) {
{ Test t1=new Test();
Test t1=new Test(); }
} }
}
Note :-
1. Inside the constructor if we are providing super and this key words at that situation the
compiler will place the zero argument “ super() ; ” keyword at first line of the constructors.
2. If we are declaring any constructor calling then compiler wont generate any type
of keywords.
89 | P a g e
Core Java
Parent class default constructor will be Parent class userdefined constructor will be
executed and in the child constructor the super executed and in the child class the super
keyword is provided by compiler keyword is provided by user.
class Parent class Parent
{ {
}; Parent()
class Child extends Parent {
{ System.out.println(“”);
Child() }
{ };
//super(); compiler provided class Child extends Parent
System.out.println("child class 0 arg cons"); {
} Child()
public static void main(String... ) {
{ super();
Child c=new Child(); System.out.println("child class 0 arg cons");
} }
}; public static void main(String... )
{
Child c=new Child();
}
};
90 | P a g e
Core Java
Main Method:-
Public static void main(String[] args)
Public:- To provide access permission to the jvm declare main is publc.
Static :- To provide direct access permission to the jvm declare main is static(with out
creation of object able to access main method)
Void:- don’t return any values to the JVM.
String[] args:- used to take command line arguments(the arguments passed from command
prompt)
→
String-----represents possible to take any type of argument.
→
[ ]--------- represent possible to take any number of arguments.
Modifications on main():-
1) instead of : public static
Possible to take : static public
2) the fallowing declarations are
valied string[] args
String args[]
String []args
3) instead of : args
possible to take : any variable name (a,b,c,--------Java etc)
4) insted of : String[] args
possible to take : String… args(only three dots represent variable argument )
5) the applicable modifiers are
a. public
b. static
c. final
d. strictfp
e. synchronized
91 | P a g e
Core Java
Ex 1:-
class Test
{
final strictfp synchronized static public void main(String... )
{
System.out.println("hello sir");
}
};
Ex 2:-class
Test1
{
final strictfp synchronized static public void main(String... )
{
System.out.println("Test-1");
}
};
class Test2
{
final strictfp synchronized static public void main(String... )
{
System.out.println("Test-2");
}
};
class Test3
{
final strictfp synchronized static public void main(String... ) {
System.out.println("Test-3");
}
};
Ex 3:-
class Parent
{
public static void main(String[] args)
{
System.out.println("parent class"); class Parent
} {
}; public static void main(String[] args)
class Child extends Parent {
{ System.out.println("parent class");
public static void main(String[] args) }
{ };
System.out.println("child class"); class Child extends Parent
} {
}; };
Compilation :- javac Test.java Compilation :- javac Test.java
Execution:- java Parent java Child Execution:- java Parent java Child
Parent class child class Parent class parent class
92 | P a g e
Core Java
Strictfp:-
• Strictfp is a modifier applicable for classes and methods.
• If a method is declared as strictfp all floating point calculations in that method will follow
IEEE754 standard. So that we will get platform independent results.
• If a class is declared as stictfp then every concrete method in that class will follow IEEE754
standard so we will get platform independent results.
Ex 1 :-in the main() method the floating point calculations are fallows IEEE754
format. class Test
{
public static strictfp void main(String[] args)
{
System..out.println("main method fallows IEEE754 standrerd");
}
};
Ex 2:- The main() and m1() methods the floating point calculations are fallows IEEE754 format.
strictfp class Test
{
void m1()
{
System.out.println("m1 fallows floating point calculations IEEE754 format");
}
public static void main(String[] args)
{
System..out.println("main method fallows IEEE754 format");
}
};
Native:-
• Native is the modifier only for methods but not for variables and classes.
• The native methods are implemented in some other languages like C and C++ hence
native methods also known as “foreign method”.
• For native methods implementation is always available in other languages and we are not
responsible to provide implementation hence native method declaration should
compulsory ends with “;”.
Ex: - public native String intern(); Public
static native void yield(); Public
static native void sleep(long);
93 | P a g e
Core Java
Syntax:-(only 3 dots)
Void m1(int… a)
The above m1() is allows any nuber of parameters.(0 or 1 or 2 or 3………..)
94 | P a g e
Core Java
95 | P a g e
Core Java
System.out.println(d);
System.out.println(ch);
for (String str1:str)
{
System.out.println(str1);
}
}
public static void main(String... args)
{
Test t=new Test();
t.m1(10,20.5,'s');
t.m1(10,20.5,'s',"aaaa");
t.m1(10,20.5,'s',"aaaa","bbb");
}
};
Ex:- inside the java methods if we are declaring normal argument and variable argument at that
situation the variable argument must be last parameter otherwise the compiler will raise
compilation error.
Getting Compilation
Error Ex:-
class Test
{
void m1(int... a,String str)
{
System.out.println(" "); for
(int a1:a)
{
System.out.println(a1);
}
}
public static void main(String[] args)
{
Test t=new Test();
t.m1(10,20,"anu");
t.m1(10,20,30,40,"hello");
}
}
96 | P a g e
Core Java
System.out.println(str1); System.out.println(str1);
} }
} }
public static void main(String[] args) public static void main(String[] args)
{ {
Test t=new Test(); Test t=new Test();
t.m1(10,20,30); t.m1(" t.m1(10,20,30); t.m1("
","venu"); ","venu");
} t.m1();//compilation error ambiguous
} }
}
Instance Blocks:-
1) The instance blocks are executed irrespective of any condition.
2) The instance blocks and instance variables are executed before constructor execution. If you are
giving a chance to the constructors then only instance blocks are executed.
3) In the class it is possible to take the any number of instance blocks. the execution order is top
to bottom.
4) Instance blocks are executed based on the object creation. If we are creating ten objects
ten times instance blocks will be executed.
5) If the source file contains inheritance concept at that situation first parent class instance block
will be executed then child class instance blocks will be executed.
Ex 1:-
class Test
{
{
System.out.println("instance block 1");
}
{
System.out.println("instance block 2");
}
public static void main(String[] args)
{
97 | P a g e
Core Java
98 | P a g e
Core Java
Ex 1:-class
Test1
{
static
{
System.out.println("venu");
System.out.println("venu");
System.out.println("venu");
System.exit(0);
}
}
Ex 2:-class
Test1
{
static
{
System.out.pritnln("Java");
System.exit(0);
}
static
{
System.out.println("venu");
System.out.println("venu");
System.out.println("venu");
}
}
Ex:- write a program demonstrates the instance blocks and static blocks in the parent and child
class relation.
class Test1
{
static
{
System.out.println(" parent class static block");
}
{
System.out.println("parent class instance block");
}
};
class Test extends Test1
{
static
{
System.out.println("child calss static block");
}
{
99 | P a g e
Core Java
Output:-
Parent class static block
Child class static block
parent class instance block
child class instance block 1
child class instance block 2
Ex:- (variables,methods,constructors,instanceBlocks,staticBlocks )
class Test
{
//instance variables
int a=10;
int b;
//static variables
static int i=100;
static int j;
//instance
methods void m1()
{
System.out.println("m1-instance method");
}
void m2(int i,char ch,String str)
{
System.out.println(i);
System.out.println(ch);
System.out.println(str);
}
100 | P a g e
Core Java
//static methods
static void m3(int i,int j)
{
System.out.println(i);
System.out.println(j);
}
static void m4(String str,char ch)
{
System.out.println(str);
System.out.println(ch);
}
//constructors
Test()
{
//instance blocks
{
System.out.println("instance block-1");
}
System.out.println("instance block-2");
}
//static block
static
{
System.out.println("venu");
System.out.println("venu");
System.out.println("venu");
}
static
{
System.out.println("software");
System.out.println("software");
System.out.println("software");
}
public static void main(String[] args)
101 | P a g e
Core Java
{
Test t=new Test();
Test t1=new Test(10,20);
t.m1();
t.m2(10,'r',"Java");
m3(100,200);
m4("Java",'d');
System.out.println(t.a);
System.out.println(t.b);
System.out.println(i);
System.out.println(j);
}
};
Ex:-(variables scope)
class Test
{
static int a=100; //static variable
int b; //instance variable
{
b=200; //initialization block
int c=300; //local variable
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
Test()
{
int d=400; //local variables
System.out.println(d);
}
void m1()
{
int e=500; //local variables
System.out.println(e);
for (int i=0;i<10;i++) //localvariables
{
System.out.println(i);
}
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
}
}
Scopes of the variables:-
1. Static variable have the longest scope they are created when the class is loaded and they are survive
as long as the class is saty in the JVM(java virtual machine)
102 | P a g e
Core Java
2. Instance variables are next , they are created when a new object is created they are saty as long as
object is removed.
3. The local variables next they are stored in the stack the scope of the local variables are up to
the particular method or constructor of block.
4. Block level variables are available as long as block is executed.
Dynamic input:-
The input given to the java application at the time of execution(runtime) is called Dynamic input.
In java technology we can give the dynamic input in three ways.
1) By using BufferedReader class present in the java.io package(1.2 version)
2) By using Scanner class present in the java.util package(5.0 version)
3) By using Console class present in the java.io package(6.0 version)
103 | P a g e
Core Java
104 | P a g e
Core Java
int eid;
double esal;
int eage; vid
details()
{ Scanner s=new Scanner(System.in);
System.out.println("enter emp
name"); String ename=s.next();
this.ename=ename;
System.out.println("enter emp id"); int
eid=s.nextInt();
this.eid=eid;
System.out.println("enter emp sal");
double esal=s.nextDouble();
this.esal=esal;
System.out.println("enter age");
int eage=s.nextInt();
this.eage=eage;
}
void display()
{
System.out.println("************emp details***********");
System.out.println(ename);
System.out.println(eid);
System.out.println(esal);
System.out.println(eage);
}
void status()
{
if (eage>40)
{
System.out.println("not elgible");
}
else
{
System.out.println("elgible");
}
}
public final strictfp synchronized static void main(String... ) {
Test t=new Test();
t.details();
t.display();
t.status();
}
};
105 | P a g e
Core Java
Interfaces
1. Interface is also one of the type of class it contains only abstract methods.
2. For the interfaces also .class files will be generated.
3. Each and every interface by default abstract hence it is not possible to create an object.
4. Interfaces not alternative for abstract class it is extension for abstract classes.
5. 100 % pure abstract class is called interface.
6. The Interface contains only abstract methods means unimplemented methods.
7. Interfaces giving the information about the functionalities it are not giving the information
about internal implementation.
8. To provide implementation for abstract methods we have to take separate class that class we
can called it as implementation class for that interface.
9. Interface can be implemented by using implements keyword.
10. For the interfaces also the inheritance concept is applicable.
Syntax:-
Interface interface-name
Ex:- interface it1
Note: -
if we are declaring or not By default interface methods are public abstract
Ex 1:-
Interface it1
{
Void m1();
Void m2();
Void m3();
}
Class Test implements it1
{
Public void m1()
{
System.out.println(“m1-method implementation ”);
}
Public void m2()
{
System.out.println(“m2-method implementation”);
}
Public void m3()
{
System.out.println(“m3 –method implementation”);
106 | P a g e
Core Java
}
Public static void main(String[] args)
{
Test t=new Test();
t.m1();
t.m2();
t.m3();
}
}
Ex 2:-
Interface it1
{
Void m1();
Void m2();
Void m3();
}
Abstract Class ImplClass implements it1
{
Public void m1() partially implemented class
{ so we have to declare abstract
System.out.println(“m1-method implementation ”);
}
}
Class Test extends ImplClass
{
Public void m2()
{
System.out.println (“m2-method implementation”);
} fully implemented class
Public void m3() so we have to create
{ obj then we can access.
System.out.println (“m3 –method implementation”);
}
Public static void main(String[] args)
{
Test t=new Test();
t.m1();
t.m2();
t.m3();
}
Note:-
107 | P a g e
Core Java
By inheritance in the Test contains abstract methods like m2() & m3() hence we have to declare
that class as a abstract modifier.
We can take any number of classes but finally we have to provide implementation for the
each and every method of interface.
Ex:-
Without inheritance With inheritance
Interface it1 interface it1
{ {
Void m1(); Contains 3 methods void m1();
Void m2(); void m2(); Contains 3
Void m3(); void m3(); Methods
} }
Interface it2 interface it2 extends it2
{ {
Void m4(); contains 2 methods void m4(); Contains 5
Void m4(); void m5(); Methods
} }
Ex1:-
Interface it1
{
Void m1();
Void m2();
Void m3();
}
Interface it2 extends it1
{
Void m4();
Void m5();
}
Class Test implements it1 class Test implements it2 class Test implements it1,it2
{ { {
Here we have to provide here we have to provide here we have to provide
Three methods five methods five methods
Implementation implementation implementation
m1 & m2 & m3 m1 & m2 & m3& m4 & m5 m1 & m2 & m3 & m4 & m5
} } }
108 | P a g e
Core Java
Nested interfaces:-
Ex:-an interface can be declare inside the class is called nested interface.
class Test1
{
interface it1
{
void add();
}
};
class Test2 implements Test1.it1
{
public void add()
{
System.out.println("add method");
}
public static void main(String[] args)
{
Test2 t=new Test2();
t.add();
}
};
Ex:-an interface can be declare inside the another interface is called nested
interface. interface it2
{
interface it1
{
void m1();
}
};
class Test2 implements it2.it1
{
public void m1()
{
System.out.println("m1 method");
}
public static void main(String[] args)
{
Test2 t=new Test2();
t.m1();
}
};
Note:-
109 | P a g e
Core Java
Adaptor class:-
It is a intermefdiate class between the interface and user defined class. And it contains empty
implementation of interface methods.
interface it interface it
{ {
void m1(); void m1();
void m2(); void m2();
; ;
; ;
void m100() void m100()
} }
Class Test implements it class Adaptor implements it
{ {
Must provide implementation of 100 methods void m1(){}
otherwise compiler raise compilation error void m2(){}
} ;
;
void m100(){}
};
class Test implements it
{
must provide the 100 methods implementation
};
class Test extends Adaptor
{
provide the implementation of required
methods.
};
110 | P a g e
Core Java
Ex:-
interface it1
{
void m1();
void m2();
}
class X implements it1
{
public void m1(){}
public void m2(){}
};
class Test1 implements it1
{
public void m1()
{
System.out.println("m1 method");
} class Test2 extends X
public void m2() {
{ public void m1()
System.out.println("m2 method"); {
} System.out.println("adaptor m1
public static void main(String[] args) method");
{ }
Test1 t=new Test1(); public static void main(String... arhs)
t.m1(); {
t.m2(); Test2 t=new Test2();
} t.m1();
}; }};
111 | P a g e
Core Java
Packages
Information regarding packages:-
Syntax:-
Package package_name;
Ex:- package com.dss;
Predefined packages:-
The java predefined packages are introduced by sun peoples these packagescontains
predefined classes and interfaces.
Ex:- java.lang
Java.io
Java.awt
Java.util
Java.net………………………..etc
Java.lang:-
The most commonly required classes and interfaces to write a sample program is
encapsulated into a separate package is called java.lang package.
` Ex:- String(class)
StringBuffer(class)
Object(class)
Runnable(interface)
Cloneable(nterface)
Note:-
the default package in the java programming is java.lang if we are importing or
not importing by default this package is available for our programs.
Java.io package:-
The classes which are used to perform the input output operations that are present in
the java.io packages.
Ex:- FileInputStream(class)
112 | P a g e
Core Java
FileOutputStream(class)
FileWriter(class)
FileReader(class)
Java.net package:-
The classes which are required for connection establishment in the network that classes
are present in the java.net package.
Ex:- Socket
ServerSocket
InetAddress
URL
Java.awt package:-
The classes which are used to prepare graphical user interface those classes are present in the
java.awt package.
Ex: Button(class)
Checkbox(class)
Choice(Class)
List(class)
1) The packages which are declared by the user are called user defined packages.
2) In the single source file it is possible to take the only one package. If we are trying to
take two packages at that situation the compiler raise a compilation error.
3) In the source file it is possible to take single package.
4) While taking package name we have to fallow some coding standreds.
Whenever we taking package name don’t take the names like pack1, pack2, sandhya, sri……… these are
not a proper coding formats.
Rules to fallow while taking package name:-(not mandatory but we have to fallow)
1) The package name is must reflect with your organization name. the name is reverse of the
organization domain name.
Domain name:- www.dss.com
Package name:- Package com.dss;
2) Whenever we are working in particular project(Bank) at that moment we have to take the
package name is as fallows.
Project name :- Bank
package :- Package com.dss.Bank;
3) The project contains the module (deposit) at that situation our package name should reflect
with the module name also.
113 | P a g e
Core Java
For example the source file contains the package structure is like this:-
Package com.dss.bank.deposit;
Module
Reverse of Project
keyword domain name name name
Note:-
If the source file contains the package statement then we have to compile that program with
the help of fallowing statements.
D:\>javac -d . Test.java
Com
|
|------dss
|
|-------bank
|
|----deposit
|
|--------(number of .classes will be generated )
|
Note :-
If it a predefined package or user defined package the packages contains number of classes.
Ex 1:-
114 | P a g e
Core Java
package com.dss.bank.deposit;
class Test
{
public static void main(String[] args)
{
System.out.println("package example program");
}
}
Com
|
|------dss
|
|-------bank
|
|----deposit
|
|--------Test.class
package com.dss.bank.deposit;
package com.dss.online. Core
Java; class Test
{
public static void main(String[] args)
{
System.out.println("package example program");
}
}
Reason:-
Inside the source file it is possible to take the single package not possible to take the multiple
packages.
Ex 2:-
package com.tcs.OnlineExam. Core
Java; class Test
{
public static void main(String[] args)
{
System.out.println("package example program");
}
115 | P a g e
Core Java
}
class A
{
}
class B
{
}
class C
{
}
Com
|
|------tcs
|
|-------OnlineExam
|
|---- Core Java
|
|--------Test.class
|--------A.class
|--------B.class
|--------C.class
Note:-
The package contains any number of .classes the .class files generation totally depends upon the
number of classes present on the source file.
Import session:-
The main purpose of the import session is to make available the java predefined support
into our program.
Ex 2:-
Import java.awt.*;
To make available all predefined class present in the awt package into our program. That
* represent all the classes present in the awt package.
116 | P a g e
Core Java
Ex 2:-
Import pack1.*;
By using above statement we are importing all the classes present in the pack1 into
our program. Here * represent the all the classes.
Note:-
If it is a predefined package or user defined package whenever we are using that
package classes into our program we must make available that package into our program with
the help of import statement.
Public:-
• This is the modifier applicable for classes, methods and variables (only for instance and static
variables but not for local variables).
• If a class is declared with public modifier then we can access that class from anywhere
(within the package and outside of the package).
• If we declare a member(variable) as a public then we can access that member from anywhere
but Corresponding class should be visible i.e., before checking member visibility we have to
check class visibility.
Ex:-
public class Test // public class can access anywhere
{
public int a=10; //public variable can access any where
public void m1() //public method can access any where
{
System.out.println("public method access in any package");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
System.out.println(t.a);
117 | P a g e
Core Java
}
};
Default:-
• This is the modifier applicable for classes, methods and variables (only for instance and static
variables but not for local variables).
• If a class is declared with <default> modifier then we can access that class only within
that current package but not from outside of the package.
• Default access also known as a package level access.
• The default modifier in the java language is default.
Ex:-class
Test
{
void m1()
{
System.out.println("m1-method");
}
void m2()
{
System.out.println("m2-method");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
t.m2();
}
}
Note :-
in the above program we are not providing any modifier for the methods and classes at that
situation the default modifier is available for methods and classes that is default modifier. Hence
we can access that methods and class with in the package.
Private:-
• private is a modifier applicable for methods and variables.
• If a member declared as private then we can access that member only from within the current
class.
• If a method declare as a private we can access that method only within the class. it is
not possible to call even in the child classes also.
class Test
{
private void m1()
{
System.out.println("we can access this method only with in this class");
}
public static void main(String[] args)
{
Test t=new Test();
118 | P a g e
Core Java
t.m1();
}
};
Protected :-
• If a member declared as protected then we can access that member with in the
current package anywhere but outside package only in child classes.
• But from outside package we can access protected members only by using child reference. If
we try to use parent reference we will get compile time error.
• Members can be accesses only from instance area directly i.e., from static area we can’t access
instance members directly otherwise we will get compile time error.
119 | P a g e
Core Java
Static import:-
1) this concept is introduced in 1.5 version.
2) if we are using the static import it is possible to call static variables and static methods directly to
the java programming.
Ex:-without static mport Ex :- with static import
import java.lang.*; import static java.lang.System.*;
class Test class Test
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
System.out.println("Hello out.println(" world");
World!"); }
} };
}
Ex:-package com.dss; Ex:-
public class Test package com.tcs;
{ import static com.dss.Test.*;
public static int a=100; class Test1
public static void m1() {
{ public static void main(String[] args)
System.out.println("m1 method"); {
} System.out.println(a);
}; m1();
}
}
Source file Declaration rules:-
The source file contains the fallowing elements
→ → →
1) Package declaration--- optional----- at most one package(0 or 1)-- 1st statement
→ → →
2) Import declaration----- optional----- any number of imports-------- 2nd statement
→ → →
3) Class declaration-------- optional----- any number of classes--------- 3rd statement
→ → → rd
4) Interface declaration--- optional---- any number of interfaces----- 3 statement
→ → →
5) Comments declaration- optional---- any number of comments---- 3rd statement
a. The package must be the first statement of the source file and it is possible to declare at most
one package within the source file .
b. The import session must be in between the package and class statement. And it is possible to
declare any number of import statements within the source file.
c. The class session is must be after package and import statement and it is possible to declare any
number of class within the source file.
i. It is possible to declare at most one public class.
ii. It is possible to declare any number of non-public classes.
d. The package and import statements are applicable for all the classes present in the source file.
e. It is possible to declare comments at beginning and ending of any line of declaration it is
possible to declare any number of comments within the source file.
120 | P a g e
Core Java
121 | P a g e
Core Java
Java.lang.String
String:-
Ex:-class
Test
{
public static void main(String[] args)
{
String str=" ";
System.out.println(str);
122 | P a g e
Core Java
char[] ch={'r','a','t','a','n'};
String str3=new String(ch);
System.out.println(str3);
char[] ch1={'a','r','a','t','a','n','a'};
String str4=new String(ch1,1,5);
System.out.println(str4);
byte[] b={65,66,67,68,69,70};
String str5=new String(b);
System.out.println(str5);
byte[] b1={65,66,67,68,69,70};
String str6=new String(b1,2,4);
System.out.println(str6);
}
}
Reference variable
String object
Str1
123 | P a g e
Core Java
Str1
Str2
Str
soft
Str1
Str1 soft
Good points:-
Without using new operator it is possible to create a object for the classess. such type of
classes objects we can called it as first-class objects .
Ex:-String
124 | P a g e
Core Java
String str3=”venu”;
Whenever we create string literal first jvm goes to SCP(String constant pool ) and check if the
string is already present in the pool or not. If it is available it returns the existing reference from the
pool , if it is not available a new String object is created
venu
Java
Str3
Str2
String constant pool
Str1
Stack
HEAP AREA
Good points :-
Each and every object is stored in heap area. The heap area is divided into different pools.
1) Referenced pool
In the referenced pool all the objects references maintained.
2) Object pool
In this pool all the objects are located here by using new operator
3) Thread pool
In java we are able to create a thread object which not contains any
lock 4) String pool
125 | P a g e
Core Java
Without using new operator we are creating objects such type of the objects are
located here(ex:-String object).
126 | P a g e
Core Java
System.out.println(str2==str4);
System.out.println(str5==str4);
}
}
class Test
{
public static void main(String[] args)
{
String str1=new String(" ");
String str2=new String("venu");
String str3=new String(" ");
String str4=new String("Java");
System.out.println(str1.compareTo(str2));//+ve
System.out.println(str1.compareTo(str3));//0
System.out.println(str1.compareTo(str4));// -ve
System.out.println(str4.compareTo(str2));//+ve
System.out.println(str1.compareToIgnoreCase(" "));//0
System.out.println("Javaech".compareTo(str2));//+ve
}
}
String class
Methods:-toString:-
Class Object
{
Public string toString()
{
---------
}
}
127 | P a g e
Core Java
class Object
{
public String toString()
{
//it is returns getClass@hashCode
}
};
class String extends Object
{
public String toString()
{
// it is returns the String content overriding toString()
}
};
If we are printing the reference variable the string representation of object will be printed.
The reference variable internally calling the toString() method automatically. In the below case
Object class toString() got executed.
class Student
{
String sname;
int rollno;
Student(String sname,int rollno)
{
this.sname=sname;
this.rollno=rollno;
}
public static void main(String[] args)
{
Student s=new Student("Java",100); System.out.println(s);//equal to
//System.out.println(s.toString());
}
};
class Test
{
public static void main(String[] args)
{
String str1=" ";
str1.concat("soft");
System.out.println(str1);//
String str2=" ";
System.out.println(str1.equals(str2));//String class .equals()
128 | P a g e
Core Java
String str="Javaech";
System.out.println(str);
System.out.println(str.toString());//String class toString()
129 | P a g e
Core Java
}
};
if both operands are numbers the + is acting as a addition of the two numbers .
if at least one operand is String then + is acting as a concatenation of the String.
Ex:-
class Test
{
public static void main(String[] args)
{
String str1="venu";
String str2=40+50+str1+" "+60+70;
System.out.println(str2);
}
}
Concat():-
Concat() method present in the String class and it is used to combine the two String.
Ex :-class
Test
{
public static void main(String[] args)
{
String age="22";
String s="he is "+age+" years old.";
System.out.println(s);
String str1="venu";
String str2=" ";
String str3=str1.concat(str2);
System.out.println(str3);
int a=22;
130 | P a g e
Core Java
131 | P a g e
Core Java
}
Split(String):-
xEx: class
Test
{
public static void main(String... )
{
String str1=" ";
String str2="venu";
String str3=" ";
String str4="Venu";
String str5="Java";
System.out.println(str1.compareTo(str2));//14
System.out.println(str1.compareTo(str4));//46
System.out.println(str2.compareTo(str4));//32
System.out.println(str4.compareTo(str2));//-32
System.out.println(str1.compareTo(str3));//0
System.out.println(str1.compareTo(str5));//-13
System.out.println(str1.compareToIgnoreCase(str5));//-13
System.out.println(str2.compareToIgnoreCase(str4));//0
System.out.println(str1.compareToIgnoreCase(str3));//0
132 | P a g e
Core Java
}
};
a) String class equals() method is used for content comparison . It returns true of false value after
comparison.
b) The commonly used method to perform comparison.
c) We are comparing total content called deep comparison.
d) At the time of comparison the fallowing possibilities are occur.
→
True---------- two Strings are same
→
False--------- two strings are not equals
Implementation:-
class Object
{
.equals()
{
//used for reference comparison
}
};
class String extends Object
{
.equals()
{
//used for content comparison String persons are overriding
} for content comparison
};
class StringBuffer extends Object
{
.equals()
{
//used for reference comparison not overriding hence .euqals() used for
} reference comparison
};
Ex:-
class Test
{
public static void main(String[] args)
{
Test t1=new Test();
Test t2=new Test();
Test t3=t2;
System.out.println(t1.equals(t2));//false
System.out.println(t1.equals(t3));//false
System.out.println(t3.equals(t2));//true
133 | P a g e
Core Java
== operator:-
It is used for reference comparison. Hence we can call shallow
comparison. Ex:-
class Test
{
public static void main(String[] args)
{
String s1=new String("Java");
String s2=new String("duragsoft");
String s3=new String("Java");
String s4=s1;
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1==s3);
System.out.println(s1==s4);
}
};
Ex:-
class Test
{
public static void main(String[] args)
134 | P a g e
Core Java
{
String str1=new String("venu");
String str2=new String("venu");
System.out.println(str1==str2);//false
String str3="venu";
String str4="venu";
System.out.println(str3==str4);//false
}
}
Ex :-class
Test
{
Test(int i)
{
System.out.println("0 arg cons");
System.out.println(i);
}
public static void main(String[] args)
{
Test t1=new Test(10);
Test t2=new Test(10);
Test t3=new Test(10);
Test t4=t1;
System.out.println(t1==t2);//false
System.out.println(t2==t3);//false
System.out.println(t3==t1);//false
System.out.println(t1==t4);//true
}
}
135 | P a g e
Core Java
By using this method we are converting String into the byte[] .the main aim of the converting
String into the byte[] format is some of the networks are supporting to transfer the data in the form of
bytes only at that situation is conversion is mandatory.
Ex:-
class Test
{public static void main(String[] args)
{String str="Java";
byte[] b=str.getBytes();
System.out.println(b);
String str1=new String(b);
System.out.println(str1);
}}
trim():-
1) trim() is used to remove the trail and leading spaces
2) this method always used for memory saver
Ex:-class
Test
{
public static void main(String[] args)
{
String str=" ";
System.out.println(str.length());//7
System.out.println(str.trim());//
System.out.println(str.trim().length());//5
System.out.println(" ".trim());//
}
}
replace(char oldchar,char newchar) replace(Stirng oldString,String newString):-
by using above method we are replacing the particular character of the String. And
particular portion of the string.
Ex:-class
Test
{
public static void main(String[] args)
{
String str="Java how r u";
System.out.println(str.replace('a','A'));//Java
System.out.println(str.replace("how","who"));//Java how r u
}
}
Ex :-class
Test
{
public static void main(String[] args)
{
String str1="venu software solutions";
136 | P a g e
Core Java
System.out.println(str1);
System.out.println(str1.replace("software","hardware"));// Venu hardware solutions
}
}
toUpperCase() and toLowerCase():-
The above methods are used to convert the lower case to the uppercase and uppercase to lowercase
character.
Ex:-class
Test
{
public static void main(String[] args)
{
String str=" HOW R U";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
System.out.println(" ".toLowerCase());
System.out.println("soft".toUpperCase());
}
}
Java.lang.String.endsWith() and Java.lang.String.startsWith():-
endsWith() is used to find out if the string is ending with particular character/string or not.
startsWith() used to find out the particular String starting with particular character/string or
not. class Test
{
public static void main(String[] args)
{
String str="Java how r u";
System.out.println(str.endsWith("u"));//true
System.out.println(str.endsWith("how"));//false
System.out.println(str.startsWith("d"));//false
System.out.println(str.startsWith("r"));//true
}
}
substring(int startingposition) & substring(int startingposition,int endingposition):-
By using above method we are getting substring from the whole
String. In the above methods
starting position parameter value is including
ending position parameter value is excluding
class Test
{
public static void main(String[] args)
{
String str=" how r u";
System.out.println(str.substring(2));//tan how r u
System.out.println(str.substring(1,7));//atan h
System.out.println(" soft".substring(2,5));//tan
}
}
137 | P a g e
Core Java
StringBuffer:-
1) String Buffer is a class present in the java.lang package.
2) StringBuffer is a final class so it can’t be inharited.
3) StringBuffer is a mutable class so it is possible to change the content in the same location.
4) StringBuffer .equals() method is used for reference comparision.
Constructors:-
1) StringBuffer sb=new StringBuffer();
2) StringBuffer sb1=new StringBuffer(int capacity);
3) StringBuffer sb2=new StringBuffer(String str);
Ex:-class
Test
{
public static void main(String[] args)
{
StringBuffer sb=new StringBuffer();
System.out.println(sb.capacity());//default capacity 16
StinrgBuffer is mutable:-
Once we are creating a StringBuffer Object it is possible to the modification on existing object is
called mutability nature.
Ex:-class
Test
{
public static void main(String[] args)
{
StringBuffer s1=new StringBuffer("Java");
s1.append("addanki");//mutability
System.out.println(s1);
StringBuffer s2=new StringBuffer("Javaech");
StringBuffer s3=s1;
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1==s2);
System.out.println(s1==s3);
}
};
class Test
{
138 | P a g e
Core Java
139 | P a g e
Core Java
}
};
Insert():-
By using above method we are able to insert the string any location of the existing string.
Ex:-class
Test
{
public static void main(String[] args)
{
StringBuffer sb=new StringBuffer(" ");
sb.insert(0,"hi ");
System.out.println(sb);
}
}
indexOf() and lastIndexOf():-
Ex:-
class Test
{
public static void main(String[] args)
{
StringBuffer sb=new StringBuffer("hi hi"); int
i;
i=sb.indexOf("hi");
System.out.println(i);
i=sb.lastIndexOf("hi");
System.out.println(i);
}
}
replace():-
class Test
{
public static void main(String[] args)
{
StringBuffer sb=new StringBuffer("hi hi");
sb.replace(0,2,"oy");
System.out.println("after replaceing the string:-"+sb);
}
}
class Test
{
public static void main(String[] args)
{
StringBuffer sb1=new StringBuffer(" soft");
StringBuffer sb2=new StringBuffer(" ");
StringBuffer sb3=new StringBuffer(" ");
StringBuffer sb4=sb3;
System.out.println(sb1.equals(sb2));//false
System.out.println(sb1.equals(sb3));//flase
140 | P a g e
Core Java
System.out.println(sb1.equals(sb4));//false
System.out.println(sb2.equals(sb3));//false
System.out.println(sb3.equals(sb4));//true
System.out.println(sb1==sb2);//flase
System.out.println(sb3==sb4);//true
System.out.println(sb2==sb3);//false
}
}
Java.lang.StringBuilder:-
1) Introduced in jdk1.5 version.
2) StringBuilder is identical to StringBuffer except for one important difference.
3) Every method present in the StringBuilder is not Synchronized means that is not thread safe.
4) multiple threads are allow to operate on StringBuilder methods hence the performance of
the application is increased.
Cloneable:-
1) The process of creating exactly duplicate object is called cloning.
2) We can create a duplicate object only for the cloneable classes .
3) We can create cloned object by using clone()
4) The main purpose of the cloning is to maintain
backup. class Test implements Cloneable
{
int a=10;
int b=20;
public static void main(String[] args)throws CloneNotSupportedException
{
Test t1=new Test(); Test
t2=(Test)t1.clone();
t1.a=100;
t1.b=200;
System.out.println(t1.a+"----"+t1.b);
System.out.println(t2.a+"----"+t2.b);
}};
141 | P a g e
Core Java
Wrapper classes
1) To represent primitive data types as a Object form we required some classes these classes are
called wrapper classes.
2) All wrapper classes present in the java.lang package.
3) Int,byte…. Acts as a primitives we can make the primitives into the objects is called wrapper
calless the the wrapper classes are Integer,Short-----.
4) We are having 8 primitive data types hence sun peoples are providing 8 wrapper classes.
142 | P a g e
Core Java
Object
Maximum wrapper class taking String as a argument at that situation frequently we are getting
NumberFormatException.
Ex:-class
Test
{
public static void main(String[] args)
{
float f=10.7f;
Float f1=new Float(f);
System.out.println(f1);
143 | P a g e
Core Java
Ex :-class
Test
{
public static void main(String[] args)
{
//by using constructor converting String/primitive to wrapper object
Integer i=new Integer(10);
System.out.println(i);
//by using valueOf() converting String/primitive to the wrapper
object Boolean b=Boolean.valueOf("true");
System.out.println(b);
}
}
XxxValue():-
by using XXXValue() method we are converting wrapper objects into the corresponding primitive
values.
Ex :-class
Test
{
public static void main(String[] args)
{
Integer i=Integer.valueOf(150); System.out.println("byte
value :"+i.byteValue());//-106 System.out.println("short
value :"+i.shortValue());//150 System.out.println("int
value :"+i.intValue());//150 System.out.println("long
value :"+i.longValue());//150 System.out.println("float
value :"+i.floatValue());//150.0
144 | P a g e
Core Java
ex :-class
Test
{
public static void main(String[] args)
{
String str1="10";
String str2="20";
System.out.println(str1+str2);//1020
int a=Integer.parseInt(str1);
float f=Float.parseFloat(str2);
System.out.println(a+f);//30.0
}
}
toString():-
class Object
{
Public string toString()
{
return getClass@hashcode;
}
};
class WrapperClasses extends Object
{
//overriding the toString()
Public string toString()
{
return the corresponding value
}
};
Ex :-
class Test
{
145 | P a g e
Core Java
The above statement does not work on the 1.4 and below versions. The auto conversion of the
primitive into the Wrapper object is called the autoboxing these conversions done by compiler at the
time of compilation.
Autounboxing:-
int a=new Integer(100);
System.out.println(a);
The auto conversion of the wrapper object to the primitive value is called autounboxing
and these conversions are done by compiler at the time of compilation.
Ex :-class
Test
{
static Integer i=10;//i is wrapper object
static int j;//j is primitive variable static
void print(int i)
{
j=i;
System.out.println(j);
}
public static void main(String[] args)
{
print(i);
System.out.println(j);
}
};
Automatic conversion of the primitive to wrapper and wrapper to the primitive:-
AutoBoxing
Primitive Wrapper object
Autounboxing
146 | P a g e
Core Java
1. Byte format
2. Character format
Stream/channel:-
It is acting as medium by using steam or channel we are able to send particular data from one
place to the another place.
Java.io.FileOutputStream:-
To write the data to the destination file we have to use the FileOutputStream.
To write the data to the destination file we have to use write() method.
147 | P a g e
Core Java
int c;
while ((c=fr.read())!=-1)
{
fw.write(c);
}
fr.close();
fw.close();
}
catch(IOException io)
{
System.out.println("getting IOException");
148 | P a g e
Core Java
}
}
}
import java.io.*;
class Test
{
static BufferedReader br;
static PrintWriter pw;
public static void main(String[] args)
{
try{
br=new BufferedReader(new FileReader("get.txt"));
pw=new PrintWriter(new FileWriter("set.txt"));
String line;
while ((line=br.readLine())!=null)
{
pw.println(line);
}
br.close();
pw.close();
}
catch(IOException io)
{
System.out.println("getting IOException");
}
}
}
Buffered Streams:-
Up to we are working with non buffered streams these are providing less performance because
these are interact with the hard disk, network.
Now we have to work with Buffered Streams
BufferedInputStream read the data from memory area known as Buffer.
149 | P a g e
Core Java
2. BufferedOutputStream
3. BufferedReader
4. BufferedWriter
Ex:-
import java.io.*;
class Test
{
static BufferedReader br;
static BufferedWriter bw;
public static void main(String[] args)
{
try{
br=new BufferedReader(new FileReader("Test1.java"));
bw=new BufferedWriter(new FileWriter("States.java"));
String str;
while ((str=br.readLine())!=null)
{
bw.write(str);
}
br.close();
bw.close();
}
catch(Exception e)
{
System.out.println("getting Exception");
}
}
}
Ex:-
import java.io.*;
class Test
{
static BufferedInputStream bis;
static BufferedOutputStream bos;
public static void main(String[] args)
{
try{
bis=new BufferedInputStream(new FileInputStream("abc.txt"));
bos=new BufferedOutputStream(new
FileOutputStream("xyz.txt")); int str;
while ((str=bis.read())!=-1)
{
bos.write(str);
}
bis.close();
150 | P a g e
Core Java
bos.close();
}
catch(Exception e)
{
System.out.println(e);
System.out.println("getting Exception");
}
}
}
Ex:-
import java.io.*;
class Test
{
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new FileReader("abc.txt"));
String str;
while ((str=br.readLine())!=null)
{
System.out.println(str);
}
}
}
Java.util.Scanner:-
By using Scanner class we are able to divide the String into the number of tokens.
To get the integer value from the keyboard-------:-s.nextInt()
To get the String value from the keyboard---------:-s.next()
To get the floating values from the keyboard------:-s.nextFloat ();
i mport java.util.*;
class Test
{
public static void main(String[] args)
{
while (true)
{
Scanner s=new Scanner(System.in);
System.out.println("enter emp
no"); int eno=s.nextInt();
151 | P a g e
Core Java
System.out.println("emp no----->"+eno);
System.out.println("emp name---->"+ename);
System.out.println("emp sal------>"+esal);
Note :-
hasNext() method return true if the Scanner has another token as its input the return type is
boolean. next() is return next complete token from the Scanner
Ex:-
import java.io.*;
import java.util.*;
class Test
{
public static void main(String[] args)
{
try{
Scanner s=new Scanner(new BufferedReader(new
FileReader("abc.txt"))); while (s.hasNext())
{
System.out.println(s.next());
}
}
catch(Exception e)
{
System.out.println(e);
System.out.println("getting Exception");
}
}
}
152 | P a g e
Core Java
Serialization:-
The process of saving an object to a file (or) the process of sending an object across the network is called
serialization.
But strictly speaking the process of converting the object from java supported form to the network
supported form of file supported form.
To do the serialization we required fallowing classes
1. FileOutputStream
2. ObjectOutputStream
Deserialization:-
The process of reading the object from file supported form or network supported form to the
java supported form is called deserialization.
We can achieve the deserialization by using fallowing classes.
1. FileInputStream
2. ObjectInputStream
Ex:-Student.java
import java.io.Serializable;
public class Student implements Serializable
{
int id; String
name; int
marks;
153 | P a g e
Core Java
class Deserialization
{
public static void main(String args[])throws Exception
{
//deserialization process
FileInputStream fis=new FileInputStream("abc.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Student s=(Student)ois.readObject();
• Transient modifier is the modifier applicable for only variables and we can’t apply for
methods and classes.
• At the time of serialization, if we don’t want to save the values of a particular variable to meet
security constraints then we should go for transient modifier.
• At the time of serialization JVM ignores the original value of transient variable and default
value will be serialized.
import java.io.*;
import java.io.Serializable;
class Student implements Serializable
{ transient int id=100;
transient String name="ravi";
}
class Serializable1
{ public static void main(String args[])throws Exception {
Student s1=new Student();
System.out.println("the stuent id is:"+s1.id);
System.out.println("the student name is:"+s1.name);
FileOutputStream fos=new FileOutputStream(" .txt",true);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(s1);
FileInputStream fis=new FileInputStream(" .txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Student s=(Student)ois.readObject();
System.out.println("the stuent id is:"+s.id);
System.out.println("the student name is:"+s.name);
}
}
154 | P a g e
Core Java
Exception Handling
Types of Exceptions:-
As per sun micro systems standards The Exceptions are divided into three types
1) Checked Exception
2) Unchecked Exception
3) Error
checkedException:-
The Exceptions which are checked by the compiler at compilation time for the proper execution
of the program at runtime is called CheckedExceptions.
Ex:- IOException,SQLException etc……….
155 | P a g e
Core Java
uncheckedException:-
The exceptions which are not checked by the compiler at compilation time is
called uncheckedException . These checking down at run time only.
Ex:- ArithmeticException,NullPointerException, etc……….
Error:-
Errors are caused by lack of system resources . these are non recoverable.
Ex:- StackOverFlowError,OutOfMemoryError,AssertionError etc…………
Goodpoint:-
The Exception whether it is checked or unchecked the Exceptions are occurred at runtime.
Exception:-
An exception is unwanted unexpected event these are caused by the programmer mistake.
Exceptions are recoverable.
Ex:- IOException,SQLExcetion,RuntimeExecption etc……………
156 | P a g e
Core Java
Error:-
Errors are caused by lack of system resources . these are non recoverable.
Ex:- StackOverFlowError,AssertionError etc…………
Object
Throwable
Exception Error
ArithmeticException
NullPointerException
ArrayIndexOutOfBounds
ClassCastException
NumberFormat
etc
Note:-
1) RuntimeException and its child classes and Error and its child classes are
Unchecked remaining all are checkedExceptions.
2) Root class for all Exception hierarchy is Throweable class.
1) try
2) catch
3) finally
4) throw
5) throws
Exception Handling:-
157 | P a g e
Core Java
Syntax:-
try
{
Code to run [break;]
}
Catch(ExceptionName reference_variable)
{
Code to run if an exception is raised
}
Output:- venu
Software
Exception in Thread “main” :java.lang.ArithmeticException: / by zero
Note:- if we are not using try-catch it is always abnormal termination if an Exception raised.
158 | P a g e
Core Java
1) If we are taking try-catch the program goes to normal termination. Because the risky code we
are taking inside the try block and handling code we are taking inside the catch block.
2) If the exception is raised in the try block the corresponding catch block is executed.
3) If the corresponding catch block is not there program goes to abnormal termination.
class Test
{
public static void main(String[] args)
{
System.out.println("venu");
System.out.println("software")
;try
{
System.out.println(10/0);
}
catch (ArithmeticException e)
{
System.out.println("you are getting AE "+e);
}
System.out.println("solutions");
}
}
Output:- venu
Software
You are getting AE: java.lang.ArithmeticException: / by zero
Solutions.
Ex 1:-
Exception raised in try block the JVM will search for corresponding catch block if the catch
block is matched, corresponding catch block will be executed and rest of the code is executed normally.
class Test
{
public static void main(String[] args)
{
System.out.println("program starts");
try
{
int[] a={10,20,30};
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
}
catch(ArrayIndexOutOfBoundsException ae)
{
System.out.println("we are getting exception");
159 | P a g e
Core Java
}
System.out.println("rest of the code");
}
}
Ex 2:-
Exception raised in try block the JVM will search for corresponding catch block if the catch
block is matched, corresponding catch block will be executed and rest of the code is executed normally.
If the catch block is not matched the program is terminated abnormally.
class Test
{
public static void main(String[] args)
{
System.out.println("program starts");
try
{
int[] a={10,20,30};
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
}
catch(ArithmeticException ae)
{
System.out.println("we are getting exception");
}
System.out.println("rest of the code");
}
}
Ex 3:- if there is no exception in try block the catch blocks won’t be executed.
Class Test
{
public static void main(String[] args)
{
System.out.println("program starts");
try
{
System.out.println(" sir");
System.out.println("how r u");
}
catch(ArithmeticException ae)
{
System.out.println("we are getting exception");
}
System.out.println("rest of the code");
}
}
160 | P a g e
Core Java
Ex 5:-
In between try and catch independent statements are not allowed. If we are
providing independent statements the compiler will raise compilation error.
class Test
{
public static void main(String[] args)
{
System.out.println("program starts");
try
{
int a=10/0;
}
System.out.println(“in between try and catch”);
catch(ArithmeticException e)
{
int a=10/5;
System.out.println(a);
}
System.out.println("rest of the code is avilable");
}
}
161 | P a g e
Core Java
Ex 6:-
1) Inside the try block once we are getting exception the JVM search for the corresponding catch
block .
2) If the catch block is matched then it will executed that catch block the program is
terminated normally the control never goes try block once again.
3) Once the control is out of the try block the control never entered into try block once again .
Ex 7:- The way of handling the exception is varied from exception to the exception so it is
recommended to provide try with number of catch blocks.
import java.util.*;
class Test
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("provide the division
value"); int n=s.nextInt();
try
{
System.out.println(10/n);
String str=null;
System.out.println("u r name is :"+str);
System.out.println("u r name length is--->"+str.length());
}
catch (ArithmeticException ae)
162 | P a g e
JavaHome solutions Mr.
{
System.out.println("good boy zero not allowed geting Exception"+ae);
}
catch (NullPointerException ne)
{
System.out.println("good girl getting Exception"+ne);
}
System.out.println("rest of the code");
}
}
Ex 8:- By using root class (Exception) we are able to hold any type of exceptions.
import java.util.*;
class Test
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("provide the division
value"); int n=s.nextInt();
try
{
System.out.println(10/n);
String str=null;
System.out.println("u r name is :"+str);
System.out.println("u r name length is--->"+str.length());
}
catch (Exception e)
{
System.out.println("getting Exception"+e);
}
System.out.println("rest of the code");
}
}
Ex 9:-in java class if we are declaring multiple catch blocks at that situation the catch block order should
be child to parent shouldn’t be parent to the child.
163 | P a g e
JavaHome solutions Mr.
164 | P a g e
JavaHome solutions Mr.
165 | P a g e
JavaHome solutions Mr.
166 | P a g e
JavaHome solutions Mr.
167 | P a g e
JavaHome solutions Mr.
Ex:-
import java.util.*;
class Test
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("provide the division
value"); int n=s.nextInt();
try
{
System.out.println("********good boy check the
output********"); System.out.println(10/n);
String str=null;
System.out.println("u r name is :"+str);
System.out.println("u r name length is--->"+str.length());
}
catch (ArithmeticException ae)
{
System.out.println("good boy zero not allowed geting Exception"+ae);
}
catch (NullPointerException ne)
{
System.out.println("good girl getting Exception"+ne);
}
System.out.println("rest of the code");
}
}
168 | P a g e
JavaHome solutions Mr.
4)nested try-catch:-
try
{
try
{
}
catch ()
{
}
}
catch ()
{
}
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
try
{
System.out.println("first try
block"); int a=10/0;
System.out.println(a);
}
catch (ArithmeticException ae)
{
System.out.println("first catch block"+ae);
}
try
{
System.out.println("second try block");
int[] a={10,20,30};
System.out.println(a[5]);
}
catch (ArrayIndexOutOfBoundsException aaa)
{
System.out.println("second catch block"+aaa);
}
}
catch (Exception e)
{
System.out.println("main catch"+e);
}
System.out.println("normal flow of execution");
}
}
169 | P a g e
JavaHome solutions Mr.
170 | P a g e
JavaHome solutions Mr.
statement 6
statement 7
}
}
catch ()
{
statement 8
statement 9
try
{
statement 10
statement 11
}
catch ()
{
statement 12
statement 13
}
}
statement 14
statement 15
case 1:-
if there is no Exception in the above example
1, 2, 3, 4, 5, 14, 15 Normal Termination
Case 2:-
if the exception is raised in statement 2
1 , Abnrmal Termination
Case 3:-
if the exception is raised in the statement 3 the corresponding catch block is matched.
1,2,8,9,10,11,14,15 normal termination
Case 4:-
if the exception is raise in the statement-4 the corresponding catch block is not matched and
outer catch block is not matched.
1,2,3 abnormal termination.
Case 5:-
If the exception is raised in the statement 5 and corresponding catch block is not matched and
outer catch block is matched.
1,2,3,4,8,9,10,11,14,15 normal termination
Case 6:-
If the exception is raised in the statement 5 and the corresponding catch block is not matched
and outer catch block is matched while executing outer catch inside the try block the the
exception is raised in the statement 10 and the corresponding catch is matched.
1,2,3,4,8,9,12,13,14,15 normal termination.
Case 7:-
If the exception raised in statement 14.
1,2,3,4,5 abnormal termination.
171 | P a g e
JavaHome solutions Mr.
Finally block:-
1) finally is a block it is always executed irrespective of try and catch.
2) Finally contains clean-up code.
3) It is not possible to write finally alone . we must take try-catch-finally otherwise take the try-
finally these two are the possibilities. If we are taking any other we are getting compilation error
saying finally without try block .
Syntax:-try
{
risky code;
}
catch (Exception obj)
{
handling code;
}
finally
{
free code;
}
Ex :- Exception raised in try block and corresponding catch block is matched then rest of the code
is executed normally.
class Test
{
public static void main(String[] args)
{
try
{
System.out.println("venu");
System.out.println(10/0);
}
catch (ArithmeticException ae)
{
System.out.println("u r getting ae:"+ae);
}
finally
{
System.out.println("finally block is always executed");
}
System.out.println("rest of the code");
}
}
Output:- venu
U r getting ae:ArithmeticException : /by zero
Finally block is always executed
172 | P a g e
JavaHome solutions Mr.
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
System.out.println("venu");
System.out.println(10/0);
}
catch (NullPointerException ne)
{
System.out.println("u r getting ne"+ne);
}
finally
{
System.out.println("finally block is always executed");
}
System.out.println("rest of the code"); //this line not executed
}
} venu
Output:- Finally block is always executed
Exception in Thread “main” :java.lang.ArithmeticException: / by
zero
Ex:- finally block is not executed vs finally
block is executed class Test
{
public static void main(String[] args)
{
System.out.println(" 1");
System.out.println(" 2"); int
a=10/0;
try
{
System.out.println(" ");
}
finally
{
System.out.println("finally block");
}
System.out.println("rest of the code");
}
};
The only one situation the finally block is wont be executed:-
In your program whenever we are using System.exit(0) the JVM is shut downing hence the rest
of the code won’t be executed .
173 | P a g e
JavaHome solutions Mr.
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
System.out.println("venu");
System.exit(0);------>line 1
System.out.println(10/0);
}
catch (ArithmeticException ae)
{
System.out.println("u r getting ae"+ae);
System.exit(0);------>line 2
}
finally
{
System.out.println("finally block is always executed");
}
System.out.println("rest of the code");
}
}
Note:- if we are commenting line 2
Output :- venu
174 | P a g e
JavaHome solutions Mr.
Ex 1:-
try
{
AE
NPE
AIOBE Ex 2:-
} try
catch (AE e) {
{ AE
} NPE
catch (NPE e) AIOBE
{ }
} catch (Exception e)
catch (AIOBE e) {
{ }
}
Ex 4:-introduced in 1.7 version
Ex 3:- try
try {
{ AE
AE NPE
NPE AIOBE
AIOBE CCE
} }
catch (AE e) catch (AE|NPE e)
{ {
} }
catch (Exception e) catch (AIOBE|CCE e)
{ {
} }
Throw:-
1) The main purpose of the throw keyword is to creation of Exception object explicitly either
for predefined or user defined .
2) Throw keyword works like a try block. The difference is try block is automatically find the
situation and creates a Exception object implicitly. Whereas throw keyword creates a Exception
object explicitly.
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
System.out.println(10/0);
175 | P a g e
JavaHome solutions Mr.
}
catch (ArithmeticException ae)
{
System.out.println("we are getting Exception "+ae);
}
}
}
Output:- we are getting Exception ArtithmeticException: / by zero
Note :-
In the above program the main method is responsible to create a exception object. So the
main method is creating exception object implicitly. The programmer is not responsible person to
creates a exception object.
Ex:-class
Test
{
public static void main(String[] args)
{
throw new ArithmeticException("we are getting Exception / by zero man");
}
}
Output:-
Exception in Thread “main” :java.lang.ArithmeticException:we are getting Exception/ by zero man
Note:-
In the above program the programmer is creating exception object explicitly. The main method
is not responsible person to creates exception object.
Ex:-
import java.util.*;
class Test
{
static void validate(int age)
{
if (age<18)
{
throw new ArithmeticException("not elgible for vote");
}
else
{
System.out.println("welcome to the voteing");
}
}
176 | P a g e
JavaHome solutions Mr.
Throws :-
1) Throw keyword is used to create exception object explicitly. But the main purpose of the throws
keyword is bypassing the generated exception from present method to caller method.
2) Throw keyword is used in the method body. But throws keyword we have to use in the method
declaration.
3) It is possible to throws any number of exceptions at a time based on the programmer
requirement.
In the java language we are handling the Exception in two ways
1) By using try-catch blocks
2) By using throws keyword
177 | P a g e
JavaHome solutions Mr.
Ex 1:-
import java.io.*;
class Student
{
void studentDetails()throws IOException
{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please enter student name");
String sname=br.readLine();
System.out.println("u r name is:"+sname);
}
public static void main(String[] args)throws IOException
{
Student s1=new Student();
s1.studentDetails();
}
}
Ex 2:-
import java.io.*;
class Student
{
void studentDetails()throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please enter student name");
String sname=br.readLine();
System.out.println("u r name is:"+sname);
}
public static void main(String[] args)
{
Student s1=new Student();
try
{
s1.studentDetails();
}
catch (IOException ie)
{
System.out.println("this is my handling code");
}
}
}
Ex 3:-
import java.io.*;
class Student
{
void studentDetails()throws IOException
178 | P a g e
JavaHome solutions Mr.
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please enter student name");
String sname=br.readLine();
System.out.println("please enter student rollno");
int sroll=Integer.parseInt(br.readLine());
System.out.println("enter student address");
String saddr=br.readLine();
System.out.println("student name is:"+sname);
System.out.println("student rollno is:"+sroll);
System.out.println("student address is:"+saddr);
}
void principal() throws IOException
{
studentDetails();
}
void officeBoy()throws IOException
{
principal();
}
Exceptions:-
There are two types of exceptions present in the java language
1) Predefined Exceptions.
2) User defined Exceptions.
Predefined Exception:-
Predefined classes comes along with the software based on your requirement we have to
create a objects.
Ex:- ArithmeticException,IOException,NullPointerException…………..etc
User defined Exceptions:-
Based on the user requirement user can creates a Exception is called user defined Exception.
Ex:InvaliedAgeException,BombBlostException………..etc
179 | P a g e
JavaHome solutions Mr.
180 | P a g e
JavaHome solutions Mr. Venu
}
//program that uses user defined Exception class
import java.util.*;
class Test
{
static void validate(int age) throws InvaliedAgeException
{
if (age<18)
{
throw new InvaliedAgeException("not elgible for vote");
}
else
{
System.out.println("welcome to the voteing");
}
}
public static void main(String[] args) throws InvaliedAgeException
{
Scanner s=new Scanner(System.in);
System.out.println("please enter
age"); int age=s.nextInt();
validate(age);
}
}
Ex:-preparation of custom unchecked exceptions:-
import java.util.*;
class Test
{
static void validate(int age)
{
if (age<18)
{
throw new InvaliedAgeException("not elgible for vote");
}
else
{
System.out.println("welcome to the voteing");
}
}
181 | P a g e
JavaHome solutions Mr.
182 | P a g e
JavaHome solutions Mr.
String str1="abc";
int b=Integer.parseInt(str1);
System.out.println(b);//NumberFormatException
}
catch (NumberFormatException ae)
{
System.out.println("boss u r geting
NumberFormatException"); System.out.println("check once u r
code");
}
}
}
NullPointerException:-
If we are having ‘null’ in any variable in that variable we are performing any operation we
are getting NummpointerException.
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
String str="Java";
System.out.println(str.length());//8
String str1=null;
System.out.println(str1.length());//NullPointerException
}
catch (NullPointerException ne)
{
System.out.println("boss u r geting nullpointerexception");
System.out.println("check once u r code");
}
}
}
ArithmeticException:-
Whenever we are performing / by zero operation we are getting ArithmeticException.
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
int a=10/2;
System.out.println(a);//5
183 | P a g e
JavaHome solutions Mr.
int b=10/0;
System.out.println(b);//ArithmeticExceptio
m
}
catch (ArithmeticException ne)
{
System.out.println("boss u r geting ArithmeticException");
System.out.println("check once u r code");
}
}
}
IllegalArgumentException:-
Thread priority range is 1-10 1---
→
low priority
→
10- high priority
If we are giving priority out of range then we are getting IllegalArgumentException.
Ex:-
class Test
{
public static void main(String[] args)
{
Thread t=new Thread();
t.setPriority(11);//IllegalArgumentException
}
}
IllegalThreadStateException:-
Whenever we are trying to restart the already start thread then we are getting
IllegalThreadStateException.
Ex:-class
Test
{
public static void main(String[] args)
{
Thread t=new Thread();
t.start();
t.start();//IllegalThreadStateException
}
}
StringIndexOutOfBoundsException:-
Whenever we are trying to perform String based operations with out of range condition then
we will get StringIndexOutOfBoundsException.
Ex:-class
Test
{
public static void main(String[] args)
184 | P a g e
JavaHome solutions Mr.
{
String str="Java";
System.out.println(str.charAt(3));//t
System.out.println(str.charAt(13));//StringIndexOutOfBoundsException
}
}
NegativeArraySizeException:-
If we are giving array size in negative values then we are getting NegativeArraySizeException.
Ex:-class
Test
{
public static void main(String[] args)
{
int[] a1=new int[100];
System.out.println(a1.length);//100
int[] a=new int[-9];
System.out.println(a.length);//NegativeArraySizeException
}
}InputMismatchException:-
import java.util.*;
class Test
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("enter first number");
int a=s.nextInt();
System.out.println("enter second number");
int b=s.nextInt();
System.out.println(a+b);
}
};
185 | P a g e
JavaHome solutions Mr.
StackOverflowError:-
Whenever we are calling method recursively then we are getting StackOverflowError.
Ex:-class
Test
{
void m1()
{
m2();
System.out.println("this is Java");
}
void m2()
{
m1();
System.out.println("from Javaech");
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
}
}
OutOfMemoryError:-
If we are creating objects greater than the heap memory then we are
getting OutOfMemoryError.
Ex:-class
Test
{
public static void main(String[] args)
{
int[] a=new int[100000000];//OutOfMemoryError
}
}
NoClassDefFoundError:-
Whatever the class if we want to execute if the class is not available at runtime we are
getting NoClassDefFoundError.
Ex:-class
Test
{
public static void main(String[] args)
{
System.out.println("Java");
}
}
Output:- javac Test.java
Java Test
186 | P a g e
JavaHome solutions Mr.
o/p:-Java
if we are executing class ABC (java ABC) if that class is not available then we are getting
NoClassDefFoundError .
java 7 features:-
multi-catch:-
the multi-catch feature is allows two or more exceptions to be caught by the same catch clause.
import java.util.*;
class Test
{
public static void main(String[] args)
{
int a[]=new int[3];;
Scanner s=new Scanner(System.in);
System.out.println("enter n
value"); int n=s.nextInt();
try
{
System.out.println(10/n);
for (int i=0;i<a.length;i++ )
{
System.out.println("enter "+i+" value");
a[i]=s.nextInt();
}
System.out.println(a[7]);
}
catch (ArithmeticException|ArrayIndexOutOfBoundsException e)
{
System.out.println(e);
}
System.out.println("program is ended");
}
};
187 | P a g e
JavaHome solutions Mr.
Multi Threading
2) The earlier days the computer’s memory is occupied only one program after completion of one
program it is possible to execute another program is called uni programming.
3) Whenever one program execution is completed then only second program execution will be
started such type of execution is called co operative execution, this execution we are having lot
of disadvantages.
a. Most of the times memory will be wasted.
b. CPU utilization will be reduced because only program allow executing at a time.
c. The program queue is developed on the basis co operative execution
To overcome above problem a new programming style will be introduced is called multiprogramming.
Advantages of multiprogramming:-
Thread:-
1) Thread is nothing but separate path of sequential execution.
2) The independent execution technical name is called thread.
3) Whenever different parts of the program executed simultaneously that each and
every part is called thread.
4) The thread is light weight process because whenever we are creating thread it is not
occupying the separate memory it uses the same memory. Whenever the memory
is shared means it is not consuming more memory.
5) Executing more than one thread a time is called multithreading.
188 | P a g e
JavaHome solutions Mr.
In the above program only one thread is available is called main thread to know the name of
the thread we have to execute the fallowing code.
class Test
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Thread t=Thread.currentThread();
System.out.println("currrent thread information is : "+t);//[main,5,main]
System.out.println("currrent thread priority is : "+t.getPriority());//5
System.out.println("currrent thread name is : "+t.getName());
System.out.println("hi Java");
System.out.println("hello Javaech");
}
}
In the above program only one thread is available name of that thread is main thread.
Multithreaded model:-
189 | P a g e
JavaHome solutions Mr.
extends implements
MyThread MyClass
Step 1:-
Creates a class that is extend by Thread classes and override the run() method
class MyThread extends Thread
{
public void run()
{
System.out.println("business logic of the thread");
System.out.println("body of the thread");
}
};
Step 2:-
Create a Thread object
MyThread t=new MyThread();
190 | P a g e
JavaHome solutions Mr.
Step 3:-
Starts the execution of a thread.
t.start();
In this approach take one user defined class class that is extending Thread class .
Ex:-
class MyThread extends Thread
{
public void run()
{
System.out.println("Java from Javaech");
System.out.println("body of the thread");
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t=new MyThread();
t.start();
}
}
Note :-
1) Whenever we are calling t.start() method the JVM search for the start() in the MyThread
class but the start() method is not present in the MyThread class so JVM goes to parent class
called Thread class and search for the start() method.
2) In the Thread class start() method is available hence JVM is executing start() method.
3) Whenever the thread class start() that start() is responsible person to call run() method.
4) Finally the run() automatically executed whenever we are calling start() method.
5) Whenever we are giving a chance to the Thread class start() method then only a new thread will
be created.
1) New
2) Ready
3) Running state
4) Blocked / waiting / non-running mode
5) Dead state
New :-
MyThread t=new MyThread();
Ready :-
t.start()
Running state:-
If thread scheduler allocates CPU for particular thread. Thread goes to running state
191 | P a g e
JavaHome solutions Mr.
Blocked State:-
If the running thread got interrupted of goes to sleeping state at that moment it goes to
the blocked state.
Dead State:-
If the business logic of the project is completed means run() over thread goes dead state.
Step 1:-
Creates a class that implements Runnable interface.
class MyClass extends Runnable
{
public void run()
{
System.out.println("Java from Javaech");
System.out.println("body of the thread");
}
};
Step 2:-
Creating a object.
MyClass obj=new MyClass();
Step 3:-
Creates a Thread class object.
Thread t=new Thread(obj);
Step 4:-
Starts the execution of a thread.
t.start();
192 | P a g e
JavaHome solutions Mr.
{
public static void main(String[] args)
{
MyClasss obj=new MyClass();
Thread t=new Thread(obj);
t.start();
}
}
Step 1:-
the Class MyClass implements the Runnable interface and overriding run() method and contains
the logic associates with the body of the thread.
Step 2:-
Creates the object of implementation class this is not like a first mechanism.
Step 3 :-
Creates a generic thread object then pass the MyClass reference variable as a parameter to that
object.
Step 4:-
As a result of third step 3 a thread object is created in order to execute this thread method
we need to class start() method. Then new thread is executed.
First approach:-
1) By extending the thread class, the derived class itself is a thread object and it gains full
control over the thread life cycle.
2) Another important point is that when extending the Thread class, the sub class cannot
extend any other base classes because Java allows only single inheritance.
if the program needs a full control over the thread life cycle, then extending the Thread class
is a good choice.
Second approach:-
1) Implementing the Runnable interface does not give developers any control over the thread
itself, as it simply defines the unit of work that will be executed in a thread.
2) By implementing the Runnable interface, the class can still extend other base classes
if necessary.
if the program needs more flexibility of extending other base classes, implementing
the Runnable interface would be preferable.
We are having two approaches two create a thread use any approach based on application requirement.
193 | P a g e
JavaHome solutions Mr.
New
Start()
ready
Notify()
If time is expired
Sleep()
Wait()
Running state
If run() completes/
Stop()
Dead state
194 | P a g e
JavaHome solutions Mr.
Thread Schedular:-
• Thread scheduler is a part of the JVM. It decides which thread is executed first and which
thread is executed next.
• Only one thread is executed at a time.
• We can’t expect exact behavior of the thread scheduler it is JVM vendor dependent. So we can’t
expect output of the multithreaded examples we can say the possible outputs.
• Thread Scheduler mainly uses preemptive (or) time slicing to schedule the threads.
Preemptive scheduling:-
In this highest priority task is executed first after this task enters into waiting state or dead state
then only another higher priority task come to existence.
195 | P a g e
JavaHome solutions Mr.
Note :-
Here we are not overriding the run() method so thread class run method is executed which
is having empty implementation so we are not getting any output.
class MyThread extends Thread
{
}
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t=new MyThread();
t.start();
for (int i=0;i<5;i++ )
{
System.out.println("main thread");
}
}
}
Note :-
If we are overriding start() method then JVM is executes override start() method at this
situation we are not giving chance to the thread class start() hence n new thread will be
created only one thread is available the name of that thread is main thread.
class MyThread extends Thread
{
Public void start()
{
System.out.println(“override start method”);
}
}
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t=new MyThread();
t.start();
for (int i=0;i<5 ;i++ )
{
System.out.println("main thread");
}
}
}
196 | P a g e
JavaHome solutions Mr.
197 | P a g e
JavaHome solutions Mr.
1) Every Thread in java has some name if may be default name provided by the jvm
or customized name provided by the programmer.
The fallowing methods are useful to set and get the name of a Thred.
a. Public final String getName()
b. Public final void setName(String name)
Ex:-
class MyThread extends Thread
{
}
class Test
{
public static void main(String args[])
{
System.out.println(Thread.currentThread().getName());
MyThread t=new MyThread();
System.out.println(t.getName());
Thread.currentThread().setName("meena");
System.out.println(Thread.currentThread().getName());
}
}
198 | P a g e
JavaHome solutions Mr.
Thread Priorities:-
1. Every Thread in java has some property. It may be default priority provided be
the JVM or customized priority provided by the programmer.
2. The valid range of thread priorities is 1 – 10. Where one is lowest priority and
10 is highest priority.
3. The default priority of main thread is 5. The priority of child thread is
inherited from the parent.
4. Thread defines the following constants to represent some standard priorities.
5. Thread Scheduler will use priorities while allocating processor the thread which
is having highest priority will get chance first and the thread which is having
low priority.
6. If two threads having the same priority then we can’t expect exact execution
order it depends upon Thread Scheduler.
7. The thread which is having low priority has to wait until completion of high
priority threads.
8. Three constant values for the thread priority.
a. MIN_PRIORITY = 1
b. NORM_PRIORITY = 5
c. MAX_PRIORITY = 10
Thread class defines the following methods to get and set priority of a Thread.
a. Public final int getPriority()
b. Public final void setPriority(int priority)
Here ‘priority’ indicates a number which is in the allowed range of 1 – 10. Otherwise we will get
Runtime exception saying “IllegalArgumentException”.
Ex:-
class JavaSirThread extends Thread
{
public void run()
{
System.out.println("Enter into thread Java");
System.out.println("thread Java is started"); for
(int i=0;i<10 ;i++ )
{
System.out.println("Java");
}
System.out.println("thread Java is ended");
}
};
199 | P a g e
JavaHome solutions Mr.
thread1.setPriority(Thread.MAX_PRIORITY);
System.out.println(thread1.getPriority());
Thread2.setPriority(Thread.MIN_PRIORITY);
System.out.println(thread2.getPriority());
Thread3.setPriority(thread2.getPriority()+1);
System.out.println(thread3.getPriority());
200 | P a g e
JavaHome solutions Mr.
thread1.start();
System.out.println("starting of Nagoor
Thread"); thread2.start();
System.out.println("starting of RamiReddy
Thread"); thread3.start();
}
};
Some of the thread class methods:-
Sleep():-
The sleep()method causes the current thread to sleep for a specified amount of time in
milliseconds.
For example, the code below puts the thread in sleep state for 5 minutes:
Ex:-class
Test
{
public static void main(String[] args)
{
try
{
for (int i=0;i<10 ;i++)
{
System.out.println("Java");
Thread.sleep(5*1000);//5 seconds
Thread.sleep(5*60*1000);// 5 minits
}
}
catch (InterruptedException ie)
{
System.out.println("the thread is got innterupted");
}
}
}
Ex :-class
Test
{
public static void main(String[] args)throws InterruptedException
{
System.out.println("Java");
Thread.sleep(3*1000);
}
}
201 | P a g e
JavaHome solutions Mr.
Java.lang.Thread.yield():-
❖
Yield() method causes to pause current executing Thread for giving the chance for waiting
threads of same priority.
❖
If there are no waiting threads or all threads are having low priority then the same thread will
continue its execution once again.
Syntax:-
Public static native void yield();
Ex:-
class MyThread extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
Thread.yield();
System.out.println("child
thread");
}
}
}
class ThreadYieldDemo
{
public static void main(String[] args)
{
MyThread t1=new
MyThread(); t1.start();
for(int i=0;i<10;i++)
{
System.out.println("main thread");
}
}
}
Java.lang.Thread.join():-
If a Thread wants to wait until completing some other thread then we should go
for join() method.
202 | P a g e
JavaHome solutions Mr.
Ex:-
class MyThread extends Thread
{
public void run()
{
for (int i=0;i<5;i++ )
{
try{
System.out.println("Java");
Thread.sleep(3*1000);}
catch(InterruptedException iee)
{
System.out.println("gettting innterupted exctpion");
}
}
}
}
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t1=new MyThread();
MyThread t2=new MyThread();
t1.start();
try
{
t1.join();
}
catch (InterruptedException ie)
{
System.out.println("interrupted Exception");
}
t2.start();
}
};
Ex 2:-
class MyThread extends Thread
{
public void run()
{
for (int i=0;i<5;i++ )
{
203 | P a g e
JavaHome solutions Mr.
try{
System.out.println("Java");
Thread.sleep(3*1000);}
catch(InterruptedException ie)
{
System.out.println("getting excception");
}
}
}
}
class ThreadDemo
{
public static void main(String[] args)throws InterruptedException
{
MyThread t1=new MyThread();
MyThread t2=new MyThread();
t1.start();
t1.join();
t2.start();
}
};
isAlive():-
used to check whether the thread is live or not.
Public Boolean isAlive()
class MyThread extends Thread
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t=new MyThread();
System.out.println(t.isAlive());
t.start();
System.out.println(t.isAlive());
}
};
204 | P a g e
JavaHome solutions Mr.
Java.lang.Thread.activeCount():-
This method is used to find out the number of methods in active state.
Public static int activeCount();
Ex:-
class MyThread extends Thread
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t1=new MyThread();
MyThread t2=new MyThread();
MyThread t3=new MyThread();
t1.start();
t2.start();
t3.start();
System.out.println(Thread.activeCount());//4
}
};
Java.lang.currentThread():-
This method is used to represent current thread class object.
Public static thread currentThread()
Ex:-
class MyThread extends Thread
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t1=new MyThread();
205 | P a g e
JavaHome solutions Mr.
Java.lang.Thread.getId():-
getId() is used to generate id value for each and every thread.
Public long getId()
Ex:-
class MyThread extends Thread
{
public void run()
{
System.out.println(" Java thread is running ");
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t1=new MyThread();
MyThread t2=new MyThread();
t1.start();
t2.start();
206 | P a g e
JavaHome solutions Mr.
}
};
class ThreadDemo
{
public static void main(String[] args)
{
MyThread t=new MyThread();
t.start();
t.interrupt();
}
};
207 | P a g e
JavaHome solutions Mr.
NOTE:-
The interrupt() is working good whenever our thread enters into waiting state
or sleeping state.
The interrupted call will be wasted if our thread doesn’t enters into the waiting/sleeping
state.
class MyThread extends Thread
{
public void run()
{
for (int i=0;i<10;i++)
{
Thread.sleep(2000);
System.out.println("Javaech task");
}
}
};
class ThreadDemo
{
public static void main(String[] args)throws Exception
{
MyThread1 t1=new MyThread1();
MyThread2 t2=new MyThread2();
MyThread3 t3=new MyThread3();
t1.start();
t2.start();
t3.start();//4-threads
t1.join();
System.out.println(t1.getName());//thread-0
System.out.println(t2.getName());
System.out.println(t3.getName());
t1.setName("sneha");
System.out.println(t1.getName());//sneha
System.out.println(Thread.currentThread().getName());//main
Thread.currentThread().setName("poornima");
System.out.println(Thread.currentThread().getName());//poornima
System.out.println(Thread.activeCount());
System.out.println(t1.isAlive());
System.out.println(t1.getId());
System.out.println(t2.getId());
System.out.println(Thread.currentThread().getPriority());
System.out.println(t1.getPriority());
Thread.currentThread().setPriority(10);
System.out.println(Thread.currentThread().getPriority());
for (int i=0;i<5;i++)
208 | P a g e
JavaHome solutions Mr.
{
Thread.sleep(5000);
Thread.yield();
System.out.println("main thread");
}
}
};
Synchronized :-
• Synchronized modifier is the modifier applicable for methods but not for classes and variables.
• If a method or a block declared as synchronized then at a time only one Thread is allowed
to operate on the given object.
• The main advantage of synchronized modifier is we can resolve data inconsistency problems.
• But the main disadvantage of synchronized modifier is it increases the waiting time of the
Thread and effects performance of the system .Hence if there is no specific requirement it is
never recommended to use.
• The main purpose of this modifier is to reduce the data inconsistence problems.
Non-synchronized methods
void m1()
{ non-synchronized method any number of threads can access
}
Every thread accessing simultaneously
1) In the above case multiple threads are accessing the same methods hence we are getting data
inconsistency problems. These methods are not thread safe methods.
2) But in this case multiple threads are executing so the performance of the application will be
increased.
Synchronized methods
209 | P a g e
JavaHome solutions Mr.
Daemon threads:-
The threads wchich are executed at background is called daemon
threads. Ex:- garbage collector,ThreadSchedular.default exceptional handler.
Non-daemon threads:-
The threads which are executed fore ground is called non-daemon
threads. Ex:- normal java application.
Volatile:-
• Volatile modifier is also applicable only for variables but not for methods and classes.
• If the values of a variable keep on changing such type of variables we have to declare with
volatile modifier.
• If a variable declared as a volatile then for every Thread a separate local copy will be created.
• Every intermediate modification performed by that Thread will take place in local copy instead
of master copy.
• Once the value got finalized just before terminating the Thread the master copy value will be
updated with the local stable value. The main advantage of volatile modifier is we can
resolve the data inconsistency problem.
• But the main disadvantage is creating and maintaining a separate copy for every Thread
• Increases the complexity of the programming and effects performance of the system.
210 | P a g e
JavaHome solutions Mr.
Nested classes
Declaring the class inside another class is called nested classes. This concept is introduced in the 1.1
version.
The nested classes are two types
Static nested classes:- The nested classes declare as a static modifier is called static nested
classes.
1. Static nested classes
Non static nested classes:- these are called inner classes.
2. Normal inner classes
3. Method local inner classes
4. Anonymous inner classes
Nested classes
Ex :- class Outerclasses
{
static class staticnestedclass
{
};
class Innerclass
{
};
};
For the outer classes the compiler will provide the .class and for the inner classes also the compiler
will provide the .class file.
The .class file name for the inner classes is OuterclassName$innerclasssname.class
Outer class object creation :- Outer o=new Outer();
Inner class object creation :- Outer.Inner i=o.new Inner();
Outer class name :- Outer.class
Inner class name :- Outer$Inner.class
211 | P a g e
JavaHome solutions Mr.
class A
{ class B
}; {
class B class A
{ {
A a=new A(); };
}; };
Note:- by using outer class name it is possible to call only outer class peroperties and methods and by
using inner class object we are able to call only inner classes properties and methods.
212 | P a g e
JavaHome solutions Mr.
Ex:-
class Outer
{
private int a=100;
class Inner
{
void data()
{
System.out.println("the value is :"+a);
}
}
}
class Test
{
public static void main(String[] args)
{
Outer o=new Outer();
Outer.Inner i=o.new
Inner(); i.data();
}
};
Ex :-
class Outer
{
int i=100;
void m1()
{
//j=j+10;// compilation error
//System.out.println(j);//compilation error
System.out.println("m1 method");
}
class Inner
{
int j=200;
void m2()
{
i=i+10;
System.out.println(i);
}
};
};
class Test
{
public static void main(String[] args)
{
A a=new A();
System.out.println(a.i);
a.m1();
213 | P a g e
JavaHome solutions Mr.
214 | P a g e
JavaHome solutions Mr.
Ex:-
class Outer
{
private int a=100;
void m1()
{
class Inner
{
void innerMethod()
{
System.out.println("inner class
method"); System.out.println(a);
}
};
Inner i=new Inner();
i.innerMethod();
}
};
class Test
{
public static void main(String[] args)
{
Outer o=new
Outer(); o.m1();
}
};
Ex 2:-in method local inner classes it is not possible to call the non-final variables inside the inner classes
hence we must declare that local variables must be final then only it is possible to access that members.
class Outer
{
private int a=100;
void m1()
{
final int b=1000;
class Inner
{
void innerMethod()
{
System.out.println("inner class
method"); System.out.println(a);
System.out.println(b);
}
};
Inner i=new Inner();
i.innerMethod();
}
};
215 | P a g e
JavaHome solutions Mr.
class Test
{
public static void main(String[] args)
{
Outer o=new
Outer(); o.m1();
}
};
Static inner classes:-
In general in java classes it is not possible to declare any class as a abstract class but is possible to
declare inner class as a static modifier.
Declaring the static class inside the another class is called static inner class.
Static inner classes can access only static variables and static methods it does not access the
instace variables and instance methods.
Syntax:- class Outer
{
static class Inner
{
};
};
class Outer
{
static int a=10;
static int b=20;
static class Inner
{
int c=30;
void m1()
{
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
};
public static void main(String[] args)
{
Outer o=new Outer();
Outer.Inner i=new Outer.Inner();
i.m1();
}
};
Anonymous inner class:-
1. The name less inner class is called anonymous inner class.
2. it can be used to provide the implementation of normal class or abstract class or interface
216 | P a g e
JavaHome solutions Mr.
Ex:-
abstract class Test
{
abstract void m1();
};
class OuterClass
{
void m2()
{
System.out.println("m2 method");
}
Test t=new Test()
{
void m1()
{
System.out.println("annonymus inner class");
}
};
};
class Demo
{
public static void main(String[] args)
{
OuterClass o=new OuterClass();
o.m2();
o.t.m1();
}
};
Ex:-
interface Test
{
abstract public void m1();
};
class OuterClass
{
void m2()
{
System.out.println("m2 method");
}
Test t=new Test()
{
public void m1()
{
System.out.println("annonymus inner class");
}
};
};
class Demo
217 | P a g e
JavaHome solutions Mr.
{
public static void main(String[] args)
{
OuterClass o=new OuterClass();
o.m2();
o.t.m1();
}
};
Anonymous inner classes for abstract classes:-
it is possible to provide abstract method implementations by taking inner classes.
abstract class Animal
{
abstract void eat();
};
class Test
{
Animal a=new Animal()
{
void eat()
{
System.out.println("animals eating gross");
}
};
public static void main(String[] args)
{
Test t=new Test();
t.a.eat();
}
}
Ex:-
abstract class Animal
{
abstract void eat();
};
class Test
{
public static void main(String[] args)
{
Animal a=new Animal()
{
void eat()
{
System.out.println("animals eating gross");
}
};
a.eat();
}
}
218 | P a g e
JavaHome solutions Mr.
ENUMARATION
1. This concept is introduced in 1.5 version
2. enumeration is used to declare group of named constant s.
3. we are declaring the enum by using enum keyword. For the enums the compiler will generate
.classess
4.enum is a keyword and Enum is a class and every enum is directl child class of java.lang.Enum so it is not
possible to inherit the some other class. Hence for the enum inheritance concept is not applicable
5. by default enum constants are public static final
219 | P a g e
JavaHome solutions Mr.
1. inside the enum it is possible to declare constructors. That constructors will be ececuted for each
and every constant. If we are declaring 5 constants then 5 times constructor will be executed.
2. Inside the enum if we are declaring only constants the semicolon is optional.
3. Inside the enum if we are declaring group of constants and constructors at that situation the group
of constants must be first line of the enum must ends with semicolon.
Ex :-Semicolan optinal Ex:- semicolon mandatory
enum Heroin enum Heroin
{ {
samantha,tara,anu,ubanu samantha,tara,anu,ubanu;
} Heroin()
class Test {
{ System.out.println(" sir");
public static void main(String... ) }
{ }
Heroin s=Heroin.samantha; class Test
} {
}; public static void main(String... )
{
Heroin s=Heroin.samantha;
}
};
Ex:- constructors with arguments
enum Heroin
{
samantha,tara(100),ubanu(100,200);
Heroin()
{
System.out.println(" smantha constructor");
}
Heroin(int a)
{System.out.println(a);
System.out.println(" tara constructor");
}
Heroin(int a,int b)
{ System.out.println(a+b); System.out.println("
ubanu constructor");
}
}
class Test
{
public static void main(String[] args)
{ Heroin[] s=Heroin.values(); for
(Heroin s1:s)
{
System.out.println(s1+"--------"+s1.ordinal());
}
}
};
220 | P a g e
JavaHome solutions Mr.
221 | P a g e
JavaHome solutions Mr.
Garbage collector:-
garbage collector is destroying the useless object and it is a part of the jvm.
To make elgible objects to the garbage collector
Approach -1:-whenever we are assigning null constants to our objects then objects are elgible for
gc(garbage collector)
class Test
{
public static void main(String[] args)
{
Test t1=new Test();
Test t2=new Test();
System.out.println(t1);
System.out.println(t2);
;
;
;
t1=null;//t1 object is elgible for Garbage collector
t2=null;//t2 object is elgible for Garbage
Collector System.out.println(t1);
System.out.println(t2);
}
};
Approach-2:-whenver we reassign the reference variable the objects are automatically elgible for
garbage collector.
class Test
{
public static void main(String[] args)
{
Test t1=new Test();
Test t2=new Test();
System.out.println(t1);
System.out.println(t2);
t1=t2;
System.out.println(t1);
System.out.println(t2);
}
};
gc():-
1) internally the garbage collector is running to destroy the useless objects.
2) by using gc() method we are able to call Garbage Collector explicitly by the developer.
3) gc() present in System class and it is a static method.
Syntax:- System.gc();
3) Whenevr garbage collector is destroying useless objects just before destroying the objects the
garbage collector is calling finalize() method on that object to perform final operation of particular
object.
Ex:-class
Test
{
222 | P a g e
JavaHome solutions Mr.
Approach-3 :-whenever we are creating objects inside the methods one method is completed the
objects are elgible for garbage collector.
class Test
{
public void finalize()
{
System.out.println("object destroyed");
}
void m1()
{
Test t1=new Test();
Test t2=new Test();
}
public static void main(String[] args)
{
Test t=new Test();
t.m1();
System.gc();
}
};
223 | P a g e
JavaHome solutions Mr.
Ex:- if the garbage collector is calling finalize Ex:- If user is calling finalize() method explicitly
method at that situation exception is raised at that situation exception is raised.
such type of exception are ignored.
class Test class Test
{ {
public void finalize() public void finalize()
{ {
System.out.println(" sir destroyed"); System.out.println(" sir destroyed");
int a=10/0; int a=10/0;
} }
public static void main(String[] args) public static void main(String[] args)
{ {
Test t1=new Test(); Test t1=new Test();
Test t2=new Test(); Test t2=new Test();
t1=t2; t1=t2;
System.gc(); t2.finalize();
} }
}; };
Instanceof operator:-
it is used check the type of the object.
Instanceof operator return Boolean value as a return value.
Syntax:- Reference-variable instanceof class-name
Ex:- Test t=new Test();
t instanceof Test
while using instanceof operator the reference variable and class Name must have some
relationship (Parent-child or child-parent) otherwise compiler will raise compilation error.
if the reference variable is child of the specified classes at that situation instanceof return true
if the reference variable is parent of the specified classes at that situation instanceof return false.
class Fruit
{
};
class Apple extends Fruit
{
public static void main(String[] args)
{
Apple a=new Apple();
Object o=new Object();
String str=" ";
Throwable t=new Throwable();
System.out.println(a instanceof Fruit);
System.out.println(a instanceof Object);
System.out.println(str instanceof Object);
System.out.println(o instanceof Throwable);
System.out.println(t instanceof Throwable);
//System.out.println(t instanceof Apple);//compilation error
}
}
224 | P a g e
JavaHome solutions Mr.
JavaHome solutions Mr.
Networking
Introduction to networking:-
1) The process of connecting the resources (computers) together to share the data is called
networking.
2) Java.net is package it contains number of classes by using that classes we are able to
connection between the devices (computers) to share the information.
3) Java.net package provide support for the TCP (Transmission Control Protocol),UDP(user data
gram protocol) protocols.
Categories of network:-
We are having two types of networks
1) Per-to-peer network.
2) Client-server network.
Client-server:-
In the client server architecture always client system behaves as a client and server system
behaves as a server.
Peer-to-peer:-
In the peer to peer client system sometimes behaves as a server, server system
sometimes behaves like a client the roles are not fixed.
Types of networks:-
Intranet:-
It is also known as a private network. To share the information in limited
area range(within the organization) then we should go for intranet.
Internet:-
It is also known as public networks. Where the data maintained in a centralized server
hence we are having more sharability. And we can access the data from anywhere else.
Extranet:-
238 | P a g e
JavaHome solutions Mr.
This is extension to the private network means other than the organization , authorized
persons able to access.
The frequently used terms in the networking:-
1) IP Address
2) URL(Uniform Resource Locator)
3) Protocol
4) Port Number
5) MAC address.
6) Connection oriented and connection less protocol
7) Socket.
Protocol:-
Protocol is a set of rules fallowed by the every computer present in the network this is useful to
send the data physically from one place to another place in the network.
▪
TCP(Transmission Control Protocol)(connection oriented protocol)
▪
UDP (User Data Gram Protocol)(connection less protocol)
▪
Telnet
▪
SMTP(Simple Mail Transfer Protocol)
▪
IP (Internet Protocol)
IP Address:-
1) IP Address is a unique identification number given to the computer to indentify it uniquely
in the network.
2) The IP Address is uniquely assigned to the computer it is not duplicated.
3) The IP Address range is 0-255 if we are giving the other than this range that is not allowed.
4) We can identify the particular computer in the network with the help of IP Address.
5) The IP Address contains four digit number
a. 125.0.4.255----good
b. 124.654.5.6-----bad
c. 1.2.3.4.5.6-------bad
6) Each and every website contains its own IP Address we can access the sites through the
names otherwise IP Address.
Site Name :- www.google.com
IP Address :- 74.125.224.72
Ex:-
import java.net.*;
import java.io.*;
class Test
{
public static void main(String[] args) throws Exception
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("please enter site name");
String sitename=br.readLine();
239 | P a g e
JavaHome solutions Mr.
InetAddress in=InetAddress.getByName(sitename);
System.out.println("the ip address is:"+in);
}
}
java Test
www.yahoo.com
The IP Address is: www.yahoo.com/ 106.10.139.246
Java Test
Please press enter key then we will get IP Address of the system.
The IP Address is : local host/we are getting IP Address of the system
Note:-
If the internet is not available we are getting java.net.UnKnownHostException.
240 | P a g e
JavaHome solutions Mr.
System.out.println("port number
is:"+url.getPort()); System.out.println("path
is:"+url.getPath()); System.out.println(url);
}
}
To achieve the fallowing communication the java peoples are provided the fallowing classes.
a. Socket
b. ServerSocket
Application Layer
TCP
IP
Physical Layer
Application Layer:-
Takes the data from the application and sends it to the TCP layer.
TCP Protocol:-
it will take the data which is coming from Application Layer and divides in to small units called
Packets. Then transfer those packets to the next layer called IP. The packet contains group of
bytes of data.
IP:-
It will take the packets which is coming from TCP and prepare envelop called ‘frames’ hence the
frame contains the group of packets. Then it will identify the particular target machine on the
basis of the IP address and sent that frames to the physical layer.
Physical Layer:-
Based on the physical medium it will transfer the data to the target machine.
241 | P a g e
JavaHome solutions Mr.
To achieve the UDP communication the java peoples are provided the fallowing classes.
1. DataGrampacket.
2. DataGramSocket.
Socket:-
1) Socket is used to create the connection between the client and server.
2) Socket is nothing but a combination of IP Address and port number.
3) The socket is created at client side.
4) Socket is class present in the java.net package
5) It is acting as a communicator between the client and server.
6) Whenever if we want to send the data first we have to create a socket that is acts as a medium.
Client.java:-
import java.net.*;
import java.io.*;
class Client
{
public static void main(String[] args)throws Exception
{
Socket s=new Socket("localhost",5555);
String str=" from client"; OutputStream
os=s.getOutputStream(); PrintStream
ps=new PrintStream(os); ps.println(str);
InputStream is=s.getInputStream();
242 | P a g e
JavaHome solutions Mr.
}
}
Server.java:-
import java.io.*;
import java.net.*;
class Server
{
public static void main(String[] args) throws Exception
{
//to read the data from client
ServerSocket ss=new ServerSocket(5555);
Socket s=ss.accept();
OutputStream os=s.getOutputStream();
PrintStream ps=new PrintStream(os);
ps.println(data);
}
}
243 | P a g e
JavaHome solutions Mr.