How do I mark method as @deprecated?

To mark a method as deprecated we can use the JavaDoc @deprecated tag. This is what we did since the beginning of Java. But when a new metadata support introduced to the Java language we can also use annotation. The annotation for marking method as deprecated is @Depreated.

The difference between these two that the @deprecated is place in the JavaDoc comment block while the @Deprecated is placed as a source code element.

package org.kodejava.basic;

import java.util.Date;
import java.util.Calendar;

public class DeprecatedExample {
    public static void main(String[] args) {
        DeprecatedExample de = new DeprecatedExample();
        de.getDate();
        System.out.println(de.getMonthFromDate());
    }

    /**
     * Get current system date.
     *
     * @return current system date.
     * @deprecated This method will be removed in the near future.
     */
    @Deprecated
    public Date getDate() {
        return new Date();
    }

    public int getMonthFromDate() {
        return Calendar.getInstance().get(Calendar.MONTH);
    }
}

How do I do bitwise exclusive OR operation?

package org.kodejava.lang;

public class XorDemo {
    public static void main(String[] args) {
        int numberA = 16;
        int numberB = 32;

        // Operator ^ is used for doing bitwise exclusive OR operation
        int result = numberA ^ numberB;

        System.out.println(numberA + " ^ " + numberB + " = " + result);

        // Print the result in binary format
        System.out.println(Integer.toBinaryString(numberA) +
                " ^ " + Integer.toBinaryString(numberB) +
                " = " + Integer.toBinaryString(result));
    }
}

The program prints the following output:

16 ^ 32 = 48
10000 ^ 100000 = 110000

How do I do bitwise OR operation?

package org.kodejava.lang;

public class OrDemo {
    public static void main(String[] args) {
        int numberA = 16;
        int numberB = 4;

        // Operator "|" is used for doing bitwise OR operation
        int result = numberA | numberB;

        System.out.println(numberA + " | " + numberB + " = " + result);

        // Print the result in binary format
        System.out.println(Integer.toBinaryString(numberA) +
                " | " + Integer.toBinaryString(numberB) +
                " = " + Integer.toBinaryString(result));
    }
}

The result of the code snippet:

16 | 4 = 20
10000 | 100 = 10100

How do I do bitwise AND operation?

package org.kodejava.lang;

public class AndDemo {
    public static void main(String[] args) {
        int numberA = 16;
        int numberB = 16;

        // Operator "&"  is used for doing bitwise AND operation
        int result = numberA & numberB;

        System.out.println(numberA + " & " + numberB + " = " + result);

        // Print the result in binary format
        System.out.println(Integer.toBinaryString(numberA) +
                " & " + Integer.toBinaryString(numberB) +
                " = " + Integer.toBinaryString(result));
    }
}

The result of the code snippet:

16 & 16 = 16
10000 & 10000 = 10000

How do I create type specific collections?

package org.kodejava.basic;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TypeSpecificCollection {
    public static void main(String[] args) {
        // Using a Generic can enable us to create a type specific collection
        // object. In the example below we create a Map whose key is an Integer
        // a have the value of a String.
        Map<Integer, String> grades = new HashMap<>();
        grades.put(1, "A");
        grades.put(2, "B");
        grades.put(3, "C");
        grades.put(4, "D");
        grades.put(5, "E");

        // A value obtained from type specific collection doesn't need to
        // be cast, it knows the type returned.
        String value = grades.get(1);
        System.out.println("value = " + value);

        // Creating a List that will contain a String only values.
        List<String> dayNames = new ArrayList<>();
        dayNames.add("Sunday");
        dayNames.add("Monday");
        dayNames.add("Tuesday");
        dayNames.add("Wednesday");

        // We also don't need to cast the retrieved value because it knows the
        // returned type object.
        String firstDay = dayNames.get(0);
        System.out.println("firstDay = " + firstDay);
    }
}