JAVA FAQS1

What is JAVA ?
Java is a pure object oriented programming language, which has derived C syntax and C++ object oriented programming features.
Is a compiled and interpreted language and is platform independent and
Can do graphics, networking, multithreading. It was initially called as OAK.

What r the four cornerstones of OOP ?
Abstraction : Can manage complexity through abstraction. Gives the complete overview of a particular task and the details are handled by its derived classes. Ex : Car.
Encapsulation : Nothing but data hiding, like the variables declared under private of a particular class are accessed only in that class and cannot access in any other the class.
Inheritance : Is the process in which one object acquires the properties of another object, ie., derived object.
Polymorphism : One method different forms, ie., method overriding and interfaces are the examples of polymorphism.

what is downcasting ?
Doing a cast from a base class to a more specific class. The cast does not convert the object, just asserts it actually is a more specific extended object.
e.g. Dalamatian d = (Dalmatian) aDog;
Most people will stare blankly at you if you use the word downcast. Just use cast.

What is Java Interpreter ?
It is Java Virtual Machine. ie., a java program compiles the Unicode to intermediary code called as Bytecode which is not an executable code. that is executed by Java interpreter.

What are Java Buzzwords ?Simple : Easy to learn.
Secure : Provided by firewalls between networked applications.
Portable : Can be dynamically downloaded at various platforms connect to internet.
OOP : Four Corner stones.
Multithread : Can perform more than one task concurrently in a single program.
Robust : overcomes problems of de-allocation of memory and exceptions.
Interpreted : Convert into byte code and the executes by JVM.
Distributed : Concept of RMI.
Dynamic : Verifying and accessing objects at run time.


What are public static void main(String args[]) and System.out.println() ?Public keyword is an access specifier.
Static allows main() to be called without having to instantiate a particular instance of class.
Void does not return any value.
main() is the method where java application begins.
String args[] receives any command line arguments during runtime.

System is a predefined class that provides access to the system.
out is output stream connected to console.
println displays the output.

What are identifiers and literals ?Identifiers are the variables that are declared under particular datatype.
Literals are the values assigned to the Identifiers.

What is Typed language ?This means that the variables are at first must be declared by a particular datatype whereas this is not the case with javascript.

Scope and lifetime of variables ?
scope of variables is only to that particular block
lifetime will be till the block ends.
variables declared above the block within the class are valid to that inner block also.

Casting Incompatible types ?Can be done either implicitly and explicitly. ie., int b = (int) c; where c is float.
There are two types of castings related to classes : 1) unicast and 2)multicast.

Declaration of Arrays ?
int a[] = new int[10]; int a[][] = new int[2][2];

What does String define ?String is an array of characters, but in java it defines an object.
and the variable of type string can be assigned to another variable of type String.

Define class ?A class is a one which defines new datatype, and is template of an object, and is a protoype.

Types of Constructors ?
Default Constructor, Parameterized Constructor, Copy Constructors
Garbage collector takes the responsibility releasing the memory of object implicitly.

Define this , finalize, and final( for variables, methods, classes ) ?this is used inside any method to refer to the current object. and is mostly avoided.
finalize method is used to perform the actions specified in this method just before an object is destroyed. ie just before garbage collector process.
final with variables is we cant change the literals of the variables ie nothing but const.
final with method means we cant override that method.
final with class means we cannot have derived classes of that particular class.

What is passed by reference ?
Objects are passed by reference.
In java we can create an object pointing to a particular location ie NULL location by specifying : ;
and also can create object that allocates space for the variables declared in that particular class by specifying : = new ();

Explain about Static ?When a member is declared as static it can be accessed before any objects of its class are created and without any reference to any object.
these are global variables, no copy of these variables can be made.
static can also be declared for methods. and cannot refer to this or super.

What r nested classes ?
There are two types : static and non-static.
static class means the members in its enclosing class (class within class) can be accessed by creating an object and cannot be accessed directly without creating the object.
non-static class means inner class and can be accessed directly with the object created for the outer class no need to create again an object like static class.

Briefly about super() ?This is used to initialize constructor of base class from the derived class and also access the variables of base class like super.i = 10.

method overloading : same method name with different arguments.
method overriding : same method name and same number of arguments.

What is Dynamic Method Dispatch ?this is the mechanism by which a call to an overridden function is resolved at runtime rather than at compile time. And this is how Java implements runtime polymorphism.

