Friday, July 12, 2013

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();
}