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");
答案 0 :(得分:2)
检查有关构造函数的文档
对于Long
,它推迟到Long.parseLong
,后者不接受以L
结尾的字符串。但是,Float
具有不同的解析行为,具体取决于它是3.14d
还是3.14f
来提供的,因此它们都是该特定构造函数的有效输入。