Java中的数字类型是指用于表示数字的类型,它们可以用来表示整数、浮点数、布尔值或其他特殊值。Java中的数字类型可以分为两大类:原始数据类型(primitive data types)和引用数据类型(reference data types)。
原始数据类型是Java中最常用的一种数据类型,它们包括byte、short、int、long、float、double、boolean 和 char。这些原始数据类型都有自己的特性,例如byte可以表示8位二进制整数,而float可以表示32位单精度浮点数。
引用数据类型是一个特殊的对象,它可以引用其他对象。在Java中,最常见的引用数据类型是String。String 用于表达文本信息,例如“Hello World”或“Goodbye World”。此外还有其他一些引用数据类型,例如BigInteger 和 BigDecimal 等。
// 声明一个 byte 的变量 byte myByte = 0; // 声明一个 float 的变量 float myFloat = 0.0f; // 声明一个 String 的变量 String myString = "Hello World";
以下两个类可用于格式化和解析数字:
NumberFormat
类可以格式化一个数字特定地区的预定义格式。
DecimalFormat
类可以格式化数字以特定区域设置的自定义格式。
NumberFormat类的 getXXXInstance()
方法返回格式化程序对象的实例。
XXX可以由数字,货币,整数或百分比替换,或只是getInstance()。这些方法都是重载的。
如果你调用它们没有参数,它们返回一个格式化对象默认语言环境。
使用number参数调用format()方法以将格式化的数字作为字符串。
import java.text.NumberFormat; public class Main { public static void main(String[] args) { NumberFormat formatter; // Get number formatter for default locale formatter = NumberFormat.getInstance(); System.out.println(formatter.format(12312.123123)); } }
上面的代码生成以下结果。
下面的代码说明了如何以默认格式为当前语言环境,法语语言环境和德语语言环境格式化数字。
import java.text.NumberFormat; import java.util.Locale; public class Main { public static void main(String[] args) { double value = 123456789.9876543; // Default locale printFormatted(Locale.getDefault(), value); // Indian locale Locale indianLocale = new Locale("en", "IN"); printFormatted(indianLocale, value); } public static void printFormatted(Locale locale, double value) { // Get number and currency formatter NumberFormat nf = NumberFormat.getInstance(locale); NumberFormat cf = NumberFormat.getCurrencyInstance(locale); System.out.println("Format value: " + value + " for locale: " + locale); System.out.println("Number: " + nf.format(value)); System.out.println("Currency: " + cf.format(value)); } }
上面的代码生成以下结果。
要执行更高级的格式化,我们可以使用DecimalFormat类。
DecimalFormat类允许我们提供我们自己的格式模式。 的下表显示模式及其用法。
符号 | 位置 | 含义 |
---|---|---|
0 | Number | 代表数字 |
# | Number | 数字,零显示为不存在 |
. | Number | 小数分隔符或货币小数分隔符 |
- | Number | 减号 |
, | Number | 分组分隔符 |
E | Number | 以科学记数法分隔尾数和指数。 |
; | 子模式边界 | 分隔正和负子模式 |
% | 字首或字尾 | 乘以100并以百分比显示 |
u2030 | 字首或字尾 | 乘以1000,并显示为每毫米值 |
一旦我们创建了DecimalFormat类的对象,就可以改变格式模式使用其 applyPattern()
方法。
import java.text.DecimalFormat; public class Main { private static DecimalFormat formatter = new DecimalFormat(); public static void main(String[] args) { formatNumber("##.##", 12.345); formatNumber("##.##", 12.345); formatNumber("0000.0000", 12.345); formatNumber("#.##", -12.345); // Positive and negative number format formatNumber("#.##;(#.##)", -12.735); } public static void formatNumber(String pattern, double value) { // Apply the pattern formatter.applyPattern ( pattern ); String formattedNumber = formatter.format(value); System.out.println("Number:" + value + ", Pattern:" + pattern + ", Formatted Number:" + formattedNumber); } }
上面的代码生成以下结果。
我们还可以使用 parse()
方法将字符串解析为数字。 parse()
方法返回 java.lang.Number
类的对象。
我们可以使用 java.lang.Number
类中的xxxValue()方法来获取原始值,其中xxx可以是byte,double,float,int,long和short。
import java.text.DecimalFormat; import java.text.ParsePosition; public class Main { private static DecimalFormat formatter = new DecimalFormat(); public static void main(String[] args) { // Parse a string to decimal number String str = "qq1,234.567"; String pattern = "#,###.###"; formatter.applyPattern(pattern); // Create a ParsePosition object to specify the first digit of // number in the string. It is 1 in "qq1,234.567" // with the index 2. ParsePosition pp = new ParsePosition(2); Number numberObject = formatter.parse(str, pp); double value = numberObject.doubleValue(); System.out.println("Parsed Value is " + value); } }
上面的代码生成以下结果。
Java格式 -Java 打印格式不同的格式字符可以格式化不同数据类型的值。例如,“s用于将值格式化为字符串。Java 打印格式化类型可...
Log4j教程 -Log4j日志格式Apache log4j提供布局对象,以根据各种布局格式化日志数据。布局类层次结构中的顶级类是抽象类org.apac...
Java流转换收集器结果我们可以将收集器的结果转换为不同的类型。Collectors类的collectingAndThen()方法定义如下。collectingAnd...