I have also written the Conversion Amanuensis Applet in Java, available with source code, that will generate Java source code for any of the 400 possible conversions between the 20 basic types. You can then cut and paste the result into your code.
| Java Primitives | |||||||
|---|---|---|---|---|---|---|---|
| Type | Signed? | Bits | Bytes | Digits | Lowest | Highest | Mnemonic |
| boolean | n/a | 1 | 1 | 1 | false | true | zero/one |
| char | unsigned Unicode | 16 | 2 | 4:5 | '\u0000' [0] aka Character.MIN_VALUE | '\uffff' [216-1] aka Character.MAX_VALUE | Unicode chars are twice as big as C’s. |
| byte | signed | 8 | 1 | 2:3 | -128 [-27] aka Byte.MIN_VALUE | +127 [27-1]aka Byte.MAX_VALUE | Bytes are signed, so half the usual 255 range. |
| short | signed | 16 | 2 | 4:5 | -32,768 [-215] aka Short.MIN_VALUE | +32,767 [215-1] aka Short.MAX_VALUE | 32K |
| int | signed | 32 | 4 | 9:10 | -2,147,483,648 [-231] aka Integer.MIN_VALUE | +2,147,483,647 [231-1] aka Integer.MAX_VALUE | 2 gig |
| long | signed | 64 | 8 | 18:19 | -9,223,372,036,854,775,808 [-263] aka Long.MIN_VALUE | +9,223,372,036,854,775,807 [263-1] aka Long.MAX_VALUE | 9 exabytes, or 9 billion gig |
| float | signed exponent and mantissa | 32 | 4 | 6:7 | ±1.40129846432481707e-45 aka Float.MIN_VALUE | ±3.40282346638528860e+38 aka Float.MAX_VALUE or roughly ±2127 with 6 to 7 significant digits of accuracy. A float can exactly represent integers in the range -224 to +224. |
rough, compact float |
| double | signed exponent and mantissa | 64 | 8 | 14:15 | ±4.94065645841246544e-324 aka Double.MIN_VALUE | ±1.79769313486231570e+308 aka Double.MAX_VALUE or roughly ±21023 with 14 to 15 significant digits of accuracy. A double can exactly represent integers in the range -253 to +253. |
high precision float |
| Mutable Primitives | Immutable Objects |
|---|---|
| boolean | Boolean |
| ordinary signed byte | Byte |
| unsigned byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char[] | String |
String s = "abc"; // string -> byte[] byte [] b = s.getBytes( "8859_1" /* encoding */ ); // byte[] -> String String t = new String( b , "Cp1252" /* encoding */ );
String s = "abc" ; // string -> char[] char[] ca = s.toCharArray(); // char[] -> String String s = new String( ca );
Beware of char[].toString(). It does not convert the character array to String. It prints out the address of the array — not useful for anything. Use new String ( chararray ) instead.
The radix feature of the toString and parseInt methods lets you handle hexadecimal numbers. Just set the radix to 16.
Strings and StringBuffers can be interconverted, as can Strings and StringBuilders
Rounding often surprises because fractions like 0.1 cannot be precisely be represented in IEEE floating point format. Often you find yourself having to add tiny numbers just prior to printing to get the desired effects.
// Rounding to an integer: long n = Math.round(d); double d = Math.rint(d); // Rounding to two decimal places: long n = Math.round(d *100.); /* keep as "pennies" */ double d = Math.rint (d *100.)/100.;
floating point for more details.
JDK 1.1+ has formatting picture classes such as java.util.DateFormat, SimpleDateFormat and DecimalFormat.
Formatting is such a common request, you might attain sainthood if you wrote a formatting class that gives you all the power of printf without the overhead of parsing strings for % produce a string. e.g.
Java 1.5+, java.io.PrintWriter. printf, java.io.PrintStream. printf and the java.util. Formatter class give you abilities similar to C’s printf. See printf for more details.
You have to roll your own method. You may be able to use my CSVReader class. Or use java.io.StreamTokenizer or java.util.StringTokenizer, perhaps in combination with readLine to get your data into strings. StreamTokenizer has bells and whistles to deal with parsing source code, including white space, comments and numbers. StringTokenizer just splits the text up based on delimiter characters. Then use the conversion methods in the table above to convert to integers etc. See below for a simplified examples of how you would do this.
![]() |
and suggestions to improve this page to Roedy Green : | ||
| Canadian Mind Products | |||
| mindprod.com IP:[65.110.21.43] | |||
| Your face IP:[38.103.63.18] | The information on this page is for non-military use only. | ||
| You are visitor number 125,029. | Military use includes use by defence contractors. | ||
| You can get a fresh copy of this page from: | or possibly from your local J: drive (Java virtual drive/Mindprod website mirror) | ||
| http://mindprod.com/jgloss/conversion.html | J:\mindprod\jgloss\conversion.html | ||