包装构造函数获取NumberFormatException:

时间:2018-07-20 14:27:33

标签: java wrapper numberformatexception

Float f1 = new Float("12.6f");

在上面的代码中,我没有任何异常。但是下面的代码我得到了 NumberFormatException

Long l1= new Long("200L"); 

我知道除Character提供两个构造函数之外的所有包装器类

Integer i1 = new Integer(42); //Primitive
Integer i2 = new Integer("42"); // String
Float f1 = new Float(3.14f); //Primitive
Float f2 = new Float("3.14f"); // String

那我为什么要为此例外

Long l1= new Long("200L");  

为什么没有

Float f2 = new Float("3.14f");

1 个答案:

答案 0 :(得分:2)

检查有关构造函数的文档

对于Long,它推迟到Long.parseLong,后者不接受以L结尾的字符串。但是,Float具有不同的解析行为,具体取决于它是3.14d还是3.14f来提供的,因此它们都是该特定构造函数的有效输入。