What r abstract classes ?
To create a superclass that only defines generalized form that will be shared by all its subclasses, leaving it to each subclass to fill in the details.
• we cannot declare abstract constructors and abstract static methods.
• An abstract class contains at least one abstract method.
• And this abstract class is not directly instantiated with new operator.
• Can create a reference to abstract class and can be point to subclass object.

What is Object class and java.lang ?Object class is the superclass of all the classes and means that reference variable of type object can refer to an object of any other class. and also defines methods like finalise,wait.
java.lang contains all the basic language functions and is imported in all the programs implicitly.

What r packages and why ? how to execute a program in a package ?Package is a set of classes, which can be accessed by themselves and cannot be accessed outside the package. and can be defined as package .
Package name and the directory name must be the same.
And the execution of programs in package is done by : java mypack.account
where mypack is directory name and account is program name.

What does a java source file can contain ?
specifying package name.
importing more than one package
specifying classes and there methods
………………

Why interface and what extends what ?Interface is similar to abstract classes. this define only method declarations and definitions are specified in the classes which implements these interfaces.
and “ one interface multiple methods “ signifies the polymorphism concept.
Here an interface can extend another interface.
and a class implements more than one interface.

How Exception handling is done in Java ?
Is managed via 5 keywords :
try : statements that you want to monitor the exceptions contain in try block.
catch : the exception thrown by try is catched by this.
throw : to manually throw exception we go for this.
throws : Exception that is thrown out of a method must be specified by throws after the method declaration.
finally : this block is executed whether or not an exception is thrown. and also it is executed just before the method returns. and this is optional block.

What r checked and unchecked Exceptions ?* Unchecked Exceptions are those which r not included in throws list and are derived from RuntimeException which are automatically available and are in java.lang.
* Checked Exceptions are those which cannot handle by itself.

What is Thread and multithread ? How is thread created ?
Thread is a small unit of dispatchable code. ie., a single program can perform more than one task simultaneously. This is a light weight process and is of low cost.
MultiThreading writes more efficient programs and make maximum use of CPU ie., it minimizes its idle time.
A Thread is created in two ways :
1) By implementing the runnable interface.
2) By extending the Thread class itself.
First way is used to update only run() method. ie we can use only run() method in this class.
Second way is used to define several methods overridden by derived class.
Generally we override only run() method so we go for runnable interface.

What are the various states and methods of thread ?States : Running, Ready to run, Suspended, Resumed, blocked and terminated.
Methods : getName, getPriority, isAlive, join, run, sleep, start.
Thread priorities are MIN_PRIORITY, MAX_PRIORITY, NORM_PRIORITY.

What is interprocess synchronization ? ( also called Monitor, Semaphore )
Consider a small box namely MONITOR that can hold only one thread. Once a thread enters a monitor, all other threads must wait until that thread exits the monitor.
In this way, a monitor can be used to protect a shared asset from being manipulated by more than one thread at a time.
Once a thread is inside a synchronized method, no other thread can call any other synchronized method on the same object.

What is Stream ?
It is an Abstraction that either produces or consumes information.
Two types : Byte Stream and Character Stream.
Print Writer is to Print output in Real World Programs.

How to enter data in java ?First specify :
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
then say br.read(), and this is put in do while loop to receive as many as we require.

Define Inline Functions ?In ordinary functions, during the program execution, at any function call the controller jumps to the function definition, performs operation and returns the value, then comes back to the program.
whereas in Inline functions the controller copies the complete function definition into the program and performs operations.

What are the four components in URL ?http:// www. yahoo .com : 8080 / index.html
http: --- > is protocol
www. yahoo .com ---à is IP address
8080 --à port number and is a pointer to memory location.
index.html --à file path to be loaded

What is a StringTokenizer ?String Tokenizer provide parsing process in which it identifies the delimiters provided by the user , by default delimiters are spaces, tab, newline etc. and separates them from the tokens. Tokens are those which are separated by delimiters.

What are macros and Inline functions ? Which is best and Difference ?
Inline functions do Parameter passing, where as Macros do Text Substitution.
Its better to go for Inline functions than macros, else you may get different results.

How to Declare a pointer to function ?
int func_name(float) //ordinary declaration of function.
int (*func_name_ptr)(float) // Declaration of pointer.
Assigning the Address can be done as :
func_name_ptr = func_name. // Return type and Signatures must be Same.
Invoking a function pointer : int x = (*func_name_ptr)(values as specified);

