Friday, July 19, 2013

13. What are nested class in Java ?

A class within a class is called nested class.

Nested classes are divided into two categories: static and non-static. Nested classes that are declared static are simply called static nested classes. Non-static nested classes are called inner classes.

class myOutterClass{

static class my staticClass {
/* -- -- --
   -- -- --*/
}

class myInnerClass{
/* -- -- --
   -- -- --*/
}

}


More information on nested class in official link below
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Thursday, July 18, 2013

12. Final keyword on variables, method and classes

1. Final variables:

"The values in the variables declared as final cannot be modified or changed"

Example

public class testbox2 {
final int b;
testbox2(int input) <<-- Constructor
{
b=input; << -- Final vari can be assigned only in constructor other than during declaration/initialization.
}

public static void main (String[] args)
{
testbox2 tb2= new testbox2(45); << -- Passing parameter to constructor allowed
tb2.b=123; << -- Illegal Not permitted
System.out.println(tb2.b);

}
}


2. Final Methods:

"Final methods cannot be overridden"

Note: Final method is available to the subclass it only can't be overridden.

Example

Public myClass {

final myMethod(){
/* --- ---
   --- --- */
}

}

Public mySubClass extend myClass{

myMethod<< -- Illegal Not permitted - Final method cannot be overridden
/* --- ---
   --- --- */
}
}

3. Final Classes:

"Final class cannot be inherited"

Example

Public final myClass {
}

mySubClass extends myClass{ << -- Illegal Not permitted - Final class cannot inherit
}


11. What is the significance try and finally without the catch statement in java?

This type of statements are very useful whenever the method containing the try statement throws an exception.

Example:

myMethod throws ArithematicException
{
try{
a=1/0;
}  <--- Observe that there is no catch block
finally{
System.out.println("the above try obviously throws exception");
}
}

10. What is Synchronized in Java ?

In Java "Synchronized" appears for synchronized methods and synchronized statements.

To make a method synchronized, simply add the synchronized keyword to its declaration:

public class SynchronizedCounter {

    private int c = 0;

    public synchronized void increment() {
        c++;
    }

    public synchronized void decrement() {
        c--;
    }

    public synchronized int value() {
        return c;
    }
}

9. How to call method of a super class from the subclass ?

We can call a method of super class from the subclass using the "super" keyword.

Example:

mySuperClass {
mySuperClassVar1;
public void mySuperClassMethod1(){
/*---- -- -- -- 
  ---- -- -- -- */
}
}

mySubClass extends mySuperClass{
mySubClassVar;
/*method overriding*/
mySuperClassMethod1()
{
super.mySuperClassMethod1() -> Calls the super class method
/*---- -- -- -- 
  ---- -- -- -- */
}
}

Friday, July 12, 2013

8. What is thread-safe or thread safe programming?

Thread safety is a computer programming concept applicable in the context of multi-threaded programs. A piece of code is thread-safe if it only manipulates shared data structures in a manner that guarantees safe execution by multiple threads at the same time.



7. What is String Buffer compare with String ?

String buffer is a thread-safe, mutable sequence of characters. A string buffer is like a String, but can be modified. At any point in time it contains some particular sequence of characters, but the length and content of the sequence can be changed through certain method calls.

For example, if z refers to a string buffer object whose current contents are "start", then the method call z.append("le") would cause the string buffer to contain "startle", whereas z.insert(4, "le") would alter the string buffer to contain "starlet".

Popular methods on String buffer are :
1. insert
2. append
3. capacity
4. delete

for more information on StringBuffer refer below

Oracle Docs http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html
.
Whereas String is a immutable sequence of characters and differs from StringBuffer which is mutable.