Class TypeFormat
This class provides utility methods to parse CharSequence into primitive types and to format primitive
types into StringBuffer.
Methods from this utility class do not create temporary objects and are typically faster than standard library
methods (e.g parseDouble(java.lang.CharSequence) is up to 15x faster than Double.parseDouble).
java.text.Format
(Locale sensitive) and/or using conventional methods (class sensitive). For example:
public class Foo {
public static Foo valueOf(CharSequence chars) {...} // Parses.
public StringBuffer appendTo(StringBuffer sb) {...} // Formats.
public String toString() {
return appendTo(new StringBuffer()).toString();
}
}
This class is public domain (not copyrighted).
- Version:
- 4.6, June 22, 2003
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final char[]Holds the characters used to represent numbers.private static final double[]private static final doubleprivate static final floatprivate static final int[]private static String[]private static final doubleprivate static final long[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringBufferformat(boolean b, StringBuffer sb) Formats the specifiedbooleanand appends the resulting text to theStringBufferargument.private static StringBufferformat(double d, double precision, boolean precisionOnLastDigit, StringBuffer sb) Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision.static StringBufferformat(double d, double precision, StringBuffer sb) Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision.static StringBufferformat(double d, int digits, StringBuffer sb) Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significand digits is specified as integer argument.static StringBufferformat(double d, StringBuffer sb) Formats the specifieddoubleand appends the resulting text to theStringBufferargument.static StringBufferformat(float f, float precision, StringBuffer sb) Formats the specifiedfloatand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision.static StringBufferformat(float f, StringBuffer sb) Formats the specifiedfloatand appends the resulting text to theStringBufferargument.static StringBufferformat(int i, int radix, StringBuffer sb) Formats the specifiedintin the specified radix and appends the resulting text to theStringBufferargument.static StringBufferformat(int i, StringBuffer sb) Formats the specifiedintand appends the resulting text (decimal representation) to theStringBufferargument.static StringBufferformat(long l, int radix, StringBuffer sb) Formats the specifiedlongin the specified radix and appends the resulting text to theStringBufferargument.static StringBufferformat(long l, StringBuffer sb) Formats the specifiedlongand appends the resulting text (decimal representation) to theStringBufferargument.static StringBufferformat(short s, int radix, StringBuffer sb) Formats the specifiedshortin the specified radix and appends the resulting text to theStringBufferargument.static StringBufferformat(short s, StringBuffer sb) Formats the specifiedshortand appends the resulting text (decimal representation) to theStringBufferargument.private static voidformat2(int i, int radix, StringBuffer sb) private static voidformat2(long l, int radix, StringBuffer sb) static intindexOf(CharSequence pattern, CharSequence chars, int fromIndex) Searches for a particular sequence within a character sequence (general purpose parsing function).private static final doublemultE(double value, int E) Returns the product of the specified value with10raised at the specified power exponent.static booleanparseBoolean(CharSequence chars) Parses the specifiedCharSequenceas aboolean.static doubleparseDouble(CharSequence chars) Parses thisCharSequenceas adouble.static floatparseFloat(CharSequence chars) Parses thisCharSequenceas afloat.static intparseInt(CharSequence chars) Parses the specifiedCharSequenceas a signed decimalint.static intparseInt(CharSequence chars, int radix) Parses the specifiedCharSequenceas a signedintin the specified radix.static longparseLong(CharSequence chars) Parses the specifiedCharSequenceas a signed decimallong.static longparseLong(CharSequence chars, int radix) Parses the specifiedCharSequenceas a signedlongin the specified radix.static shortparseShort(CharSequence chars) Parses the specifiedCharSequenceas a signed decimalshort.static shortparseShort(CharSequence chars, int radix) Parses the specifiedCharSequenceas a signedshortin the specified radix.
-
Field Details
-
DIGITS
private static final char[] DIGITSHolds the characters used to represent numbers. -
INT_POW_10
private static final int[] INT_POW_10 -
LONG_POW_10
private static final long[] LONG_POW_10 -
LOG_10
private static final double LOG_10 -
FLOAT_RELATIVE_ERROR
private static final float FLOAT_RELATIVE_ERROR -
DOUBLE_RELATIVE_ERROR
private static final double DOUBLE_RELATIVE_ERROR -
LEADING_ZEROS
-
DOUBLE_POW_10
private static final double[] DOUBLE_POW_10
-
-
Constructor Details
-
TypeFormat
private TypeFormat()Default constructor (forbids derivation).
-
-
Method Details
-
indexOf
Searches for a particular sequence within a character sequence (general purpose parsing function).- Parameters:
pattern- the character sequence to search for.chars- the character sequence being searched.fromIndex- the index incharsto start the search from.- Returns:
- the index in the range
[fromIndex, chars.length()-pattern.length()]or-1if the character sequence is not found.
-
parseBoolean
Parses the specifiedCharSequenceas aboolean.- Parameters:
chars- the character sequence to parse.- Returns:
- the corresponding
boolean.
-
parseShort
Parses the specifiedCharSequenceas a signed decimalshort.- Parameters:
chars- the character sequence to parse.- Returns:
parseShort(chars, 10)- Throws:
NumberFormatException- if the specified character sequence does not contain a parsableshort.- See Also:
-
parseShort
Parses the specifiedCharSequenceas a signedshortin the specified radix. The characters in the string must all be digits of the specified radix, except the first character which may be a plus sign'+'or a minus sign'-'.- Parameters:
chars- the character sequence to parse.radix- the radix to be used while parsing.- Returns:
- the corresponding
short. - Throws:
NumberFormatException- if the specified character sequence does not contain a parsableshort.
-
parseInt
Parses the specifiedCharSequenceas a signed decimalint.- Parameters:
chars- the character sequence to parse.- Returns:
parseInt(chars, 10)- Throws:
NumberFormatException- if the specified character sequence does not contain a parsableint.- See Also:
-
parseInt
Parses the specifiedCharSequenceas a signedintin the specified radix. The characters in the string must all be digits of the specified radix, except the first character which may be a plus sign'+'or a minus sign'-'.- Parameters:
chars- the character sequence to parse.radix- the radix to be used while parsing.- Returns:
- the corresponding
int. - Throws:
NumberFormatException- if the specified character sequence does not contain a parsableint.
-
parseLong
Parses the specifiedCharSequenceas a signed decimallong.- Parameters:
chars- the character sequence to parse.- Returns:
parseLong(chars, 10)- Throws:
NumberFormatException- if the specified character sequence does not contain a parsablelong.- See Also:
-
parseLong
Parses the specifiedCharSequenceas a signedlongin the specified radix. The characters in the string must all be digits of the specified radix, except the first character which may be a plus sign'+'or a minus sign'-'.- Parameters:
chars- the character sequence to parse.radix- the radix to be used while parsing.- Returns:
- the corresponding
long. - Throws:
NumberFormatException- if the specified character sequence does not contain a parsablelong.
-
parseFloat
Parses thisCharSequenceas afloat.- Parameters:
chars- the character sequence to parse.- Returns:
- the float number represented by the specified character sequence.
- Throws:
NumberFormatException- if the character sequence does not contain a parsablefloat.
-
parseDouble
Parses thisCharSequenceas adouble.- Parameters:
chars- the character sequence to parse.- Returns:
- the double number represented by this character sequence.
- Throws:
NumberFormatException- if the character sequence does not contain a parsabledouble.
-
format
Formats the specifiedbooleanand appends the resulting text to theStringBufferargument.- Parameters:
b- aboolean.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format
Formats the specifiedshortand appends the resulting text (decimal representation) to theStringBufferargument.Note: This method is preferred to
StringBuffer.append(short)as it does not create temporaryStringobjects (several times faster for small numbers).- Parameters:
s- theshortnumber.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format
Formats the specifiedshortin the specified radix and appends the resulting text to theStringBufferargument.- Parameters:
s- theshortnumber.radix- the radix.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format
Formats the specifiedintand appends the resulting text (decimal representation) to theStringBufferargument.Note: This method is preferred to
StringBuffer.append(int)as it does not create temporaryStringobjects (several times faster for small numbers).- Parameters:
i- theintnumber.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format
Formats the specifiedintin the specified radix and appends the resulting text to theStringBufferargument.- Parameters:
i- theintnumber.radix- the radix.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format2
-
format
Formats the specifiedlongand appends the resulting text (decimal representation) to theStringBufferargument.Note: This method is preferred to
StringBuffer.append(long)as it does not create temporaryStringobjects (several times faster for small numbers).- Parameters:
l- thelongnumber.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format
Formats the specifiedlongin the specified radix and appends the resulting text to theStringBufferargument.- Parameters:
l- thelongnumber.radix- the radix.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - See Also:
-
format2
-
format
Formats the specifiedfloatand appends the resulting text to theStringBufferargument.- Parameters:
f- thefloatnumber.sb- theStringBufferto append.- Returns:
format(f, 0.0f, sb)- See Also:
-
format
Formats the specifiedfloatand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision. All digits at least as significant as the specified precision are represented. For example:format(5.6f, 0.01f, sb)appends"5.60"format(5.6f, 0.1f, sb)appends"5.6"format(5.6f, 1f, sb)appends"6"
0.0f, the precision is assumed to be the intrinsicfloatprecision (64 bits IEEE 754 format); no formatting is performed, all significant digits are displayed and trailing zeros are removed.- Parameters:
f- thefloatnumber.precision- the maximum weight of the last digit represented.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - Throws:
IllegalArgumentException- if the specified precision is negative or would result in too many digits (19+).
-
format
Formats the specifieddoubleand appends the resulting text to theStringBufferargument.Note : This method is preferred to
StringBuffer.append(double)or evenString.valueOf(double)as it does not create temporaryStringorFloatingDecimalobjects (several times faster, e.g. 15x faster forDouble.MAX_VALUE).- Parameters:
d- thedoublenumber.sb- theStringBufferto append.- Returns:
format(d, 0.0, sb)- See Also:
-
format
Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significand digits is specified as integer argument.- Parameters:
d- thedoublenumber.digits- the number of significand digits (excludes exponent).sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - Throws:
IllegalArgumentException- if the number of digits is not in range[1..19].
-
format
Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision. All digits at least as significant as the specified precision are represented. For example:format(5.6, 0.01, sb)appends"5.60"format(5.6, 0.1, sb)appends"5.6"format(5.6, 1, sb)appends"6"
0.0, the precision is assumed to be the intrinsicdoubleprecision (64 bits IEEE 754 format); no formatting is performed, all significant digits are displayed and trailing zeros are removed.- Parameters:
d- thedoublenumber.precision- the maximum weight of the last digit represented.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject. - Throws:
IllegalArgumentException- if the specified precision is negative or would result in too many digits (19+).
-
format
private static StringBuffer format(double d, double precision, boolean precisionOnLastDigit, StringBuffer sb) Formats the specifieddoubleand appends the resulting text to theStringBufferargument; the number of significative digits is deduced from the specified precision.- Parameters:
d- thedoublenumber.precision- the maximum weight of the last digit represented.precisionOnLastDigit- indicates if the number of digits is deduced from the specified precision.sb- theStringBufferto append.- Returns:
- the specified
StringBufferobject.
-
multE
private static final double multE(double value, int E) Returns the product of the specified value with10raised at the specified power exponent.- Parameters:
value- the value.E- the exponent.- Returns:
value * 10^E
-