2017-11-27 12 views
-2

달러를 유로화로 변환하는 앱을 만들려고합니다. 이 코드는 작동하지만 한 가지 확실하지 않습니다. 내가 전환을 할 때 나는 왜 달러 가치가 변하지 않는지 알지 못한다. 나가 말하고 싶은 것은 내가 dolars에 유로를 할당 할 때, 나는 그것들이 같은 Double 객체를 가리 키도록 만들었 기 때문에, Double 객체 내부의 이중 필드가 바뀌면 안된다는 말입니까? 그렇다면 왜?두 변수가 모두 같은 값으로 업데이트되지 않는 이유는 무엇입니까?

EditText editText= (EditText) findViewById(R.id.editText); 
//Extract string from there 
String message = editText.getText().toString(); 
//Convert amount to dollars 
Double dolars = Double.parseDouble(message); 
Log.i("Dolars before", dolars.toString()); 
Double euros = dolars * 0.835791; 
Log.i("Euros",euros.toString()); 
Log.i("Dolars after",dolars.toString());e` 
+0

명확하게 할 수 있습니까? 당신은 "내가 유로 돈을 돌라에게 할당 할 때"라고 말했지만, 이것이 어디에서 발생합니까? –

+0

예 당신은 유로화를 지정하지 않고 다시금 인쇄하고 있습니다 –

답변

1

가장 간단한 답 Double 경우, 그 내용을 변경할 수 있음을 의미한다 불변가 있다는 것이다.

또한,의는 할당 라인을 살펴 보자 :

Double euros = dolars * 0.835791; 

을이 줄은 자동 복싱 및 자동 언 박싱라는 자바 기능을 이용하고있다. 당신이 명시 적으로 원한다면, 당신은이처럼 써서 :

Double euros = Double.valueOf(dolars.doubleValue() * 0.835791); 
, 당신은 당신이, dolars에서 원시 double를 추출 곱셈을 수행하고 포장하고 있음을 알 수

이 같은 긴 양식을 작성 결과를 euros에 할당합니다. 여기에는 값/참조를 "공유"하지 않습니다.

+0

감사합니다. 매우 도움이 된 사람입니다. 랩핑하면 반환되는 double 값이 Double euros의 double 필드에 저장된다는 의미입니까? –