What is a file ? What is a Directory ?
File : Describes the properties of file, like permissions, time, date, directory path, and to navigate subdirectory hierarchies.
Directory : Is a file that contains list of other files and directories .

What is Serialization ?The process of writing the state of an object to a byte stream. and can restore these objects by using deserialization.
Is also need to implement RMI, which allows a java object of one machine to invoke java object of another machine.
ie., the object is passed as an argument by serializing it and the receiving machine deserializes it.

Interfaces include by java.lang ?
Java.lang is the package of all the classes.
And is automatically imported into all Java programs.
Intefaces : Cloneable, Comparable, Runnable.

What is user defined exception?To handle situations specific to our applications we go for User Defined Exceptions.
and are defined by User using throw keyword.

What is the difference between process and threads?Process is a heavy weight task and is more cost.
Thread is a light weight task which is of low cost.
A Program can contain more than one thread.
A program under execution is called as process.

What is the difference between CGI and Servlet ?
CGI suffered serious performance problems. servlets performance is better.
CGI create separate process to handle client request. and Servlets do not.
CGI is platform dependent, whereas Servlet is platform-independent b’cauz written in java.
Servlets can communicate with applets, databases and RMI mechanisms.

Quick Revision Tips

Quick Revision Tips
1. An identifier in java must begin with a letter , a dollar sign($), or an underscore (-); subsequent characters may be letters, dollar signs, underscores, or digits.
2. There are three top-level elements that may appear in a file. None of these elements is required. If they are present, then they must appear in the following order:
-package declaration         
-import statements        
-class definitions 
3. A java source file (.java file) can't have more than one public class , interface or combination of both. 
4. "goto" is a keyword in Java.
5. NULL is not a keyword, but null is a keyword in Java.
6. A final class can't be subclassed.
7. A final method can't be overridden but a non final method can be overridden to final method.
8. Abstract classes can't be instantiated and should be subclassed.
9. Primitive Wrapper classes are immutable.
10. A static method can't refer to "this" or "super".
11. A static method can't be overridden to non-static and vice versa.
12. The variables in java can have the same name as method or class.
13. All the static variables are initialized when the class is loaded.
14. An interface can extend more than one interface, while a class can extend only one class.
15. The variables in an interface are implicitly final and static. If the interface , itself, is declared as public the methods and variables are implicitly public.
16. Variables cannot be synchronized.
17. Instance variables of a class are automatically initialized, but local variables of a function need to be initialized explicitly.
18. An abstract method cannot be static because the static methods can't be overridden.
19. The lifecycle methods of an Applet are init(), start(), stop() and destroy(). 
20. The transient keyword is applicable to variables only. 
21. The native keyword is applicable to methods only.
22. The final keyword is applicable to methods , variables and classes.
23. The abstract keyword is applicable to methods and classes.
24. The static keyword is applicable to variables, methods or a block of code called static initializes.
25. A native method can't be abstract but it can throw exception(s).
26. A final class cannot have abstract methods.
27. A class can't be both abstract and final.
28. A transient variable may not be serialized.
29. All methods of a final class are automatically final.
30. While casting one class to another subclass to superclass is allowed without any type casting.
e.g.. A extends B , B b = new A(); is valid but not the reverse.
31. The String class in java is immutable. Once an instance is created, the string it contains cannot be changed.
e.g. String s1 = new String("test"); s1.concat("test1"); Even after calling concat() method on s1, the value of s1 will remain to be "test". What actually happens is a new instance is created.
But the StringBuffer class is mutable.
32. The + and += operators are the only cases of operator overloading in java and is applicable to Strings.
33. Bit-wise operators - &, ^ and | operate on numeric and boolean operands.
34. The short circuit logical operators && and || provide logical AND and OR operations on boolean types and unlike & and | , these are not applicable to integral types. The valuable additional feature provided by these operators is the right operand is not evaluated if the result of the operation can be determined after evaluating only the left operand.
35. The difference between x = ++y; and x = y++;
In the first case y will be incremented first and then assigned to x. In second case first y will be assigned to x then it will be incremented.
36. Please make sure you know the difference between << , >> and >>>(unsigned rightshift) operators.
37. The initialization values for different data types in java is as follows
  byte = 0, int = 0, short = 0, char = '\u0000', long = 0L, float = 0.0f, double = 0.0d, boolean = false,
 object referenece (of any object) = null.
