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.

6. How to convert String “123” to Integer or int?

There are many ways of converting a String to Integer and String to int, Below are the most popular:

Converting String to Integer (not a primitive type)

1. Integer myInteger = new Integer("myString");

Converting String to int (primitive type)

1. int a = Integer.parseInt("myString"); // parseInt returns int
2. int a = Integer.valueOf("myString"); //  returns Integer

All the above statements throws exception (Java.lang.NumberFormatException) if the passed argument "myString" is not a number.

5. How to remove space from a String example “ X Y Z ” must become "XYZ"?

Many operations can be performed on a "String" using the combination of regular expressions pattern class of the Java Util package and the String's replace all functionality.

 String myString = inputText.replaceAll("\\s+","");

Please note that if we call the replaceAll function on the inputText the String inputText as such is not disturbed. This is because String is immutable class, ie invoking the functions contained in a String does not affect the value contained in the String.

Below are the quick list of useful escape sequence of the regular expression.

\w = Anything that is a word character

\W = Anything that isn't a word character (including punctuation etc)

\s = Anything that is a space character (including space, tab characters etc)

\S = Anything that isn't a space character (including both letters and numbers, as well as punctuation etc)

Other useful regex are given below.

Characters
x The character x
\\ The backslash character
\0n The character with octal value 0n (0 <= n <= 7)
\0nn The character with octal value 0nn (0 <= n <= 7)
\0mnn The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh The character with hexadecimal value 0xhh
\uhhhh The character with hexadecimal value 0xhhhh
\t The tab character ('\u0009')
\n The newline (line feed) character ('\u000A')
\r The carriage-return character ('\u000D')
\f The form-feed character ('\u000C')
\a The alert (bell) character ('\u0007')
\e The escape character ('\u001B')
\cx The control character corresponding to x

Character classes
[abc] a, b, or c (simple class)
[^abc] Any character except a, b, or c (negation)
[a-zA-Z] a through z or A through Z, inclusive (range)
[a-d[m-p]] a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]] d, e, or f (intersection)
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction)

Predefined character classes
. Any character (may or may not match line terminators)
\d A digit: [0-9]
\D A non-digit: [^0-9]
\s A whitespace character: [ \t\n\x0B\f\r]
\S A non-whitespace character: [^\s]
\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]

POSIX character classes (US-ASCII only)
\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
\p{XDigit} A hexadecimal digit: [0-9a-fA-F]
\p{Space} A whitespace character: [ \t\n\x0B\f\r]

Classes for Unicode blocks and categories
\p{InGreek} A character in the Greek block (simple block)
\p{Lu} An uppercase letter (simple category)
\p{Sc} A currency symbol
\P{InGreek} Any character except one in the Greek block (negation)
[\p{L}&&[^\p{Lu}]] Any letter except an uppercase letter (subtraction)

Boundary matchers
^ The beginning of a line
$ The end of a line
\b A word boundary
\B A non-word boundary
\A The beginning of the input
\G The end of the previous match
\Z The end of the input but for the final terminator, if any
\z The end of the input

Greedy quantifiers
X? X, once or not at all
X* X, zero or more times
X+ X, one or more times
X{n} X, exactly n times
X{n,} X, at least n times
X{n,m} X, at least n but not more than m times

Reluctant quantifiers
X?? X, once or not at all
X*? X, zero or more times
X+? X, one or more times
X{n}? X, exactly n times
X{n,}? X, at least n times
X{n,m}? X, at least n but not more than m times

Possessive quantifiers
X?+ X, once or not at all
X*+ X, zero or more times
X++ X, one or more times
X{n}+ X, exactly n times
X{n,}+ X, at least n times
X{n,m}+ X, at least n but not more than m times

Logical operators
XY X followed by Y
X|Y Either X or Y
(X) X, as a capturing group

Back references
\n Whatever the nth capturing group matched

Quotation
\ Nothing, but quotes the following character
\Q Nothing, but quotes all characters until \E
\E Nothing, but ends quoting started by \Q

Special constructs (non-capturing)
(?:X) X, as a non-capturing group
(?idmsux-idmsux) Nothing, but turns match flags on - off
(?idmsux-idmsux:X)   X, as a non-capturing group with the given flags on - off
(?=X) X, via zero-width positive lookahead
(?!X) X, via zero-width negative lookahead
(?<=X) X, via zero-width positive lookbehind
(?<!X) X, via zero-width negative lookbehind
(?>X) X, as an independent, non-capturing group

4. What is Dependency Injection?

Dependency injection is a software design pattern that allows the removal of hard-coded dependencies and makes it possible to change them, whether at run-time or compile-time. Source Wikipedia

3. What's AutoBoxing in Java?

AutoBoxing was introduced in Java 5 (previously Java 1.5)

AutoBoxing is a feature of Java that automatically casts or converts a primitive data type to an equivalent object reference data type, un-boxing as you must have guessed by now is the reverse.

For example,

int -> Integer casting is called Auto Boxing
Integer -> int casting is called Auto Unboxing

This feature was introduced to eliminate the obvious conversion from primitive datatypes and object reference (wrapper) datatypes in certain operations with collections such as arraylist etc. Since the introduction of autoboxing one need not explicitly specify or cast int to Integer and vice versa.

Example:

ArrayList<Integer> myIntList = new ArrayList<Integer>();
myIntList.add(1);  

/*Argument 1 [in myIntList.add(1)] is of primitive type"int" whereas arrayList element is of wrapper type "Integer" the casting from int to Integer occurs automatically by the Autoboxing feature */

myIntList.add(2); 

All primitive types e.g. byte, short, char, int, long, float, double and boolean has corresponding wrapper class e.g. Byte, Short, Integer, Character etc and participate in autoboxing and unboxing. Since whole process happens automatically without writing any code for conversion its called autoboxing and auto unboxing.

Thursday, July 11, 2013

2. What is deadlock in Java ?

Figure explaining deadlock where each process
waits for one other to finish itself
held up in a deadlock


More on Authentic Links

OFFICIAL DOCS ON DEADLOCK http://docs.oracle.com/javase/tutorial/essential/concurrency/deadlock.html



1. How to create thread in Java ?


There are two major ways to create a thread in Java namely,

1. By inheriting or "extending" the thread class
2. By implementing the runnable interface

In both the above ways one has to implement the run() method

Examples

1. By inheriting or "extending" the thread class

public class myClassWithThread extends Thread
{
     public void run()
     {
/* Put your implementations of the
  thread functionality here */
     }
}

public static void main(String args[])
{
     myClassWithThread MyThreadObj = new myClassWithThread ();

     myClassWithThread.start();
}

2. By implementing the runnable interface

public class myClassWithThread implements Runnable
{
public void run()
{
/* Put your implementations of the
       thread functionality here */
}
}

public static void main(String args[])
{
     Thread myThread = new Thread (myClassWithThread);

     myThread.run();
}