我正在阅读一本关于Java编程的书,作者使用如下示例:
import java.text.NumberFormat;
public class NumberFormatTest {
public static void main (String[] args){
NumberFormat currency = NumberFormat.getCurrencyInstance();
}
}
我对这一行感到困惑:
NumberFormat currency = NumberFormat.getCurrencyInstance();
这是创建NumberFormat类的对象,还是创建变量?我意识到没有使用“新”语句,所以我不认为它是一个对象。我很困惑。任何人都可以了解这行代码中发生的事情吗?
凯文
答案 0 :(得分:2)
您正在创建一个变量,也许是一个对象。
这一行:
NumberFormat currency ...
创建一个局部变量。最好说你声明一个局部变量,但将其视为创建变量并没有错。下一部分:
... NumberFormat.getCurrencyInstance()
可能创建一个对象,但它也可能会返回一个在程序中其他位置创建的对象(例如,如果getCurrencyInstance()
已在其他地方调用过,那么它可能只是重用已经创建的对象。)
答案 1 :(得分:2)
您正在创建both variable and object
。
NumberFormat currency = NumberFormat.getCurrencyInstance();
NumberFormat currency
,创建NumberFormat类型的variable
。
NumberFormat.getCurrencyInstance()
,创建NumberFormat类型的instance/object
并返回相同的内容。
答案 2 :(得分:0)
是的,您正在创建NumberFormat类的对象(或者可能是该类的子类的对象)。您正在调用的方法 - NumberFormat.getCurrencyInstance()
- 包含创建实例的new
语句。它是一个工厂方法,它创建类的实例并将该实例的引用返回给调用者。
您的currency
变量会保留对NumberFormat
对象的引用。
答案 3 :(得分:-1)
你有一个名为" currency"的变量。并将其分配给NumberFormat类型的Object。 java中唯一的非对象类型是基本类型 - int, long, float, boolean
等等,但是每个类型都有相同的对象。
我希望混淆来自于NumberFormat使用静态方法创建其对象这一事实,因此它为您提供了new
。
您的书可能会涉及对象与类之间的内容,如下所述:http://docs.oracle.com/javase/tutorial/java/javaOO