How do I get printer or print service name?

This example show you how to get the printer or print service installed on your machine. To get the installed services we can use PrinterJob.lookupPrintServices() method call. This method return an array of PrintService objects. After that call PrintService.getName() method to get the print service name.

package org.kodejava.print;

import javax.print.PrintService;
import java.awt.print.PrinterJob;

public class PrinterName {
    public static void main(String[] args) {
        // Lookup for the available print services.
        PrintService[] printServices = PrinterJob.lookupPrintServices();

        // Iterates the print services and print out its name.
        for (PrintService printService : printServices) {
            String name = printService.getName();
            System.out.println("Name = " + name);
        }
    }
}

The program will print the installed print service on your machine.

Name = OneNote for Windows 10
Name = OneNote (Desktop)
Name = Microsoft XPS Document Writer
Name = Microsoft Print to PDF
Name = HP LaserJet P1005
Name = Fax

How do I clear a buffer using compact() method?

If you want to clear a buffer, but you want to keep the unread data in the buffer then you need to use the compact() method of the buffer. The compact() method will copy the unread data to the beginning of the buffer and set the position right after the unread data. The limit itself still have the value equals to the buffer capacity. The buffer will be ready to be written again without overwriting the unread data.

package org.kodejava.io;

import java.nio.CharBuffer;

public class BufferCompact {
    public static void main(String[] args) throws Exception {
        CharBuffer buffer = CharBuffer.allocate(64);
        buffer.put("Let's write some Java code! ");

        System.out.println("Position: " + buffer.position());
        System.out.println("Limit   : " + buffer.limit());

        // Read 10 chars from the buffer.
        buffer.flip();
        for (int i = 0; i < 10; i++) {
            System.out.print(buffer.get());
        }
        System.out.println();

        System.out.println("Position: " + buffer.position());
        System.out.println("Limit   : " + buffer.limit());

        // clear the buffer using compact() method.
        buffer.compact();
        System.out.println("Position: " + buffer.position());
        System.out.println("Limit   : " + buffer.limit());

        // Write and read some more data.
        buffer.put("Add some more data.");

        buffer.flip();
        while (buffer.hasRemaining()) {
            System.out.print(buffer.get());
        }
    }
}

The output of the code snippet above is:

Position: 28
Limit   : 64
Let's writ
Position: 10
Limit   : 28
Position: 18
Limit   : 64
e some Java code! Add some more data.

How do I clear a buffer using clear() method?

The code below show you how to clear a buffer using the clear() method call. The clear method call set the position in the buffer to 0 and limit to the capacity of the buffer.

We usually call the clear() method after we read the entire content of a buffer and clear it for ready to be written again. The clear() method is actually not clearing the data in the buffer. It is only clear the marker where you can write the data in the buffer and the unread data will be forgotten.

package org.kodejava.io;

import java.nio.LongBuffer;

public class BufferClear {
    public static void main(String[] args) {
        // Allocates a new LongBuffer.
        LongBuffer buffer = LongBuffer.allocate(64);

        // Write the long array into the buffer.
        buffer.put(new long[]{10, 20, 30, 40, 50, 60, 70, 80});
        System.out.println("Position: " + buffer.position());
        System.out.println("Limit   : " + buffer.limit());

        buffer.flip();
        while (buffer.hasRemaining()) {
            System.out.println(buffer.get());
        }

        // clear() method set the position to zero and limit
        // to the capacity of the buffer.
        buffer.clear();
        System.out.println("Position: " + buffer.position());
        System.out.println("Limit   : " + buffer.limit());
    }
}

The output of the code snippet:

Position: 8
Limit   : 64
10
20
30
40
50
60
70
80
Position: 0
Limit   : 64

How do I get signum function of a number?

The code below show you how to get the signum function of a number using the Math.signum() static method call. This method extracts the sign of a real number. If you have a number of x, the signum function of x is -1 if x < 0; 0 if x = 0 and 1 if x > 0.

package org.kodejava.math;

public class SignumExample {

    public static void main(String[] args) {
        Double zero = 0.0D;
        Double negative = -25.0D;
        Double positive = 15.0D;

        // Get the signum function of value of a number.
        // It returns:
        // * 0 if the value is zero.
        // * 1.0 if value is greater than zero.
        // * -1.0 if value is less than zero.
        double sign1 = Math.signum(zero);
        double sign2 = Math.signum(negative);
        double sign3 = Math.signum(positive);

        // For floating-point value
        float sign4 = Math.signum(zero.floatValue());
        float sign5 = Math.signum(negative.floatValue());
        float sign6 = Math.signum(positive.floatValue());

        System.out.println("In double:");
        System.out.println("Signum of " + zero + " is " + sign1);
        System.out.println("Signum of " + negative + " is " + sign2);
        System.out.println("Signum of " + positive + " is " + sign3);

        System.out.println("In float:");
        System.out.println("Signum of " + zero + " is " + sign4);
        System.out.println("Signum of " + negative + " is " + sign5);
        System.out.println("Signum of " + positive + " is " + sign6);
    }
}

Here is the output of the program:

In double:
Signum of 0.0 is 0.0
Signum of -25.0 is -1.0
Signum of 15.0 is 1.0
In float:
Signum of 0.0 is 0.0
Signum of -25.0 is -1.0
Signum of 15.0 is 1.0

How do I raised a number to the power of n?

The static method Math.pow(double a, double b) can be used to raise the value specified in the a, the first argument, (the base), to the power of the value specified in b, the second argument, (the exponent). The exponent tells us how many times the base should be multiplied by itself. So, if I have the number of 5, and I want to raise it to the 3rd power, it means that I have to multiply 5 by itself for 3 times.

There are some special cases for the Math.pow() method, as you can read in the Javadocs, here four of them taken from the Javadocs:

  • If the second argument is positive or negative zero, then the result is 1.0.
  • If the second argument is 1.0, then the result is the same as the first argument.
  • If the second argument is NaN, then the result is NaN.
  • If the first argument is NaN and the second argument is nonzero, then the result is NaN.

You can read more detail about the Math.pow() method on the following Javadocs, Math.pow().

Let’s see a code snippet as an example:

package org.kodejava.math;

public class PowerExample {

    public static void main(String[] args) {
        double cubeRoot = 5d;

        // Get the cubed number of cube root
        // x cubed = x^3 (multiplication three times)
        double cubed = Math.pow(cubeRoot, 3);
        System.out.println(cubeRoot + " cubed is " + cubed);

        // Raised to zero
        System.out.println("Math.pow(2, 0): " + Math.pow(2, 0));

        // Raised to one
        System.out.println("Math.pow(2, 1): " + Math.pow(2, 1));

        // Raised to NaN
        System.out.println("Math.pow(2, Double.NaN): " + Math.pow(2, Double.NaN));

        // NaN raised to the nonzero exponent
        System.out.println("Math.pow(Double.NaN, 2): " + Math.pow(Double.NaN, 2));
    }
}

Our program print the following output:

5.0 cubed is 125.0
Math.pow(2, 0): 1.0
Math.pow(2, 1): 2.0
Math.pow(2, Double.NaN): NaN
Math.pow(Double.NaN, 2): NaN