38. Setting the object reference to null makes it a candidate for garbage collection.
39. An overriding method may not throw a checked exception unless the overridden method also throws that exception or a superclass of that exception.
40. Interface methods can't be native, static, synchronized, final, private, protected or abstract.
41. Abstract classes can have constructors , and it can be called by super() when its subclassed.
42. A final variable is a constant and a static variable is like a global variable.
43. The String class is a final class, it can't be subclassed.
44. The Math class has a private constructor, it can't be instantiated.
45. The random() method of Math class in java returns a random number , a double , between 0.0 and 1.0.
46. The java.lang.Throwable class has two subclasses : Exception and Error.
47. An Error indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.
48. The two kinds of exceptions in java are : Compile time (Checked ) and Run time (Unchecked) exceptions. All subclasses of Exception except the RunTimeException and its subclasses are checked exceptions.
Examples of Checked exception : IOException, ClassNotFoundException.
Examples of Runtime exception :ArrayIndexOutOfBoundsException,NullPointerException, ClassCastException, ArithmeticException, NumberFormatException.
49. The unchecked exceptions do not have to be caught.
50. A try block may not be followed by a catch but in that case, finally block must follow try.
51. While using multiple catch blocks, the type of exception caught must progress from the most specific exception to catch to the superclass(es) of these exceptions.
52. More than one exception can be listed in the throws clause of a method using commas. e.g. public void myMethod() throws IOException, ArithmeticException.
53. On dividing an integer by 0 in java will throw ArithmeticException.
54. The various methods of Java.lang.Object are
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString and wait. 
55. The Java.lang.System is a final class and can't be subclassed.
56. Garbage collection in java cannot be forced. The methods used to call garbage collection thread are System.gc() and Runtime.gc()
57. To perform some task when an object is about to be garbage collected, you can override the finalize() method of the Object class. The JVM only invokes finalize() method once per object. The signature of finalize() method of Object class is : protected void finalize() throws Throwable.
58. The parent classes of input and output streams : InputStream and OutputStream class are abstract classes.
59. File class can't be used to create a new file. For that any other output stream class such as FileOutputStream or filter streams like PrintWriter should be used. Please note that java will create a file only when the file is not available.
60. For the RandomAccessFile constructor, the mode argument must either be equal to "r" or "rw".
61. In java, console input is accomplished by reading from System.in .
62. System.in is an object of type InputStream; System.out and System.err are objects of type PrintStream.
63. Both FileInputStream and FileOutputStream classes throws FileNotFoundException. In earlier versions of java, FileOutputStream() threw an IOException when an output could not be created.
64. System.in is an object of type InputStream; System.out and System.err are objects of type PrintStream.
65. A method can't be overridden to be more private. e.g.. a public method can only be overridden to be public.
66. Both primitives and object references can be cast.
67. If inner class is declared in a method then it can access only final variables of the particular method but can access all variables of the enclosing class.
68. To refer to a field or method in the outer class instance from within the inner class, use Outer.this.fieldname .
69. Inner classes may not declare static initializers or static members unless they are compile time constants i.e. static final var = value;
70. A nested class cannot have the same name as any of its enclosing classes.
71. Inner class may be private, protected, final, abstract or static.
72. An example of creation of instance of an inner class from some other class:
class Outer
{
    public class Inner{}
}

