Java Quick Reference
  Language Fundamentals
  Operators and Assignments
  Flow Control and Exceptions
  Declarations and Access Control
  Garbage Collection
  Overloading and Overriding
  Threads
  The java.lang Package
  The java.util Package
  The java.awt Package
  The java.io Package
  References
  Miscellaneous Notes
  Tips & Traps
  Mock Exams

The java.lang Package Certification - Math Class

  • contains static constants E and PI
E:    2.718281828459045
PI:   3.141592653589793
  • contains methods for common mathematical operations ie abs, sin, exp, round, etc.
  • all methods are static
  • the Math class cannot be instantiated
  • methods involving angles use radians vs degrees and minutes
  • all methods, except round(), return a double
  • all methods take at least one double as an argument, except random which takes no arguments
  • the following methods are overloaded to return and handle int, long and float
    • static type abs(type a)
    • static type max(type a, type b)
    • static type min(type a, type b)

IEEEremainder

  • calculates the remainder as defined by IEEE-754
  • the remainder operator, %, makes values symmetric around zero ie negative and positive values return corresponding remainders
 7 % 2.5:   2.0
-7 % 2.5:  -2.0
  • Math.IEEEremainder keeps resulting values y units apart
Math.IEEEremainder( 7, 2.5):         -0.5
Math.IEEEremainder(-7, 2.5):          0.5

abs()

  • returns the absolute or positive value of the argument
Math.abs(1234.59):                   1234.59
Math.abs(-0.0):                      0.0
Math.abs(Float.NEGATIVE_INFINITY):   Infinity
Math.abs(Float.NaN):                 NaN
  • EXCEPT if the value is equal to Integer.MIN_VALUE, in which case, it returns the value as a negative
    Math.abs(Integer.MIN_VALUE):         -2147483648
    

    ceil()

    • returns the smallest double value not less than the argument and equal to an integer (counts up)
    • if the argument is already an integer, returns the argument
    • if the argument is NaN or infinity, returns the argument
    • if the argument is between -1.0 and 0, returns 0
    Math.ceil( 9.01):       10.0    // counts up (away from zero)
    Math.ceil(-9.01):       -9.0    // counts up (towards zero)
    Math.ceil(10):          10.0
    Math.ceil(-0.03):       -0.0
    Math.ceil(Double.NaN):  NaN
    

    floor()

    • returns the largest double value not greater than the argument and equal to an integer (counts down)
    • if the argument is an integer, returns the argument
    • if the argument is NaN, infinity, negative or positive zero, returns the argument
    • if the argument is between -0 and 0, returns -0
    Math.floor( 9.01):       9.0     // counts down (towards zero)
    Math.floor(-9.01):       -10.0   // counts down (away from zero)
    Math.floor(10):          10.0
    Math.floor(-0.03):       -1.0    
    Math.floor(Double.NaN):  NaN
    

    min() and max()

    • min() returns the smallest of two values
    • max() returns the largest of two values
    Math.min(-1.5, 1.5):     -1.5
    Math.max(-1.5, 1.5):     1.5
    Math.min(0.0, -0.0):     -0.0   // zeros are not equivalent
    Math.min(Float.NaN,
             Float.POSITIVE_INFINITY));   NaN
    

    random()

    • returns a pseudo-random positive double number between 0.0 and 1.0
    • if you want to seed the number or generate random numbers in different ranges use the java.util.Random class
    Math.random():           0.2379468138972043
    

    round()

    • has two versions
      • public static long round(double a)
      • public static int round(float a)
    • only method that does not return a double
    • adds 0.5 to the argument and returns the closest int
    • if the argument is not a number, returns zero
    • if the argument is a negative infinity or less than the MIN_VALUE for the type, returns the MIN_VALUE
    • if the argument is a positive infinity or greater than the MAX_VALUE for the type, returns the MAX_VALUE
    Math.round( 1.5):                        2
    Math.round(-1.5):                       -1
    Math.round(Float.NaN):                   0
    Math.round(Float.NEGATIVE_INFINITY):    -2147483648
    Math.round(Double.POSITIVE_INFINITY):    9223372036854775807
    Math.round(Float.MAX_VALUE):             2147483647  
                                (Float.MAX_VALUE is 3.4028235E38)
    
    
    Note
    • If the value is Float.MAX_VALUE the round method returns Integer.MAX_VALUE

    rint()

    • rounds to the closest integer
    • if integers are equidistant, favours the even integer
    Math.rint( 5.5):         6.0
    Math.rint(-5.5):        -6.0
    Math.rint( 5.49):        5.0
    Math.rint(-5.49):       -5.0
    

    sqrt()

    • returns the positive square root of a number
    • returns NaN if argument is negative
    Math.sqrt(45):          6.708203932499369
    Math.sqrt(-45):         NaN
    

    pow(double a, double b)

    • returns the first argument raised to the power of the second argument
    Math.pow(2,2):          4.0
    

    Trigometric functions

    • all results are returned in radians
    • there are 2 * PI degrees in a circle, ie 2/PI = 90 degrees
    sin(double a)
    if the result is NaN or infinity, returns NaN
    if the result is negative zero, returns -0.0
    cos(double a)
    if the result is NaN or infinity, returns NaN
    tan(double a)
    if the result is NaN or infinity, returns NaN
    if the result is negative zero, returns -0.0
    asin(double a)
    returns a value between -PI/2 and PI/2
    if the result is NaN or absolute value is greater than 1, returns NaN
    if the result is negative zero, returns -0.0
    acos(double a)
    returns a value between 0.0 and PI
    if the result is NaN or absolute value is greater than 1, returns NaN
    atan(double a)
    returns a value between -PI/2 and PI/2
    if the result is NaN, returns NaN
    if the result is negative zero, returns -0.0
    • atan2(double a, double b) converts rectangular co-ordinates to polar co-ordinates
    • has two additional methods, new in JDK 1.2, to convert between radians and degrees
      • double toRadians(double angdeg)
      • double toDegrees(double angdeg)
    Math.sin(90):               0.8939966636005579
    Math.cos(90):               -0.4480736161291701
    Math.tan(90):               -1.995200412208242
    Math.asin(-0):              0.0
    Math.acos(-0):              1.5707963267948966
    Math.atan(90):              1.5596856728972892
    
    Math.toRadians(90)          1.5707963267948966
    Math.toDegrees(Math.PI/2):  90.0
    

    Logarithms

    • two functions to handle logs
      • double log(double a)
      • double exp(double a)
    • log() returns the natural logarithm of the argument
    • if the argument is less than zero, returns NaN
    • if the argument is positive infinity, returns positive infinity
    • if the argument is -0.0 or 0.0, returns negative infinity
    Math.log(10):               2.302585092994046
    Math.log(-10):              NaN
    Math.log(0.0):              -Infinity
    
    • exp() returns e to the power of the argument
    • if the argument is NaN, returns NaN
    • if the argument is positive infinity, returns positive infinity
    • if the argument is negative infinity, returns positive zero
    Math.exp(5):                         148.4131591025766
    Math.exp(Float.NaN):                 NaN
    Math.exp(Float.POSITIVE_INFINITY):   Infinity
    Math.exp(Float.NEGATIVE_INFINITY):   0.0
    

    Example Code

  • Main Classes Wrapper Classes Math Class String Immutability String Class StringBuffer Class