1. What
are the categories of data types Java supports ?
Java
supports 2 categories of data types.
a.
Primitive types
b.
Reference types
Java
language supports 8 primitive types of data.
Those
are:
byte,
short, int, long
float,
double
boolean
char
3. If you are using primitive data types as local variables, then you must initialize the variable before using. Other wise compiler will throw error.
Example
class
Compatible{
public
static void main(String args[]){
int
intVar = 10;
boolean
a = intVar;
}
}
While
compiling you will get the below error
Compatible.java:6:
error: incompatible types
boolean a =
floatVar;
^
required:
boolean
found:
float
1
error
5.
Always assign a value to a float variable by appending “f” to
it like below
float
floatVar = 10.09f
7.
Remainder operator always returns the sign of numerator
Ex:
5
% 2 = 1
-5
% 2 = -1
8.
If you try to compare two incompatible type values, compiler will
throw error.
class
ConditionalEx{
public static void
main(String args[]){
int a = 10;
boolean b = true;
System.out.println("a
less than b " + (a<b));
}
}
If
you try to compile the above program, you will get the below error
ConditionalEx.java:8:
error: bad operand types for binary operator '<'
System.out.println("a
less than b " + (a<b));
^
first
type: int
second
type: boolean
1
error
9.
Why Logical AND is called short circuit operator
Since
if the first statement in the expression evaluates to false, then
java won't evaluates the entire expression. So Logial AND is called
short circuit AND
10.
Why Logical OR is called short circuit operator
Since
if the first statement evaluates to true, then java won't evaluates
the entire expression. So Logial OR is called short circuit OR
11.
When to use if-else if -else ladder, than switch ?
Switch
case won't supports range checks like age>30, year<2000 etc.,
in those cases better to go for if-else if-else ladder.
12.
What is the difference between while and do-while ?
the
statements within the do block are always executed at least once even
if the expression evaluates to true.
13.
If you try to access an array with illegal index, then compiler
will throw “ArrayIndexOutOfBoundsException”
Example
class
ArrayEx{
public static void
main(String args[]){ int arr[] = new int[10];
arr[11] = 100;
}
}
When
you try to compile, compiler will throw the below error
Exception
in thread "main" java.lang.ArrayIndexOutOfBoundsException:
11
at
ArrayEx.main(ArrayEx.java:5)
14.
If Program defined with array of negative size, then program
compiles fine, but “NegativeArraySizeException” will be thrown at
run time.
Example
class
ArrayEx{
public static void
main(String args[]){
String
arr[] = new String[-10];
}}
Program
compiles fine, but run time error come
Exception in thread
"main" java.lang.NegativeArraySizeException at
ArrayEx.main(ArrayEx.java:3)
- Array size is always an integer, so it is correct to give array size as byte, short and int. But not long.
Example
1
class
ArrayEx{
public static void
main(String args[]){
byte b = 10;
short s = 11;
int i = 5;
String arr1[] =
new String[b];
String arr2[] =
new String[s];
String arr3[] =
new String[i];
System.out.println(arr1.length
+"\t" + arr2.length + "\t" + arr3.length);
} }
10 11 5
class ArrayEx{
public static void
main(String args[]){
long i = 10;
String arr3[] =
new String[i];
} }
When you try to
compile, you will get compiler error like below
ArrayEx.java:6:
error: possible loss of precision
String
arr3[] = new String[i];
^
required:
int
- The problem with Arrays is, they can't grow dynamically, once Array is initialized, you can't change the size of the array.
- What is an object ?An Object is simply a real world entity. For example, book, cat, box, bus, keyboard, person, screen, cell phone etc., all are objects.
18. What Is a Class?
A
class is a blueprint or prototype from which objects are created.
- What is instance variable ?Instance variables are those which are associated with object.
20.
If you don't initialize an instance variable, by default it is
initialized to default value.
Data Type | Default Value |
int | 0 |
float | 0 |
String | Null |
boolean | FALSE |
Reference type | null |
22. What
is Encapsulation ?
Encapsulation
is the technique of making the fields in a class private and
providing access to the fields via public methods. If you make the
fields as private, then outside of the class you can't access those
variables. So Encapsulation is also called data hiding
22.What
are the uses of getter and setter methods ?
See the below post
http://selflearningjava.blogspot.in/2014/02/object-oriented-feature-encapsulation.html
23.
Calling void methods inside the print
causes compile time error
Example
class
MethodEx{
}
MethodEx obj = new MethodEx();
System.out.println(obj.print());
}}
When
you try to compile the above program, compiler will throw the below
error.
MethodEx.java:7:
error: 'void' type not allowed here
System.out.println(obj.print());
^
1
error
Methods within a class can have the same name if they have different parameter lists.
25.
The return type is not sufficient to
differentiate two overload methods.
When
you try to differentiate two methods with the return type, then you
will get compile time error like “Method is already defined”.
class
OverloadEx{
String print(int
s){
System.out.println("I
am integer " + s);
}
void print(int a){
System.out.println("I
am integer " + a);
}
}
When
you try to compile you will get the below error
OverloadEx.java:7:
error: method print(int) is already defined in class OverloadEx
void
print(int a){
^
1
error
26.
By default a number considered to be an integer
class
OverloadEx{
void print(int s){
System.out.println("I
am integer " + s);
}
void print(byte a){
System.out.println("I
am byte " + a);
}
void print(short
a){
System.out.println("I
am short " + a);
}
void print(long a){
System.out.println("I
am long " + a);
}
public static void
main(String args[]){
OverloadEx obj =
new OverloadEx();
obj.print(10);
}
}
Output
I
am integer 10
Above
program overloads method print, with 4 parameters byte, short, int
and long. Program calls the print() with value 10. By default numbers
consider to be primitive. So print with int argument will be called.
27.
By default a real value considers as double
class
OverloadEx{
void print(float
s){
System.out.println("I
am float " + s);
}
void print(double
a){
System.out.println("I
am double " + a);
}
public static void
main(String args[]){
OverloadEx obj =
new OverloadEx();
obj.print(10.01);
}
}
Output
I
am double 10.01
28.
What is the output of the below program ?
class
OverloadEx{
void print(float
s){
System.out.println("I
am float " + s);
}
public static void
main(String args[]){
OverloadEx obj =
new OverloadEx();
obj.print(10.01);
}
}
already
discussed, a real number considers as double by default. So program
gives compile time error like below
OverloadEx.java:9:
error: method print in class OverloadEx cannot be applied to given
types;
obj.print(10.01);
^
required:
float
found:
double
reason:
actual argument double cannot be converted to float by method
invocation conversion
1
error
29.
What is the output of the below program ?
class
OverloadEx{
void print(float
s){
System.out.println("I
am float " + s);
}
public static void
main(String args[]){
OverloadEx obj =
new OverloadEx();
obj.print(10.01f);
}
}
Output
I
am float 10.01
30.
Can we make constructor and method with the same name ?
Yes,
it is valid in java
31. What
is the difference between class and instance variable ?
instance
variables are associated with object, where as class variables
associated with class, i.e, available for all objects.
32. Static methods can't access instance methods
33.
Static methods can't access instance variables
34.
Applying static for top level class is wrong in java
Example
static
class Person{
}
When
you try to compile, compiler throws the below error
Person.java:1:
error: modifier static not allowed here
static class Person{
^
1 error
36. Just like instance methods, we can overload static methods also
37. What is initializer block ?
Initializer
blocks are used to initialize instance variables.
Syntax
of Initializer Blocks
{
//initialization
Blocks code goes here
}
The
Java compiler copies initializer blocks into every constructor.
38.
A class can has more than one initializer block
39.
The data in initializer blocks copied to every constructor
41.
Initializing static fields in the initialization block is valid, but
don't use it, since the static variable is initialized every time
when a new object created.
43. Calling this from any methods other than constructor causes compiler error
class
Person{
Person(){
}
void setName(){
this();
}
}
When
you try to compile the above program, compiler throws the below error
Person.java:7:
error: call to this must be first statement in constructor
this();
^
1
error
44.
You must initialize the static final variables, other wise compiler
throws the error
45.
Static final variables must be initialized at the time of creation or
in the static block, Otherwise compiler throws the error
46.
Trying to initialize the static final variable other than at the time
of creation or in static block cause the compile time error.
48.
Final variables for objects must be initialized in the constructor or
in the instance blocks
49.
Trying to initialize final variables for objects other than in
constructor causes compile time error.
50.
How to declare global constants in java ?
Make
a variable as public static final.
51. What are the uses of nested classes ?
Uses
Of Nested classes
Increase
Encapsulation : We can make the nested
classes as private, so outside world these nested classes are not
visible. More readable code : Making small nested classes and enclosing thse with outer classes, makes the code readable
52. You can't access non static fields from static nested class directly
53.
You can't access non static methods from static nested class directly
54. To access non static fields from static nested class, object for the outer class must created
55.
Local class access the local variables only if those are declared as
final
56.
Local class access the parameters of a method only if those are
declared as final
57. Local classes are a kind of inner classes, so defining static and
non final variables causes the compile time error
58
. Local classes in static methods can only refer to static members
of the enclosing class
60.
Local class can't contain static methods, Doing so causes the
compile time error
Yes
62. Can I declare abstract class inside class ?
Yes
Yes,
Using Anonymous classes
Yes,
Using Anonymous classes
65.
An anonymous class cannot access local variables in its enclosing
scope that are not declared as final
66.
You cannot declare static initializers or member interfaces in an
anonymous class.
67.
An anonymous class can have static members provided that they are
constant variables
68.
Can I declare extra methods in Anonymous classes ?
Yes.
It is valid
Example
class AnonymousEx{
interface
Uniform{
void
setColor(String color);
String
getColor();
}
Uniform
zpschool = new Uniform(){
String color;
public void
setColor(String color){
this.color =
color;
}
public String
getColor(){
return color;
}
void print(){
System.out.println("I
am Extra method");
}
};
}
As you see in the
above program, interface Uniform has 2 abstract methods, setColor,
getColor. But the Anonymous
class has extra method print().
69.
Can
below program compile ?
class
AnonymousEx{
abstract class
Uniform{
void
setColor(String color);
String getColor();
}
}
No, Compiler throws
the below error.
AnonymousEx.java:4:
error: missing method body, or declare abstract
void setColor(String
color);
^
AnonymousEx.java:5:
error: missing method body, or declare abstract
String
getColor();
^
2 errors
To solve the above
error, make the methods in the abstract class as abstract
class AnonymousEx{
abstract class
Uniform{
abstract void
setColor(String color);
abstract String
getColor();
}
}
70.
In java, you can never put an object on stack, only object reference
can be stored on stack.
71. is calling to System.gc() runs the garbage collector immediately ?
No,
Calling the gc method suggests that the Java Virtual Machine expend
effort toward recycling unused objects in order to make the memory
they currently occupy available for quick reuse.
No
difference. System.gc() calls the gc() of Runtime class internally.
Yes
74.
You can call main method in any way like
public
static void main(String args[])
(OR)
static public void main(String args[])
75.
. Why is the Java main method static?
Before
the main method is called, no objects are created. Having the static
keyword means the method can be called without creating any objects
first.
76.
Why main method is public static in Java
main
method should be called by JVM, which is not part of the project, so
to make it available for the JVM, main method declaed as public.
Before
the main method is called, no objects are created. Having the static
keyword means the method can be called without creating any objects
first.
77.
Why main() in java void ?
In
Programming languages, return codes tells the status of particular
program/process/function execution. Every command returns an exit
status (sometimes referred to as a return status or exit code). A
successful command returns a 0, while an unsuccessful one returns a
non-zero value that usually can be interpreted as an error code.
Java
supports multi threading, so the main thread may finishes first,
before other threads completes execution, So what status code the
main thread returns, even it don't know about the executions of other
threads started in main method. So in Java there is void return type
for main method.
78.
Is the below program runs ?
class
MainEx{
public static void main(){
}
}
Above
program compiles fine, but Runtime, JVM tries to find the main method
with signature
public
static void main(String args[])
there
is no main method with the above signature in the program, so below
run time error thrown
Error:
Main method not found in class MainEx, please define the main method
as:
public static void main(String[] args)
Yes,
Constructors are like special methods in java.
80.
If a class implements an interface, then it must implement all the
methods in the interface, other wise, the class must declared as a
abstract.
82. All the variables in the interface are final by default, so updating the variable in a class causes the compile time error
83.
If a class implementing multiple interfaces, and more than one
interface has same variable definition, then using the variable
causes ambiguity to the compiler
84.
Can interface be final?
No, Interfaces
can't be final. A final class is not extendable. If you make
interface as final, there is no use of it. So it is illegal in java.
Yes, but no point
in putting abstract modifier for the interface, since all the method
in interface are abstract by default
A single interface
can extend any number of other interfaces.
Interface
Interface1{
}
Yes,
It is Perfectly valid.
88. Can I use super and this in one constructor ?
No,
call to super or this must be first statement in constructor. So
you can use either super or this but not both.
89. Object class is the super class for all the classes
90. Sub classes can access the all the data of super classes, other than
private fields and private methods
91. Is run time polymorphism applicable to static methods also ?
No, static methods
can't be overridden, they just hide the static method of the super
class.
No
No, compiler
throws an error.
94.
What is wrong with the below program ?
class Animal{
String str =
"Animal";
void print(){
System.out.println("I
am animal");
}
}
class Tiger extends
Animal{
String str =
"Tiger";
private void
print(){
System.out.println("I
am Tiger");
}
}
When you tries to
compile the above program, compiler throws the “Weaker access
specifier error”
Tiger.java:3:
error: print() in Tiger cannot override print() in Animal
private
void print(){
^
attempting
to assign weaker access privileges; was package
1
error
The access specifier
for an overriding method can allow more, but not less, access than
the overridden method. For example, a default instance method in the
superclass can be made public, protected, default, but not private,
in the subclass.
Static binding
occurs at compile time, where as Dynamic binding at run time.
Dynamic method dispatch is an example for Dynamic binding.
96.
What is wrong with the below program ?
class Animal{
String str =
"Animal";
void print(){
System.out.println("I
am animal");
}
}
class Tiger extends
Animal{
String str =
"Tiger";
void print()throws
Exception{
System.out.println("I
am Tiger");
}
}
The overriding
method cannot throw any exceptions that are not thrown by the
overridden method.
When you tries to
compile the above program compiler throws the below error.
Tiger.java:3:
error: print() in Tiger cannot override print() in Animal
void
print()throws Exception{
^
overridden
method does not throw Exception
1
error
A subclass inherits
all the members (fields, methods, and nested classes) from its
superclass. Constructors are not members, so they are not inherited
by subclasses.
Example
class
Animal{
void print()throws
Exception{
System.out.println("I
am animal");
}
}
class Tiger extends
Animal{
void print(){
System.out.println("I
am Tiger");
}
void show(){
System.out.println("I
am show method");
}
}
class
DynamicMethodDispatchEx{
public static void
main(String args[]){
Animal anim1 = new
Tiger();
anim1.show();
}
}
When you are trying
to compile the program, below error thrown, since the reference
variable of class Animal, “anim1” trying to call the method
“show: which is not defined in the class “Animal”.
DynamicMethodDispatchEx.java:5:
error: cannot find symbol
anim1.show();
^
symbol:
method show()
location:
variable anim1 of type Animal
1
error
No
class Animal{
int getAnimal(){
return 0;
}
}
class Tiger extends
Animal{
byte getAnimal(){
return 0;
}
}
When you tries to
compile the class “Tiger”, compiler throws below error
Tiger.java:2:
error: getAnimal() in Tiger cannot override getAnimal() in Animal
byte
getAnimal(){
^
return
type byte is not compatible with int
1
error
101.
Can a sub class instance method hides the super class static method
?
No, Compiler error
thrown.
Example
class
Animal{
static void
printMsg(){
System.out.println("I
am the super class static method");
}
}
class Tiger extends
Animal{
void printMsg(){
System.out.println("I
am the sub class static method");
}
}
When you try to
compile the class Tiger, compiler throws the below error. You will
get a compile-time error if you attempt to change an instance method
in the superclass to a class method in the subclass, and vice versa.
Tiger.java:2:
error: printMsg() in Tiger cannot override printMsg() in Animal
void
printMsg(){
^
overridden
method is static
1 error
102.
What is wrong with the below program ?
class Animal{
public
static
void printMsg(){
System.out.println("I
am the super class static method");
}
}
class Tiger extends
Animal{
static void
printMsg(){
System.out.println("I
am the sub class static method");
}
}
The access specifier
for an hiding method can allow more, but not less, access than the
hidden method. For example, a public static method in the
superclass can be made public, but not private, protected and
default.
When you tries to
compile the class Tiger, compiler throws the below error.
Tiger.java:2:
error: printMsg() in Tiger cannot override printMsg() in Animal
static
void printMsg(){
^
attempting to
assign weaker access privileges; was public
1 error
103.
What is wrong with the below program ?
class
Animal{
static void
printMsg(){
System.out.println("I
am the super class static method");
}
}
class Tiger extends
Animal{
static void
printMsg()throws Exception{
System.out.println("I
am the sub class static method");
}
}
The hiding method
cannot throw any exceptions that are not thrown by the overridden
method.
When you tries to
compile the above program compiler throws the below error.
Tiger.java:2:
error: printMsg() in Tiger cannot override printMsg() in Animal
static void
printMsg()throws Exception{
^
overridden
method does not throw Exception
1 error
No
105.
Can interface has static methods ?
No
No, Compiler error
thrown.
107. Super can't be used in static context, whether it is inside static
method or block.
108.
Call to super must be first statement in constructor
109.
Calling super class constructors in any methods other than
constructors, cause compiler error.
110.
If a final variable holds a reference to an object, then the state
of the object may be changed by operations on the object, but the
variable will always refer to the same object.
Blank final
variable in Java is a final variable which is not initialized while
declaration, instead they are initialized on constructor or
initializer blocks or static initialization blocks.
Refer below link
for detailed explanation
112.
Both the private and final methods can't be overridden.
Since private already implies that a subclass may not override a method, declaring a private method to be final is redundant. It won't cause any problem to your program, Program compiles fine
118. Can I create constructor inside the abstract class ?
Yes, but you can't
initialize an object for the abstract class.
abstract class
Animal{
String name;
Animal(String
name){
this.name = name;
}
}
No, If you make abstract class as final, then no other class can able to extend it. So, compiler throws error. Abstract and final can't be used together.
120.
Can I make abstract method as final ?
No, If you make
abstract method as final, then no other class can able to override
it. So, compiler throws error. Abstract and final can't be used
together.
Yes, it is valid,
but creation of object to the abstract is not possible.
122.
An abstract class allowed to have static methods, where as
interfaces have instance methods only.
123.
The methods declared in interface are abstract by default.
No
125.
Can an abstract class have a final method?
Yes, it can. But the
final method cannot be abstract itself
126. If I can simulate Abstract class as Interface, why java provides Interface?
because you can
implement multiple interfaces, but can't extend multiple abstract
classes. To support multiple inheritance, interfaces are necessary.
127. What are the differnces between abstract class and interface ?
- Interfaces support multiple inheritance, where as abstract classes are not.
- All the fields declared in interface are static final, where as you can declare static, non static, final, non-final variables in abstract class. There is no restriction in abstract classes.
- All the methods declared in interface are abstract by default. It is not necessary for an abstract class to have abstract methods.
- Abstract class can have concrete methods, where as interface don't
- Abstract class can have constructor, where as interface not.
- Abstract classes are used to share the common behavior. If an abstract class contains only abstract method declarations, it should be declared as an interface instead.
- An abstract class can implement the interface, it doesn't mean that it provides implementation for all the methods in the interface.
You may like
No comments:
Post a Comment