> Java > java지도 시간 > 본문

자바에서 이것은 무엇을 의미합니까?

青灯夜游
풀어 주다: 2019-11-18 11:51:38
원래의
12952명이 탐색했습니다.

자바에서 이것은 무엇을 의미합니까?

이것은 클래스 내부에서 클래스 인스턴스 자체를 나타내는 데 사용됩니다.

이 키워드는 클래스 내부의 자체에 대한 참조로, 클래스의 메서드가 자체 속성에 액세스하도록 할 수 있습니다.

java

1. 로컬 변수와 멤버 변수의 이름이 같은 경우 이를 사용하여 메소드에서 멤버 변수를 구분합니다.

class Demo{
    String str = "这是成员变量";
    void fun(String str){
        System.out.println(str);
        System.out.println(this.str);
        this.str = str;
        System.out.println(this.str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}
로그인 후 복사

분석: 위의 Demo 클래스에는 멤버 변수 str과 로컬 변수 str(클래스 메소드의 형식 매개변수)이 있습니다. 당연히 로컬 변수와 멤버 변수는 동일한 이름을 사용합니다. 이때 일반적으로 str을 사용합니다. 위의 방법은 str 멤버변수에 아무런 영향을 주지 않는 지역변수 str을 사용하는 것입니다. 이때, 멤버변수로 뭔가를 해야 한다면 this 키워드를 사용해야 합니다.

질문이 있습니다. 메소드에 str이 없으면 멤버 변수 str을 메소드에 사용하면 어떻게 되나요? 실제로 메서드 내의 모든 작업은 멤버 변수 str에 대해 수행됩니다. 자바 프로그래밍 사상 84페이지 중간에 다음과 같은 문장이 있습니다. 메소드 내에서 동일한 클래스의 다른 메소드를 호출하면 이를 사용할 필요가 없습니다. 마찬가지로, 메소드에 같은 이름을 가진 지역변수와 멤버변수가 없다면, 이 메소드에서 멤버변수를 사용할 때 이를 사용하지 않아도 된다는 것을 확인하려면 다음 코드를 실행하면 됩니다.

class Demo{
    String str = "这是成员变量";
    void fun(String str1){
        System.out.println(str1);
        System.out.println(str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}
로그인 후 복사

2. this 키워드는 현재 객체를 다른 메소드에 전달합니다

여기에는 Java 프로그래밍 사고의 85페이지에 있는 매우 고전적인 예가 있습니다. 꺼내서 꼼꼼히 공부해보자.

class Person{
    public void eat(Apple apple){
        Apple peeled = apple.getPeeled();
        System.out.println("Yummy");
    }
}
class Peeler{
    static Apple peel(Apple apple){
        //....remove peel
        return apple;
    }
}
class Apple{
    Apple getPeeled(){
        return Peeler.peel(this);
    }
}
public class This{
    public static void main(String args[]){
        new Person().eat(new Apple());
    }
}
로그인 후 복사

자바에서 이것은 무엇을 의미합니까?

이것은 내 자신의 이해입니다. 어쩌면 정확하지 않을 수도 있습니다. 책에 나오는 내용을 살펴보세요. Apple은 어떤 이유로 실행될 외부 도구 메서드인 Peeler.peel() 메서드를 호출해야 합니다. . Apple 외부에 배치해야 하는 작업(아마도 외부 메서드가 다양한 클래스에 적용되고 코드를 복제하고 싶지 않기 때문일 수 있음) 자신을 외부 메소드에 전달하려면 this 키워드를 사용해야 합니다.

분석: 시나리오를 상상해 보세요. 모든 종류의 과일 껍질을 벗기는 작업이 동일하다면 과일을 주시는 한 저도 같은 방식으로 껍질을 벗길 것입니다. 그런 다음 위의 예와 결합하면 과일이 전달됩니다. getPeeled()를 먹기 전에 이 과일을 외부 껍질()에 매개변수로 전달해야 하며, 이를 사용하여 자체를 표현하고 외부 메소드에 전달해야 합니다.

3. 현재 개체에 대한 참조를 반환해야 하는 경우 메서드에 return this를 쓰는 경우가 많습니다.

이 접근 방식의 장점은 다음과 같습니다. 개체를 사용하여 메서드를 호출하면 메서드가 개체를 수정하고 개체를 사용하여 다른 작업을 수행할 수 있습니다. 따라서 객체에 대해 여러 작업을 수행하는 것이 쉽습니다.

public class This{
    int i = 0;
    This increment(){
        i += 2;
        return this;
    }
    void print(){
        System.out.println("i = " + i);
    }
    public static void main(String args[]){
        This x = new This();
        x.increment().increment().print();
    }
}
로그인 후 복사

결과는 다음과 같습니다.

4
로그인 후 복사

4. 생성자에서 생성자를 호출하려면 다음을 사용해야 합니다.

클래스에는 코드 중복을 피하기 위해 생성자가 여러 개 있습니다. 이 키워드를 사용할 수 있습니다. Java 프로그래밍 사고에는 다음과 같은 말이 있습니다. 일반적으로 이것을 작성할 때 "이 개체" 또는 "현재 개체"를 참조하고 그 자체는 현재 개체에 대한 참조를 나타냅니다. 생성자에서 여기에 매개변수 목록을 추가하면 의미가 달라집니다. 그러면 이 매개변수 목록과 일치하는 생성자가 명시적으로 호출됩니다. 이는 다른 생성자를 호출하는 직접적인 경로를 제공합니다.

자바에서 이것은 무엇을 의미합니까?

주의깊은 분석:

주 함수에서 시작하여 new Flower()는 메모리에 공간을 할당하고 객체를 초기화합니다. 물론 여기에는 매개변수가 기록되지 않습니다. 기본 생성자, 즉 매개변수가 없는 생성자가 호출됩니다.

이 매개변수 없는 생성자의 첫 번째 코드 줄은 this("hi",122)입니다. 이것이 의미하는 바는 매개변수 없는 생성자가 두 개의 매개변수를 사용하여 생성자를 호출한 다음 두 개의 매개변수인 생성자에 도달한다는 것입니다. 코드의 첫 번째 줄은 다음과 같습니다. 이 코드 줄은 생성자와 자동으로 하나의 매개변수를 일치시키며, Flower(String ss)가 일치하는 것으로 확인됩니다. 둘 다 문자열 유형 매개변수입니다.

그런 다음 문자열 유형 매개변수가 있는 생성자가 호출되어 다음을 인쇄합니다. 문자열 유형 매개변수만 있는 생성자 s = hi 그런 다음 매개변수가 있는 두 개의 생성자가 있는 함수를 호출하기 위해 이전 수준으로 돌아갑니다. , 출력: String 및 int 유형의 매개변수가 있는 생성자; 매개변수가 없는 생성자인 이전 수준으로 돌아가서 인쇄: 기본 생성자 >. 只有String类型的参数的构造函数  s = hi;然后回到上一级调用函数,就是带有两个参数的构造函数,打印输出:有String和int类型的参数的构造函数;再回到上一级,就是无参构造函数,打印:默认构造函数

此时构造函数已经初始化完成新建的对象,最后在主函数的最后一行代码中打印:petalCount=122  s=hi

이제 생성자는 새로 생성된 객체를 초기화하고 마침내 메인 함수 코드의 마지막 줄에 인쇄됩니다: petalCount=122 s=hi.


그림을 그리면 더 명확하게 볼 수 있습니다.

자바에서 이것은 무엇을 의미합니까?

몇 가지 주의할 점이 있습니다.

1 이는 하나의 생성자만 호출할 수 있으며 하나의 생성자에서 두 개의 생성자를 동시에 호출할 수 없습니다.

2. 호출하는 생성자는 시작 부분에 배치되어야 합니다. 이는 또한 하나의 생성자에서 두 개의 생성자를 호출할 수 없는 이유를 설명하며, 두 번째 생성자는 시작 부분에 있어서는 안 됩니다.

3. 이 예에서는 매개변수가 두 개 있는 생성자에서 이를 사용하여 매개변수가 하나만 있는 다른 생성자를 호출할 수 있습니다.

4. 생성자 이외의 메서드에서 생성자를 호출하는 데는 이를 사용할 수 없습니다. 코드의 주석을 올바르게 컴파일할 수 없습니다.

이 요약

1. 현재 객체에 대한 참조를 나타냅니다!

2. 함수 매개변수 대신 클래스 멤버 변수를 사용함을 나타냅니다.

3. 생성자에서 지정된 매개변수 유형을 충족하는 생성자를 참조하는 데 사용됩니다(실제로는 생성자이기도 함). 하지만 여기서는 매우 주의해야 합니다. 단 하나의 생성자만 참조할 수 있으며 시작 부분에 있어야 합니다!

4. 이것은 현재 개체를 참조하고 정적에는 개체가 없기 때문에 정적 메서드에서 사용할 수 없습니다.

php 중국어 웹사이트, 수많은 무료 Java 입문 튜토리얼, 온라인 학습을 환영합니다!

위 내용은 자바에서 이것은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!