float ff = 1.2f;
//将1.2f赋值给变量ffFloat fo = new Float(1.2f);
//创建新的Float对象fo,其值为1.2fdouble fg = 3.2d;
//将3.2d赋值给变量fgDouble fh = new Double(2.1d);
//创建新的Double对象fh,其值为2.1d
我能在(1)和(3)之间或者(2)和(4)之间使用'='吗?
答案是可以的。这两种情况下,'='都表示将右侧的值赋给左侧的变量。
float ff = 1.2f;
//将1.2f赋值给变量ffFloat fo = new Float(1.2f);
//创建新的Float对象fo,其值为1.2fdouble fg = 3.2d;
//将3.2d赋值给变量fgDouble fh = new Double(2.1d);
//创建新的Double对象fh,其值为2.1d我能在(1)和(3)之间或者(2)和(4)之间使用'='吗?
答案是可以的。这两种情况下,'='都表示将右侧的值赋给左侧的变量。
是的。
回答编辑问题:
如果尝试使用ff = fg
,您将看到“可能会丢失精度”的消息。
如果尝试使用fo = fh
,则会出现“不兼容的类型”消息。
fg = ff
可以正常工作(float适合double)。fh = fo
仍然会给您一个“不兼容的类型”。是的,2会创建一个对象。
是的,第一种是原始类型,第二种是封装原始浮点类型功能的包装类,我们需要第二种来在集合中使用。在Java 1.5之前,你必须经常处理类型转换,现在有了包装类,这些功能已经被实现。更多信息请参阅这里。
是的。第一个声明了一个基本类型float
的变量,并将其初始化为1.2。
而第二个声明了一个引用类型Float
的变量,创建了一个类型为Float
的对象,然后将引用赋值给该变量。
float x1 = 1.2f;
float x2 = 1.2f;
x1 == x2 // true
Float f1 = new Float(1.2f);
Float f2 = new Float(1.2f);
f1 == f2 // false
public static Float valueOf(float f) { return new Float(f); }
。我认为您不能指望在所有情况下都能使用valueOf()(除非您可以提供相反的JVM规范)。 - Bob CrossFloat f1 = 1.2f; Float f2 = 1.2f; System.out.println(f1 == f2);
的结果是false
,我觉得很不可能存在一个进行缓存的工厂方法。 - Michael Myers是的,原始类型不能为NULL,对象可以。此外,Float对象附带了一堆有用的实用函数。
通过这个声明,您拥有了一个原始类型的浮点数,并为其分配了一个值。原始类型是由没有其他数据类型组成的数据类型,它不能被进一步分割(简单地解释)。原始类型通常是内置类型。
在这种情况下,您创建了一个对象,它在内部由较小的数据类型和方法组成。
原始类型浮点数和对象类型之间的主要区别在于,原始类型仅是数据的格式,没有属性或方法。
3=1可以正常工作,其他则不行。