도대체 값 전달입니까, 아니면 인용 전달입니까?

2234 단어 참조 전달
이 문제에 대해 이전에 몇 번 보았지만, 또 자주 오해가 있으므로, 지금 다시 요약하면 다음과 같다
컴퓨터 언어가 서브루틴에 매개 변수를 전달하는 방법은 두 가지가 있다
  • 1. 값 전달(call-by-value)
  • 매개 변수 (value)를 하위 프로그램의 정식 매개 변수로 복사합니다.이렇게 하면 서브루틴 매개 변수의 변화는 그것의 매개 변수를 호출하는 데 영향을 주지 않는다.
  • 2, 인용 전달(call-by-reference)
  • 매개 변수의 인용을 서브루틴 매개 변수에 전달합니다.하위 프로그램에서, 이 인용은 호출에서 지정한 실제 인자에 접근하는 데 사용됩니다.이렇게 하면 서브루틴에 대한 변화는 서브루틴을 호출하는 매개 변수에 영향을 줄 것이다.
  • Java에서 매개 변수 전달은 두 종류로 나뉜다
  • 1. 기본 유형: 값에 따라 전달되는
  • 2. 전달 대상: 인용에 따라 전달
  • 
     public static void main(String[] args) {
    		int i = 0;
    		changeInt(i);//       
    		System.out.println(i);//      :0
    	}
    
    	static void changeInt(int in) {
    		//      0
    		
    		in = 10;//  i   
    	}
    
    
     static class Human {
    		String name;
    
    		public void setName(String name) {
    			this.name = name;
    		}
    
    		public String getName() {
    			return name;
    		}
    	}
    
    	public static void main(String[] args) {
    		Human human = new Human();
    		human.setName("dimao");
    
    		changeName(human);//     
    		System.out.println(human.getName());//      :jeck
    	}
    
    	static void changeName(Human in) {
    		//   (in)  human
    
    		in.setName("jeck");//    human name  
    	}
    

    주의
  • 1. 한 대상이 방법에 인용될 때 인용 자체는 값에 따라 호출되고 전달된 값은 한 대상을 가리킨다.
  • 2. 방법의 매개 변수 인용이 다른 대상을 다시 가리키면 이 인용에 대한 변화는 원래 대상과 무관하다.
  • 
     static class Human {
    		String name;
    
    		public void setName(String name) {
    			this.name = name;
    		}
    
    		public String getName() {
    			return name;
    		}
    	}
    
    	public static void main(String[] args) {
    		Human human = new Human();
    		human.setName("dimao");
    
    		changePointer(human);//     
    		System.out.println(human.getName());//      :dimao
    	}
    
    	static void changePointer(Human in) {
    		//   (in)  human
    
    		Human another = new Human();
    		in = another;//   (in)     another
    		in.setName("jeck");//    human     
    	}
    

    좋은 웹페이지 즐겨찾기