이 키워드는 Java에서 이해하기가 매우 어렵다고 생각하는 개념입니다. :) 어쩌면 너무 멍청하기 때문일 수도 있습니다
이 키워드의 의미 : 메소드가 호출되는 오브젝트에 대해 해당 핸들을 생성 할 수 있습니다.
이 구절을 어떻게 이해합니까?
Java의 생각에는 그러한 예가 있습니다
동일한 유형의 객체는 각각 a와 b라고합니다. 그렇다면 메소드 F ()를 호출 할 때 누가이 메소드를 호출하는 사람을 어떻게 구별 할 수 있습니까?
예를 들어:
클래스 바나나 {void f (int i) {/*** method body *****/}} banana a = new Banana (); // 바나나 개체 생성 abanana b = new Banana (); // 바나나 개체 생성 ba.f (1); bf (2);그렇다면 컴파일러는 어떤 개체의 f () 기능을 어떻게 알 수 있습니까? 실제로, 비하인드 텔레포트는 다음과 같아야합니다.
af (1) << ==== >> banana.f (a, 1); bf (1) << ==== >> banana.f (b, 2);
나는 그것을 : 바나나 물체를 생성 할 때 a. A의 메소드 F ()를 호출 할 때이 객체를 가리키는 핸들이 동시에 생성됩니다.
다음은이 포인팅 객체 New Banana () 또는 a를 처리하는 것과 같습니다. 이것은 "=="a;
우리가 방법 안에있을 때. 그리고 우리는 현재 객체의 손잡이를 얻기를 희망합니다. 이 핸들은 컴파일러에 의해 비밀리에 전달되므로이를 식별 할 명확한 기호는 없습니다. 현재 키워드를 사용할 수 있습니다
이것의 일반적인 의미 : 어떤 개체 가이 메소드를 호출하든이 객체에 대한 포인터가 생성됩니다.
Java의 사고의 고전적인 예 :
public class leaf {private int i = 0; leaf ycrement () {i ++; return this;} void print () {systme.out.println ( "i ="+i); public static void main (String [] args) {leaf x = new Leaf (); x.increment ().1. 물체의 핸들 X를 생성합니다. 구문 형식은 Leaf X입니다.
2. 잎 클래스 객체를 생성합니다. 구문 형식은 새로운 잎 ()입니다.
3. 손잡이와 물체 사이의 연결을 설정하십시오. 구문은 x = new Leaf ()입니다.
4. 객체 새 Leaf ()의 메소드 증분 ()을 호출합니다. 구문은 x.increment ()입니다.
× × × 메소드 증분 ()을 누가 호출 했습니까? 리프 클래스의 객체 x (또는 새로운 잎 ())이므로 해당 시스템은 참조를 생성하고 비밀리에 x 또는 새 리프 () 객체를 가리키므로 excrement ()는 x에 대한 참조를 반환합니다! 메모리 주소입니다. 우리는 그것을 인쇄하고 볼 수 있습니다!
위의 내용은 편집자가 소개 한 Java 의이 키워드에 대한 지식입니다. 나는 그것이 당신에게 도움이되기를 바랍니다!