이것은 객체를 나타내는 Java의 키워드입니다. 이는 인스턴스 메서드와 생성자에는 나타날 수 있지만 클래스 메서드에는 나타날 수 없습니다.
생성자에서 이것을 사용하십시오
this 키워드가 클래스 생성자에 나타나면 이는 해당 생성자를 사용하여 생성된 객체를 나타냅니다.
예를 들어:
publicclassPeople{intleg,hand;Stringname;People(Strings){name=s;this.init();//이것은 생략 가능합니다. 즉, init();}voidinit(){leg=2;hand로 작성됩니다. =2;시스템 .out.println(name+have+hand+hand+1eg+leg);}publicstaticvoidmain(Stringargs[]){Peopleboshi=newPeople(Bush);}}인스턴스 메소드에서 이것을 사용
인스턴스 메서드는 클래스 이름이 아닌 객체를 통해서만 호출할 수 있습니다. this 키워드가 인스턴스 메서드에 나타나면 해당 메서드를 호출하는 현재 개체를 나타냅니다.
인스턴스 메서드는 클래스의 멤버 변수를 작동할 수 있습니다. 인스턴스 멤버 변수가 인스턴스 메서드에 나타날 때 일반적인 형식은 다음과 같습니다.
this.member 변수;
정적 멤버 변수가 인스턴스 메서드에 나타나는 경우 일반적인 형식은 다음과 같습니다.
클래스 이름.멤버 변수;
예를 들어:
classA{intx;staticinty;voida(){this.x=10;Ay=20;}}이는 클래스 A의 인스턴스 메소드 a에 나타납니다. 이는 a를 사용하여 현재 객체를 나타내므로 "this.x"는 객체가 메소드 a를 호출하면 객체의 변수에 10이 할당됩니다. .x. 객체가 메소드를 호출할 때 메소드의 인스턴스 멤버 변수는 객체에 할당된 인스턴스 멤버 변수를 참조하고 정적 변수는 다른 객체와 공유됩니다. 따라서 일반적인 상황에서는 인스턴스 멤버 변수 이름 앞의 "this."와 정적 변수 앞의 "클래스 이름"을 생략할 수 있습니다.
예를 들어:
classA{intx;staticinty;voida(){x=10;//this.y=20;//클래스 이름을 생략합니다.}}알아채다:
인스턴스 멤버 변수의 이름이 지역 변수의 이름과 동일한 경우, 멤버 변수 앞의 "this." 또는 "클래스 이름"은 생략할 수 없습니다.
클래스의 인스턴스 메서드는 클래스의 다른 메서드를 호출할 수 있습니다. 인스턴스 메서드를 호출하는 일반적인 형식은 다음과 같습니다.
this.방법;
클래스 메서드 호출의 일반적인 형식은 다음과 같습니다.
클래스명.방법;
예를 들어:
classB{voidb(){this.c();Bd();}voidc(){System.out.println(hi);}staticvoidd(){System.out.println(ok);}}이는 클래스 B의 메소드 b에 나타나며 이는 메소드 b를 호출하는 현재 객체를 나타냅니다. 따라서 메소드 b의 메소드 본문에 있는 this.c()는 메소드 c를 호출하는 현재 객체, 즉 특정 객체에서 메소드를 호출하는 것입니다. object b 과정에서 c 메소드가 다시 호출됩니다. 이 논리적 관계는 매우 명확하므로 하나의 인스턴스 메소드가 다른 메소드를 호출할 때 메소드 이름 앞에 "this." 또는 "클래스 이름"을 생략할 수 있습니다.
예를 들어:
classB{voidb(){c();//this.d() 생략;//클래스 이름 생략}voidc(){System.out.println(hi);}staticvoidd(){System.out.println ( 좋아요);}}알아채다:
클래스 메소드는 클래스 이름을 통해 직접 호출할 수 있고 아직 객체가 생성되지 않았을 수 있으므로 이는 클래스 메소드에 나타날 수 없습니다.