我是在创建对象还是变量?

时间:2014-09-11 01:03:38

标签: java

我正在阅读一本关于Java编程的书,作者使用如下示例:

import java.text.NumberFormat; 
public class NumberFormatTest {
    public static void main (String[] args){
        NumberFormat currency = NumberFormat.getCurrencyInstance(); 

    }
}

我对这一行感到困惑:

NumberFormat currency = NumberFormat.getCurrencyInstance();

这是创建NumberFormat类的对象,还是创建变量?我意识到没有使用“新”语句,所以我不认为它是一个对象。我很困惑。任何人都可以了解这行代码中发生的事情吗?

凯文

4 个答案:

答案 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