300 Core Java Interview Questions (2024) - Javatpoint
300 Core Java Interview Questions (2024) - Javatpoint
The answers to the Core Java interview questions are short and to the point. The
core Java interview questions are categorized in Basics of Java interview
questions, OOPs interview questions, String Handling interview questions,
:
Multithreading interview questions, collection interview questions, JDBC
interview questions, etc.
ADVERTISEMENT
1 2 3 4 5
1) What is Java?
ADVERTISEMENT
:
Java is the high-level, object-oriented, robust, secure programming language,
platform-independent, high performance, Multithreaded, and portable
programming language. It was developed by James Gosling in June 1991. It can
also be known as the platform as it provides its own JRE and API.
The differences between C++ and Java are given in the following table.
Mainly used for C++ is mainly used for Java is mainly used for
system programming. application
programming. It is
widely used in
window, web-based,
enterprise and mobile
applications.
:
Design Goal C++ was designed for Java was designed
systems and and created as an
applications interpreter for printing
programming. It was systems but later
an extension of C extended as a support
programming network computing. It
language. was designed with a
goal of being easy to
use and accessible to
a broader audience.
Call by Value and Call C++ supports both call Java supports call by
by reference by value and call by value only. There is no
reference. call by reference in
java.
Simple: Java is easy to learn. The syntax of Java is based on C++ which
makes easier to write the program in it.
Interpreted: Java uses the Just-in-time (JIT) interpreter along with the
compiler for the program execution.
Java Virtual Machine is a virtual machine that enables the computer to run the
Java program. JVM acts like a run-time engine which calls the main method
:
present in the Java code. JVM is the specification which must be implemented
in the computer system. The Java code is compiled by JVM to be a Bytecode
which is machine independent and close to the native code.
JVM
JVM is an acronym for Java Virtual Machine; it is an abstract machine which
provides the runtime environment in which Java bytecode can be executed. It is
a specification which specifies the working of Java Virtual Machine. Its
implementation has been provided by Oracle and other companies. Its
implementation is known as JRE.
JVMs are available for many hardware and software platforms (so JVM is
platform dependent). It is a runtime instance which is created when we run the
Java class. There are three notions of the JVM: specification, implementation,
and instance.
:
JRE
JRE stands for Java Runtime Environment. It is the implementation of JVM. The
Java Runtime Environment is a set of software tools which are used for
developing Java applications. It is used to provide the runtime environment. It is
the implementation of JVM. It physically exists. It contains a set of libraries +
other files that JVM uses at runtime.
JDK
More Details.
JVM?
Many types:
More Details.
There are the following differences between the Java platform and other
platforms.
10) What gives Java its 'write once and run anywhere'
nature?
:
The bytecode. Java compiler converts the Java programs into the class file (Byte
Code) which is the intermediate language between source code and machine
code. This bytecode is not platform specific and can be executed on any
computer.
run it by java A
Default Default are accessible within the package only. By default, all
the classes, methods, and variables are of default scope.
For example, In the class simulating the collection of the students in a college,
the name of the college is the common attribute to all the students. Therefore,
the college name will be defined as static.
:
19) What are the advantages of Packages in Java?
There are various advantages of defining packages in Java.
We can also have the hidden classes that are not visible outside and
used by the package.
class Test
{
public static void main (String args[])
{
System.out.println(10 + 20 + "Javatpoint");
System.out.println("Javatpoint" + 10 + 20);
}
}
30Javatpoint
Javatpoint1020
Explanation
In the first case, 10 and 20 are treated as numbers and added to be 30. Now,
:
their sum 30 is treated as the string and concatenated with the string
Javatpoint. Therefore, the output will be 30Javatpoint.
class Test
{
public static void main (String args[])
{
System.out.println(10 * 20 + "Javatpoint");
System.out.println("Javatpoint" + 10 * 20);
}
}
200Javatpoint
Javatpoint200
Explanation
In the first case, The numbers 10 and 20 will be multiplied first and then the
result 200 is treated as the string and concatenated with the string Javatpoint
to produce the output 200Javatpoint.
In the second case, The numbers 10 and 20 will be multiplied first to be 200
because the precedence of the multiplication is higher than addition. The result
200 will be treated as the string and concatenated with the string Javatpointto
:
produce the output as Javatpoint200.
class Test
{
public static void main (String args[])
{
for(int i=0; 0; i++)
{
System.out.println("Hello Javatpoint");
}
}
}
The above code will give the compile-time error because the for loop demands
a boolean value in the second part and we are providing an integer value, i.e., 0.
More Details.
class Student3{
int id;
String name;
:
void display(){System.out.println(id+" "+name);}
Test it Now
Output:
0 null
0 null
Explanation: In the above class, you are not creating any constructor, so
compiler provides you a default constructor. Here 0 and null values are provided
by default constructor.
More Details.
:
30) Does constructor return any value?
Ans: yes, The constructor implicitly returns the current instance of the class (You
can't use an explicit return type with the constructor). More Details.
class Test
{
int i;
public Test(int k)
{
i=k;
}
public Test(int k, int m)
{
System.out.println("Hi I am assigning the value max(k, m) to i");
if(k>m)
{
i=k;
}
else
:
{
i=m;
}
}
}
public class Main
{
public static void main (String args[])
{
Test test1 = new Test(10);
Test test2 = new Test(12, 15);
System.out.println(test1.i);
System.out.println(test2.i);
}
}
There are many ways to copy the values of one object into another in java. They
are:
By constructor
Test it Now
Output:
111 Karan
111 Karan
:
35) What are the differences between the constructors
and methods?
There are many differences between constructors and methods. They are given
below.
The constructor name must be The method name may or may not
same as the class name. be same as class name.
:
36) What is the output of the following Java program?
a = 10 b = 15
Here, the data type of the variables a and b, i.e., byte gets promoted to int, and
the first parameterized constructor with the two integer parameters is called.
class Test
{
int i;
}
public class Main
{
public static void main (String args[])
{
Test test = new Test();
System.out.println(test.i);
}
}
class Test
{
int test_a, test_b;
Test(int a, int b)
{
test_a = a;
test_b = b;
}
public static void main (String args[])
{
Test test = new Test();
System.out.println(test.test_a+" "+test.test_b);
}
}
There is a compiler error in the program because there is a call to the default
constructor in the main method which is not present in the class. However,
there is only one parameterized constructor in the class Test. Therefore, no
default constructor is invoked by the constructor implicitly.
class Student8{
int rollno;
String name;
static String college ="ITS";
s1.display();
s2.display();
}
}
Test it Now
More Details.
41) What are the restrictions that are applied to the Java
static methods?
Two main restrictions are applied to the static methods.
The static method can not use non-static data member or call the
non-static method directly.
:
this and super cannot be used in static context as they are non-static.
class A2{
static{System.out.println("static block is invoked");}
public static void main(String args[]){
System.out.println("Hello main");
}
}
Test it Now
More Details.
:
45) Can we execute a program without main() method?
Ans) No, It was possible before JDK 1.7 using the static block. Since JDK 1.7, it is
not possible. More Details.
2)We don't need to create the The object is required to call the
objects to call the static methods. instance methods.
4)For example: public static int For example: public void msg(){...}.
cube(int n){ return n*n*n;}
Output
hi !! I am good !!
i = 102
More Details.
this can be used to return the current class instance from the
method.
Output
Output
10
Output
Single-level inheritance
:
Multi-level inheritance
Multiple Inheritance
Hierarchical Inheritance
Hybrid Inheritance
More Details.
Inheritance provides code reusability. The derived class does not need
to redefine the method of base class unless it needs to provide the
specific implementation of the method.
Inheritance provides data hiding. The base class can hide some data
from the derived class by making it private.
Since the compile-time errors are better than runtime errors, Java renders
compile-time error if you inherit 2 classes. So whether you have the same
method or different, there will be a compile time error.
class A{
void msg(){System.out.println("Hello");}
}
class B{
void msg(){System.out.println("Welcome");}
}
class C extends A,B{//suppose if it were
Test it Now
Address.java
Employee.java
void display(){
:
System.out.println(id+" "+name);
System.out.println(address.city+" "+address.state+" "+address.country);
}
e.display();
e2.display();
}
}
Output
111 varun
gzb UP india
112 arun
gno UP india
class Animal{
Animal(){System.out.println("animal is created");}
}
class Dog extends Animal{
Dog(){
System.out.println("dog is created");
}
}
class TestSuper4{
public static void main(String args[]){
Dog d=new Dog();
}
}
:
Test it Now
Output:
animal is created
dog is created
More Details.
class Person
{
String name,address;
int age;
public Person(int age, String name, String address)
{
this.age = age;
this.name = name;
this.address = address;
}
}
class Employee extends Person
{
float salary;
public Employee(int age, String name, String address, float salary)
{
super(age,name,address);
this.salary = salary;
}
:
}
public class Test
{
public static void main (String args[])
{
Employee e = new Employee(22, "Mukesh", "Delhi", 90000);
System.out.println("Name: "+e.name+" Salary: "+e.salary+" Age: "+e.ag
e+" Address: "+e.address);
}
}
Output
The super keyword always points to the parent class contexts whereas
this keyword always points to the current class context.
:
The super keyword is primarily used for initializing the base class
variables within the derived class constructor whereas this keyword
primarily used to differentiate between local and instance variables
when passed in the class constructor.
The super and this must be the first statement inside constructor
otherwise the compiler will throw an error.
class Person
{
public Person()
{
System.out.println("Person class constructor called");
}
}
public class Employee extends Person
{
public Employee()
{
System.out.println("Employee class constructor called");
}
public static void main (String args[])
{
Employee e = new Employee();
}
}
Output
Example:
Output:
More Details.
More Details.
class Adder{
static int add(int a,int b){return a+b;}
static double add(int a,int b){return a+b;}
}
class TestOverloading3{
public static void main(String[] args){
System.out.println(Adder.add(11,11));//ambiguity
}}
Test it Now
Output:
More Details.
Output
More Details.
:
76) What is method overloading with type promotion?
By Type promotion is method overloading, we mean that one data type can be
promoted to another implicitly if no exact matching is found.
As displayed in the above diagram, the byte can be promoted to short, int, long,
float or double. The short datatype can be promoted to int, long, float or double.
The char datatype can be promoted to int, long, float or double and so on.
Consider the following example.
class OverloadingCalculation1{
void sum(int a,long b){System.out.println(a+b);}
void sum(int a,int b,int c){System.out.println(a+b+c);}
Test it Now
Output
40
60
class OverloadingCalculation3{
void sum(int a,long b){System.out.println("a method invoked");}
void sum(long a,int b){System.out.println("b method invoked");}
Output
There are two methods defined with the same name, i.e., sum. The first method
accepts the integer and long type whereas the second method accepts long
and the integer type. The parameter passed that are a = 20, b = 20. We can not
tell that which method will be called as there is no clear differentiation
mentioned between integer literal and long literal. This is the case of ambiguity.
Therefore, the compiler will throw an error.
The method must have the same name as in the parent class.
The method must have the same signature as in the parent class.
More Details.
class Base
{
void method(int a)
:
{
System.out.println("Base class method called with integer a = "+a);
}
void method(double d)
{
System.out.println("Base class method called with double d ="+d);
}
}
}
}
Output
Explanation
:
The method() is overloaded in class Base whereas it is derived in class Derived
with the double type as the parameter. In the method call, the integer is passed.
class A{
A get(){return this;}
}
class B1 extends A{
B1 get(){return this;}
void message(){System.out.println("welcome to covariant return type");}
Test it Now
More Details.
:
89) What is the output of the following Java program?
class Base
{
public void baseMethod()
{
System.out.println("BaseMethod called ...");
}
}
class Derived extends Base
{
public void baseMethod()
{
System.out.println("Derived method called ...");
}
}
public class Test
{
public static void main (String args[])
{
Base b = new Derived();
b.baseMethod();
}
}
Output
Explanation
Test it Now
More Details.
class Bike{
final void run(){System.out.println("running");}
}
Test it Now
Test it Now
More Details.
class Student{
int id;
String name;
final String PAN_CARD_NUMBER;
...
}
More Details.
class Main {
public static void main(String args[]){
final int i;
i = 20;
System.out.println(i);
}
}
:
Output
20
Explanation
Since i is the blank final variable. It can be initialized only once. We have
initialized it to 20. Therefore, 20 will be printed.
class Base
{
protected final void getInfo()
{
System.out.println("method of Base class");
}
}
Output
:
Derived.java:11: error: getInfo() in Derived cannot override
getInfo() in Base
protected final void getInfo()
^
overridden method is final
1 error
Explanation
next
1 2 3 4 5
C++ React
B.Tech / MCA
Data
DBMS DAA
Structures
:
Operating Computer Compiler
System Network Design
Cyber C
Automata
Security Programming
Data
Warehouse
Preparation
Verbal
Aptitude Reasoning
Ability
Interview Company
Questions Questions
:
:
Home Python Java JavaScript HTML SQL PHP
: