2014-09-11 2 views
1

나는 자바 프로그래밍에 대한 책을 읽고 있어요 다음과 같이 저자는 예를 사용개체 또는 변수를 만들 수 있습니까?

NumberFormat currency = NumberFormat.getCurrencyInstance(); 

이가하는 NumberFormat의 객체를 만드는 :이 라인에 대한 혼란 스러워요

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

    } 
} 

을 클래스를 만들거나 변수를 만드는 중입니까? 나는 "새로운"진술을 사용하지 않는다는 것을 알았습니다. 그래서 그것이 목표라고 생각하지 않습니다. 나는 매우 혼란 스럽다. 코드 줄에서 어떤 일이 벌어지고 있는지 알려줄 수 있습니까?

케빈

답변

2

both variable and object을 생성하고 있습니다.

NumberFormat currency = NumberFormat.getCurrencyInstance(); 

NumberFormat currency

가 입력하는 NumberFormat의 variable 만든다.

NumberFormat.getCurrencyInstance()을 생성하고 NumberFormat 유형의 instance/object을 만들고이를 반환합니다.

+0

기술적으로, @ markspace의 대답이 더 정확합니다. 당신은'getCurrentyInstance()'가 아무것도 생성하지 않는다는 것을 알지 못한다. 이전에 작성된 인스턴스에 대한 참조를 리턴 할 수 있습니다. _this_의 경우,'NumberFormat'은 변경 가능하기 때문에 아마도 새로운 인스턴스 일 것입니다. 일반적인 경우 구현을 검토하지 않고서는 알 수 없습니다. –

0

예, 당신이하는 NumberFormat 클래스의 객체 (또는 잠재적으로 그 클래스의 하위 클래스의 객체)를 만들 수 있습니다. 전화하는 방법 (NumberFormat.getCurrencyInstance())에는 인스턴스를 생성하는 new 문이 포함되어 있습니다. 이 클래스는 클래스의 인스턴스를 만들고 해당 인스턴스에 대한 참조를 호출자에게 반환하는 팩터 리 메서드입니다.

currency 변수는 NumberFormat 개체에 대한 참조를 보유합니다.

+0

가있어 ... 그래서이'getCurrencyInstance가() '메소드가를 생성하는'new' 문을 포함 코드를 포함 예, 맞죠? –

+0

수정하십시오.이와 같은 메소드는 일반적으로 생성 한 객체를 캐시하므로 일반적으로 정적 필드에서 null을 먼저 확인한 다음 필드가 null 인 경우 new를 호출 한 다음 값 (field 또는 new)을 반환합니다. – markspace

2

변수 및 어쩌면 개체를 생성하고 있습니다.

이 라인 :

NumberFormat currency ... 

로컬 변수를 생성한다. 지역 변수를 선언한다고 말하는 것이 좋지만 변수를 만드는 것으로 생각하는 것이 바람직합니다. 다음 부분 :

... NumberFormat.getCurrencyInstance() 

수도이 가능성 단지 재사용 것, 객체를 생성하지만, getCurrencyInstance() 이미 다른 곳에서 부름받은 경우에는 (예를 들어, 프로그램의 다른 곳에서 생성 된 객체를 반환 할 수 있습니다 이미 생성 된 객체).

-1

"통화"라는 변수가 있으며이 변수는 NumberFormat 유형의 객체에 할당됩니다. 자바의 비 객체 유형은 원시 타입 인 int, long, float, boolean 등이지만, 각각에 대해 동일한 객체가 있습니다.

NumberFormat이 정적 메서드를 사용하여 해당 개체를 생성한다는 사실 때문에 혼란 스러울 것으로 예상됩니다. 따라서 덮기에서 new을 수행하고 있습니다.

여기에 설명 된대로 아마 클래스 대 개체에 대한 비트를 얻을 것이다 귀하의 도서 : http://docs.oracle.com/javase/tutorial/java/javaOO

관련 문제