java 대상 인용 전달과 값 전달의 총결

1688 단어
1. 대상이 함수의 매개 변수로 전달될 때 원 대상의 인용 방식으로 전달되므로 매개 변수의 값을 변경하면 원 대상에게 영향을 줄 수 있다.2. 대상이 함수의 반환값으로 전달될 때 전달되는 것도 하나의 인용 전달이다. 전달된 대상을 변경할 때 원래의 대상에게 영향을 줄 수 있다.대상 A가 다른 대상 B에게 값을 부여할 때(B가 new를 거쳤든 새 공간을 열었든 상관없이) 이 때 B는 A 대상에 대한 인용이고 B를 변경하면 A 4.유일하게 인용 전달 방식이 아닌 것은 기본 데이터 형식의 값을 부여하는 방식으로 대상을 복사하는 것이다. 예를 들어 상례의 마지막 방식이다.이렇게 나타난 대상은 새로운 대상이지 원시 대상의 인용 보충이 아니다.자바의 String 형식도 하나의 대상이지만 값을 부여하여 전달할 때 값을 전달하는 노선을 걷고 일반 데이터 형식과 같다.String은 예외입니다.총괄: 대상의 전달 과정에서 기본적으로 인용 전달으로 이루어진다. 유일한 비인용 전달 방법은 자신이 새로운 대상 공간을 개척한 후에 기본 데이터 유형의 값을 부여하는 방법(스스로 copy복제 함수를 실현할 수도 있다)이다.
테스트 코드와 결과를 첨부합니다.
        String str = new String("abc");
        char[] ch = {'a','b','c'};

        Log.d("levin", str+"
"); Log.d("levin", String.valueOf(ch)); change(str,ch); System.out.print("
"); Log.d("levin", str+"
"); Log.d("levin", String.valueOf(ch)); Person person = new Person(); person.name = "bill"; person.age = 10; changePerson(person); Log.d("levin", person.name+"
"); Log.d("levin", String.valueOf(person.age));
    public void changePerson(Person person){
        person.name = "Jobs";
        person.age = 50;
      }

06-07 12:33:57.178: D/levin(8091): abc 06-07 12:33:57.578: D/levin(8091): abc 06-07 12:33:58.548: D/levin(8091): abc 06-07 12:33:58.988: D/levin(8091): gbc 06-07 12:34:00.158: D/levin(8091): Jobs 06-07 12:34:00.418: D/levin(8091): 50

좋은 웹페이지 즐겨찾기