1. Binary Literals:
Now onwards numbers can also be expressed using the binary number system using prefix 0b or 0B.
Sample:
Sample:
Now onwards numbers can also be expressed using the binary number system using prefix 0b or 0B.
Sample:
public class BinaryLiterals {
public static void main(String[]
args){
// An 8-bit
'byte' value:
byte aByte = (byte)0b00100001;
System.out.println(aByte);
// A 16-bit
'short' value:
short aShort = (short)0b1010000101000101;
System.out.println(aShort);
char aChar = (char) 0b001100001;
System.out.println(aChar);
// Some 32-bit
'int' values:
int anInt1 =
0b10100001010001011010000101000101;
// The B can be upper or lower case.
// The B can be upper or lower case.
int anInt2 = 0B101;
System.out.println(anInt1);
System.out.println(anInt2);
// A 64-bit
'long' value. Note the "L" suffix:
long aLong =
0b1010000101000101101000010100010101L;
System.out.println(aLong);
}
}
2. Strings in Switch Statements:
Now onwards you can use a
String
object in the
expression of a switch
statement.
Sample:
public class StringInSwitch {
public static int
getDayNumber(String day) {
int dayNumber = 0;
if (day == null) {
return dayNumber;
}
switch
(day.toLowerCase()) {
case "sunday":
dayNumber = 1;
break;
case "monday":
dayNumber = 2;
break;
case "tuesday":
dayNumber = 3;
break;
case "wednesday":
dayNumber = 4;
break;
case "thursday":
dayNumber = 5;
break;
case "friday":
dayNumber = 6;
break;
case "saturday":
dayNumber = 7;
break;
default:
dayNumber = 0;
break;
}
return dayNumber;
}
public static void main(String[]
args) {
String day = "Tuesday";
int returnedDayNumber = StringInSwitch.getDayNumber(day);
if (returnedDayNumber == 0) {
System.out.println("Invalid
Day");
} else {
System.out.println(returnedDayNumber);
}
}
}
3. Try with resources :
The try
-with-resources statement ensures that each resource is closed regardless of where the statement completes normally or abruptly.Sample:
import
java.io.BufferedReader;
import java.io.File;
import
java.io.FileReader;
public class TryWithResources {
public static void main(String[]
args) throws Exception{
String
path = "D:/TryWithResources.java";
readFromFile(path);
}
public static void
readFromFile(String path) throws Exception {
try (BufferedReader
br = new BufferedReader(new FileReader(new File(path)))) {
String
s = null;
while((s=br.readLine())!=null){
System.out.println(s);
}
}
}
}
4. Handling more than one exception:
Now onwards a single
Sample:
catch
block can handle more than one type of exception.
public class HMOE {
public static void main(String[]
args) throws Exception{
try{
Class
c = Class.forName("HMOE");
HMOE test = (HMOE) c.newInstance();
test.fun();
}catch(ClassNotFoundException
e){
System.out.println("Exception in loading a class.");
}catch(InstantiationException|IllegalAccessException
e){
System.out.println("Excpetion in creating instance.");
}
}
public void fun(){
System.out.println("fun");
}
}
5. Rethorwing Exceptions with more inclusive type checking:
Now onwards compiler performs more precise analysis of rethrown
exceptions than earlier releases of Java SE. This enables you to specify more
specific exception types in the throws clause of a method declaration.
Sample:
public class RethrowingExceptions{
public static void main(String[] args) throws Exception{
Sample:
public class RethrowingExceptions{
public static void main(String[] args) throws Exception{
rethrowException("First");
}
public static void
rethrowException(String exceptionName) throws
FirstException,SecondException {
try {
if (exceptionName.equals("First")) {
throw new
FirstException();
} else {
throw new
SecondException();
}
} catch (Exception e) {
throw e;
}
}
}
class FirstException extends Exception { }
class SecondException
extends Exception { }
6. Underscores in numbers:
Now
onwards you can put underscores between the numbers.
Sample:
public class UnderScoresInNumbers {
Sample:
public class UnderScoresInNumbers {
public static void main(String[]
args) throws Exception{
long
creditCardNumber = 1234_5678_9012_3456L;
long
socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
long hexBytes =
0xFF_EC_DE_5E;
long hexWords =
0xCAFE_BABE;
long maxLong =
0x7fff_ffff_ffff_ffffL;
byte nybbles =
0b0010_0101;
long bytes =
0b11010010_01101001_10010100_10010010;
System.out.println(creditCardNumber);
System.out.println(socialSecurityNumber);
System.out.println(pi);
System.out.println(creditCardNumber);
System.out.println(hexBytes);
System.out.println(maxLong);
System.out.println(nybbles);
System.out.println(bytes);
//Valid:
// OK (decimal
literal)
int v1 = 5_2;
// OK (decimal
literal)
int v2 =
5_______2;
// OK
(hexadecimal literal)
int v3 =
0x5_2;
// OK (octal
literal)
int v4 = 0_52;
// OK (octal
literal)
int v5 = 05_2;
//Invalid
// Invalid;
cannot put underscores adjacent to a decimal point
float iv1 = 3_.1415F;
// Invalid;
cannot put underscores adjacent to a decimal point
float iv2 =
3._1415F;
// Invalid; cannot put underscores
prior to an L suffix
long iv3 = 999_99_9999_L;
// This is an
identifier, not a numeric literal
int iv4 = _52;
// Invalid; cannot put underscores at
the end of a literal
int iv5 = 52_;
// Invalid;
cannot put underscores in the 0x radix prefix
int iv6 =
0_x52;
// Invalid;
cannot put underscores at the beginning of a number
int iv7 =
0x_52;
// Invalid;
cannot put underscores at the end of a number
int iv8 =
0x52_;
// Invalid;
cannot put underscores at the end of a number
int iv9 =
052_;
}
}
7. Type inference for generic instance creation:
You can replace the type arguments required to
invoke the constructor of a generic class with an empty set of type parameters
(
Sample:
import java.util.Map;
import java.util.HashMap;
import java.util.List;
public class Generics{
public static void main(String[] args) throws Exception{
//ealier jdk7 versions
Map<String, List<String >> earlier = new HashMap<String, List<String>>();
//in jdk7
Map < String, List <String > > now = new HashMap <>();
<>
) as long as the compiler can infer the type arguments from
the context. This pair of angle brackets is informally called the diamond.Sample:
import java.util.Map;
import java.util.HashMap;
import java.util.List;
public class Generics{
public static void main(String[] args) throws Exception{
//ealier jdk7 versions
Map<String, List<String >> earlier = new HashMap<String, List<String>>();
//in jdk7
Map < String, List <String > > now = new HashMap <>();
}
}
No comments:
Post a Comment