class Another
{
    public void amethod()
    {
        Outer.Inner i = new Outer().new Inner();
    }
}
73. Classes defined in methods can be anonymous, in which case they must be instantiated at the same point they are defined. These classes can't have explicit constructor and may implement interface or extend other classes.
74. The Thread class resides in java.lang package and need not be imported.
75. The sleep and yield methods of Thread class are static methods.
76. The range of Thread priority in java is 1-10. The minimum priority is 1 and the maximum is 10. The default priority of any thread in java is 5.
77. There are two ways to provide the behavior of a thread in java: extending the Thread class or implementing the Runnable interface.
78. The only method of Runnable interface is "public void run();".
79. New thread take on the priority of the thread that spawned it.
80. Using the synchronized keyword in the method declaration, requires a thread obtain the lock for this object before it can execute the method.
81. A synchronized method can be overridden to be not synchronized and vice versa.
82. In java terminology, a monitor is any object that has some synchronized code.
83. Both wait() and notify() methods must be called in synchronized code.
84. The notify() mthod moves one thread, that is waiting on this object's monitor, into the Ready state. This could be any of the waiting threads.
85. The notifyAll() method moves all threads, waiting on this object's monitor into the Ready state.
86. Every object has a lock and at any moment that lock is controlled by, at most, one single thread.
87. There are two ways to mark code as synchronized:
a.) Synchronize an entire method by putting the synchronized modifier in the method's declaration.
b.) Synchronize a subset of a method by surrounding the desired lines of code with curly brackets ({}).
88. The argument to switch can be either byte, short , char or int.
89. The expression for an if and while statement in java must be a boolean.
90. Breaking to a label (using break ;) means that the loop at the label will be terminated and any outer loop will keep iterating. While a continue to a label (using continue ;) continues execution with the next iteration of the labeled loop.
91. A static method can only call static variables or other static methods, without using the instance of the class. e.g. main() method can't directly access any non static method or variable, but using the instance of the class it can.
92. instanceof is a java keyword not instanceOf.
93. The if() statement in java takes only boolean as an argument. Please note that if (a=true){}, provided a is of type boolean is a valid statement and the code inside the if block will be executed. 
94. The (-0.0 == 0.0) will return true, while (5.0==-5.0) will return false.
95. An abstract class may not have even a single abstract method but if a class has an abstract method it has to be declared as abstract.
96. Collection is an Interface where as Collections is a helper class.
97. The default Layout Manager for Panel and Applet is Flow. For Frame and Window its BorderLayout.
98. The FlowLayout always honors the a component's preferred size.
99. BorderLayout honors the preferred width of components on the East and West, while the preferred height is honored for the components in the North and South.
100. The java.awt.event package provides seven adapter classes, one for each listener interface. All these adapter classes have do-nothing methods (empty bodies) , implementing listener interface.
101. A componenet subclass may handle its own events by calling enableEvents(), passing in an even mask.
102. The Listener interfaces inherit directly from java.util.EventListener interface.
103. A Container in java is a Component (Container extends Component) that can contain other components. 
104. Graphics class is abstract, hence cannot be instantiated.
105. The repaint() method invokes a component's update() method() which in turn invokes paint() method.
106. The Applet class extends Panel, Frame class extends Window.
107. A String in java is initialized to null, not empty string and an empty string is not same as a null string.
108. The statement float f = 5.0; will give compilation error as default type for floating values is double and double can't be directly assigned to float without casting.
109. The equals() method in String class compares the values of two Strings while == compares the memory address of the objects being compared.
e.g. String s = new String("test"); String s1 = new String("test");
s.equals(s1) will return true while s==s1 will return false.
110. The valueOf() method converts data from its internal format into a human-readable form. It is a static method that is overloaded within String class for all of Java's built-in types, so that each type can be converted properly into a string.
111. The main difference between Vector and ArrayList is that Vector is synchronized while the ArrayList is not.
112. A Set is a collection, which cannot contain any duplicate elements and has no explicit order to its elements.
113. A List is a collection, which can contain duplicate elements, and the elements are ordered.
114. A Map does not implement the Collection interface.
115. The following definition of main method is valid : static public void main(String[] args).
116. The main() method can be declared final. 
117. The example of array declaration along with initialization - int k[] = new int[]{1,2,3,4,9};
118. The size of an array is given by arrayname.length.
119. The local variables (variables declared inside method) are not initialized by default. But the array elements are always initialized wherever they are defined be it class level or method level.
120. In an array , the first element is at index 0 and the last at length-1. Please note that length is a special array variable and not a method.
121. The octal number in java is preceded by 0 while the hexadecimal by 0x (x may be in small case or upper case)
e.g.
octal :022
hexadecimal :0x12
122. A constructor cannot be native, abstract, static, synchronized or final.
123. Constructors are not inherited so not possible to override them.
124. A constructor body can include a return statement providing no value is returned .
125. A constructor never return a value. If you specify a return value, the JVM (java virtual machine) will interpret it as a method.
126. A call to this() or super() in a constructor must be placed at the first line.
127. If a class contains no constructor declarations, then a default constructor that takes no arguments is supplied. This default constructor invokes the no-argument constructor of the super class  via super() call (if there is any super class).
128. Be careful for static and abstract key word in the program.
129. Also be careful for private keyword in front of a class.
130. The UTF characters in java are as big as they need to be while Unicode characters are all 16 bits.