나는 Java에서 모든 것이 가치에 의해 전달된다는 것을 알고있다. 그러나 객체의 경우 전달되는 객체에 대한 참조 값입니다. 이것은 때로는 객체가 매개 변수를 통해 변경 될 수 있다는 것을 의미합니다. 즉, 사람들이 말하는대로, 매개 변수를 수정하지 마십시오."참고치"로 전달 하시겠습니까? 약간의 설명이 필요함
하지만 다음 코드에서는 다른 결과가 발생합니다. 당신이 main()
에 돌아 오면 changeIt()
에서 s
은 변경되지 않습니다 : 내가 추측하고있어
public class TestClass {
static String str = "Hello World";
public static void changeIt(String s) {
s = "Good bye world";
}
public static void main(String[] args) {
changeIt(str);
System.out.println(str);
}
}
- 내가 확인하고 싶습니다 - 당신이 s = "something"
을 말할 때 동일하거나 String s = new String("something")
말과 동등하다고. 이것이 s
이 변경되지 않는 이유입니까? changeIt()
을 종료하면 버려지는 완전히 새로운 객체가 로컬에 할당됩니까?
나는 이런 종류의 질문/대답을 전에 보았고 나는 여전히 리뷰가 필요하다고 느낀다. +1 – BlackVegetable
Java의 문자열이 변경 불가능한 객체이기 때문에 변경되지 않습니다. – anio
@anio 아니,이 특정 코드가 문자열을 변경하지 않는 이유는 아닙니다. 어떤 객체에서도 똑같은 동작을 할 것입니다. (할당을하고 나서,받은 객체에 어떤 메소드도 호출하지 않기 때문에) – nos