Java 자체는 값 전달 호출이며 주소 값이 객체에 전달됩니다. 주소 값을 다시 할당하는 것은 다시 가리키는 것과 동일하며 외부 레이어에는 영향을 주지 않습니다.
여기 Integer 객체에도 특별한 특성이 있습니다. 실제로 구현은
class Integer{ final int value; //一旦赋值,就不能改变。 }
와 유사할 수 있습니다. 호출 시 전달된 주소 값은 외부 레이어를 변경할 수 없으며 객체 자체는 변경할 수 없습니다. 결과적으로 이 값은 변경할 수 없습니다
해결 방법이 많습니다
1. Java 스타일은 단일 값에 대한 반환 값을 사용하는 것입니다. return i; 외부에 i=foo()를 할당합니다. 여러 값에 대해 배열이나 개체를 사용합니다.
2. 자체 캡슐화 클래스를 전달합니다. class MutableInteger{ int value;}
3. 전용 AtomicInteger 원자 정수 객체
public static void main(String[] 参数) { AtomicInteger i=new AtomicInteger(40); i.intValue(); System.out.println(i); } public static void change(AtomicInteger i) { i.set(55); }
를 전달하면 전달 후 값을 변경할 수도 있습니다.
권장 해결 방법 1,
을 피하세요. 변경사항 Java에서 전달되는 정수 매개변수 문제에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!