programing

자바어로 this는 무슨 뜻입니까?

goodsources 2022. 8. 1. 22:48
반응형

자바어로 this는 무슨 뜻입니까?

는 보통 ★★★★★★★★★★★★★★★★★★★★★★★.this컨스트럭터에만 해당됩니다.

변수 했습니다( 변수 식별에 ).this.something로로벌로변름수 。

저는 이 말의 잘 .this로 되어 있습니다.또, 「」, 「」를 사용하면 어떻게 됩니까?this없음(점 없음( ).를 참조해 주세요.

this는 현재 객체를 나타냅니다.

각 비정적 메서드는 객체의 컨텍스트에서 실행됩니다.그래서 이런 수업이 있는 경우:

public class MyThisTest {
  private int a;

  public MyThisTest() {
    this(42); // calls the other constructor
  }

  public MyThisTest(int a) {
    this.a = a; // assigns the value of the parameter a to the field of the same name
  }

  public void frobnicate() {
    int a = 1;

    System.out.println(a); // refers to the local variable a
    System.out.println(this.a); // refers to the field a
    System.out.println(this); // refers to this entire object
  }

  public String toString() {
    return "MyThisTest a=" + a; // refers to the field a
  }
}

후, 「」를 호출합니다.frobnicate()new MyThisTest()합니다.를 인쇄합니다.

142MyThisTest a=42

따라서 여러 가지 용도로 효과적으로 사용할 수 있습니다.

  • 필드와 같은 이름을 가진 다른 것이 있을 때, 당신이 필드에 대해 말하고 있다는 것을 명확히 한다.
  • 현재의 대상을 통칭하다
  • 생성자에서 현재 클래스의 다른 생성자를 호출합니다.

다음은 여기서 복사앤페이스트한 것입니다만, 이 문서의 모든 용도를 매우 잘 설명하고 있습니다.this★★★★★★★★★★★★★★★★★★:

정의: Java 키워드는 사용되는 메서드의 현재 인스턴스를 참조하기 위해 사용됩니다.

이 기능을 사용하는 방법은 다음과 같습니다.

  1. static 변수 또는 local 변수 대신 instance 변수가 사용되는 것을 구체적으로 나타냅니다.그것은,

    private String javaFAQ;
    void methodName(String javaFAQ) {
        this.javaFAQ = javaFAQ;
    }
    

    이치노여기서는 로컬 변수의 우선순위가 높습니다. 때문에, 「」, 「」가 존재하지 않습니다.this에 로컬 변수를 나타냅니다.파라미터의하지 않은 , " " 에 ,this는 인스턴스 변수를 나타냅니다.

  2. this는 컨스트럭터(constructor)를 나타낼 때 합니다.

     public JavaQuestions(String javapapers) {
         this(javapapers, true);
     }
    

    그러면 두 개의 매개 변수가 있는 동일한 Java 클래스의 생성자가 호출됩니다.

  3. this는 현재 하기 위해 됩니다.

    obj.itIsMe(this);
    
  4. 위와 마찬가지로 현재 인스턴스를 반환할 때도 사용할 수 있습니다.

    CurrentClassName startMethod() {
         return this;
    }
    

    주의: 위의 두 가지 포인트의 내부 클래스에서 사용하면 바람직하지 않은 결과가 발생할 수 있습니다.이는 외부 인스턴스가 아닌 내부 클래스를 참조하기 때문입니다.

  5. this하여 현재 수 .

    Class className = this.getClass(); // this methodology is preferable in java
    

이것은 할 수 있지만

    Class className = ABC.class; // here ABC refers to the class name and you need to know that!

때처럼, ★★★★★★★★★★★★★★★★」this는 인스턴스와 관련지어져 있어 스태틱 방식에서는 동작하지 않습니다.

부터 말하면, 【막막】this 객체를 할 수 .

class Outer {
    class Inner {
        void foo() {
            Outer o = Outer.this;
    }
  }
}

이것은 특정 객체의 현재 인스턴스를 의미하기 때문에 다음과 같은 것을 쓸 수 있습니다.

public Object getMe() {
    return this;
}

「」의 일반적인 예:this이치노하다

public class Person {
    private final String name;

    public Person(String name) {
        // how would we initialize the field using parameter?
        // we can't do: name = name;
    }
}

위의 예에서는 파라미터 값을 사용하여 필드 멤버를 할당합니다.이름이 같기 때문에 필드와 파라미터를 구별할 수 있는 방법이 필요합니다. this를 사용하면 필드를 포함한 이 인스턴스의 멤버에 액세스할 수 있습니다.

public class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }
}

에서는 스윙을 가 꽤 .ActionListenerAction Listener를 사용합니다.

public class MyDialog extends JDialog implements ActionListener
{
    public MyDialog()
    {
        JButton myButton = new JButton("Hello");
        myButton.addActionListener(this);
    }

    public void actionPerformed(ActionEvent evt)
    {
        System.out.println("Hurdy Gurdy!");
    }

}

programming.guide 기사 인용:


thisJava 프로그램에는 두 가지 용도가 있습니다.

1. 현재 오브젝트에 대한 참조로서

이 경우의 구문은 보통 다음과 같습니다.

this.someVariable = someVariable;

이 사용방법은 다음과 같습니다.'이것' 참조(예시 포함)

2. 다른 컨스트럭터를 호출한다.

이 경우의 구문은 일반적으로 다음과 같습니다.

MyClass() {
    this(DEFAULT_VALUE); // delegate to other constructor
}

MyClass(int value) {
    // ...
}

이러한 사용방법에 대해 설명합니다.이(…) 컨스트럭터 호출(예시 포함)

이는 효과적으로 "현재 컨텍스트의 객체에 대한 참조"입니다.예를 들어, "이 개체"를 인쇄하려면 다음과 같이 쓸 수 있습니다.

System.out.println(this);

global variable을 사용하는에는 global variable을 사용합니다.this.variableName정의상 글로벌 변수가 아니라 이 특정 인스턴스에 고유한 변수입니다.

메서드가 호출된 인스턴스를 참조합니다.

class A {

  public boolean is(Object o) {
    return o == this;
  }

}

A someA = new A();
A anotherA = new A();
someA.is(someA); // returns true
someA.is(anotherA); // returns false

키워드는 블록의 현재 변수를 참조하기 위해 사용됩니다. 예를 들어, 다음 코드(검사만 해당하므로 표준 JAVA 코드를 예상하지 마십시오).

Public class test{

test(int a) {
this.a=a;
}

Void print(){
System.out.println(a);
}

   Public static void main(String args[]){
    test s=new test(2);
    s.print();
 }
}

바로 그거야.출력은 "2"가 됩니다. 키워드를 사용하지 않을 경우 출력은 0 입니다.

에는 클래스에서 변수)이 있습니다. 특정의 에 속하는 하기 위해서입니다.this 파라미터와 파라미터의 합니다.인스턴스 변수의 경우 암묵적 모수와 명시적 모수의 차이를 이해하는 것이 중요합니다., 그럼 여러분도 한번 .fillTank를 외치다audi★★★★★★ 。

Car audi= new Car();

audi.fillTank(5); // 5 is the explicit parameter and the car object is the implicit parameter 

안의 이며 암묵적인합니다.fillTankmethod에는 명시적 파라미터와 암묵적 파라미터가 모두 있습니다.

자세히 요?fillTankCar 표시

public class Car()
{
   private double tank;

   public Car()
   {
      tank = 0;
   }

   public void fillTank(double gallons)
   {
      tank = tank + gallons;
   }

}

이 클래스에는 인스턴스 변수 "탱크"가 있습니다.변수를 가 많을 수 있습니다.변수 "객체에 한 "에서는 "audi" 인스턴스 변수 "tank"가 특정 객체에 사용되도록 지정하기 위해 이전에 구축한 "audi" 객체의 경우,thisreserved 키워드를 들어, 메서드에서 'this'를 사용하는 것은 인스턴스 변수(이 경우 "tank")가 암묵적 파라미터의 인스턴스 변수임을 나타냅니다.

으로 Java를 합니다.this이치노기호의 문제입니다. 하면 안 요.this자바(.Java).

요약하면.

  • 객체는 클래스로 정의되며 메서드와 변수가 있습니다.
  • 「 」의 this메서드인스턴스 변수에서 인스턴스 변수가 암묵적 파라미터에 속하거나 암묵적 파라미터의 인스턴스 변수임을 나타냅니다.
  • implicit 파라미터는 이 경우 "audi"에서 메서드를 호출하는 객체입니다.
  • Java 컴파일러는 자동으로 이 예약된 단어를 추가하여 선호도에 따라 달라집니다.
  • this 사용할 수 은 구문적으로 입니다. 구문적으로 올바르지 않습니다.
  • this는 로컬 할 수 .
  • this오브젝트에 있음을 됩니다.

인스턴스 변수는 작성하는 모든 개체에 공통입니다.예를 들어, 두 가지 인스턴스 변수가 있습니다.

class ExpThisKeyWord{
int x;
int y;

public void setMyInstanceValues(int a, int b) {
    x= a;
    y=b;

    System.out.println("x is ="+x);
    System.out.println("y is ="+y);
}

}




class Demo{
public static void main(String[] args){

ExpThisKeyWord obj1 = new ExpThisKeyWord();
ExpThisKeyWord obj2 = new ExpThisKeyWord();
ExpThisKeyWord obj3 = new ExpThisKeyWord();

obj1.setMyInstanceValues(1, 2);
obj2.setMyInstanceValues(11, 22);
obj3.setMyInstanceValues(111, 222);



}
}

위의 코드를 알아채셨다면 3개의 오브젝트가 시작되었으며 3개의 오브젝트가 SetMyInstanceValues 메서드를 호출하고 있습니다.JVM이 모든 개체에 대해 값을 올바르게 할당하는 방법은 무엇이라고 생각하십니까?요령이 있습니다.JVM은 위에 표시된 코드를 인식하지 않습니다.대신 아래 코드와 같이 표시됩니다.

public void setMyInstanceValues(int a, int b) {
    this.x= a; //Answer: this keyword denotes the current object that is handled by JVM.
    this.y=b;

    System.out.println("x is ="+x);
    System.out.println("y is ="+y);
}

(늦은 건 알지만 쉿 난 네가 날 본 적이 없는 교활한 남자야)

대부분의 객체 지향 프로그래밍 언어에서 이 키워드는 해당 클래스의 현재 객체인스턴스에 대한 참조를 의미합니다.기본적으로는 메서드 외부에서 그 오브젝트를 이름으로 부르는 것과 같습니다.그렇게 상세하게 설명하면 말이 안 될 텐데

클래스 밖에서 오브젝트 인스턴스 내의 어떤 것을 호출하기 위해 예를 들어 오브젝트라는 오브젝트가 있는데 사용할 필드를 얻으려고 합니다.

object.field

예를 들어 오브젝트에 액세스하려고 합니다.를 들어, 생성자와 같은 클래스 내부의 필드를 사용할 수 있습니다.

this.field

기본적으로 클래스 내에서 호출될 때 object name 키워드가 이 키워드로 대체됩니다.보통 이 작업을 외부에서 수행할 이유는 별로 없습니다. 같은 이름의 두 변수가 클래스의 필드이고 다른 변수는 메서드의 내부 변수인 경우 두 변수 사이의 해독에 도움이 됩니다.예를 들어, 다음과 같은 것이 있습니다. (하, 알겠죠?)이거? 헤헤... 나만?ok : (이제 갈게요)

public String Name;
//Constructor for {object} class
public object(String Name){
    Name = Name;
}

컴파일러는 컨스트럭터의 파라미터에 정의되어 있는Name 변수와 클래스 필드 선언 내의 Name 변수 간의 차이를 알 수 없기 때문에 Name 파라미터를 대신 할당하게 됩니다.Name 파라미터의 값. 이 파라미터는 아무런 도움이 되지 않으며, 문자 그대로 목적이 없습니다.이것은 대부분의 새로운 프로그램에서 흔히 볼 수 있는 문제이며, 저도 그 희생자가 되었습니다.이 파라미터를 정의하는 올바른 방법은 다음과 같습니다.

public String Name;
//Constructor for {object} class
public object(String Name){
    this.Name = Name;
}

이렇게 하면 컴파일러는 할당하려는 Name 변수가 메서드의 일부가 아닌 클래스의 일부라는 것을 알고 올바르게 할당합니다.즉, Constructor에 입력하는 모든 것에 Name 필드를 할당합니다.

요약하자면, 기본적으로 작업 중인 클래스의 객체인스턴스 필드를 참조하기 때문에 키워드 "this", 즉 객체 또는 이 인스턴스를 의미합니다.컴파일러가 바로 실행되기 때문에 찾기 어려운 버그를 피하기 위해 이름만 사용하는 것이 아니라 클래스 필드를 호출할 때 이것을 사용하는 것이 좋습니다.

퀵 구글 검색 결과, http://xahlee.org/java-a-day/this.html

거의 "this" 키워드는 현재 객체(그 자신)를 참조하는 것입니다.

this는 현재 오브젝트에 대한 참조입니다.http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.html

이것은 일부 메서드 또는 생성자 내에서 사용할 수 있습니다.

현재 개체에 대한 참조를 반환합니다.

이것은 당신이 지금 "들어" 있는 대상을 말합니다.즉, 이것은 수신 객체를 의미합니다.참조하는 변수를 명확히 하기 위해 사용합니다.Java_whitepaper 페이지:37

class Point extends Object
{
    public double x;
    public double y;

    Point()
    {
        x = 0.0;
        y = 0.0;
    }

    Point(double x, double y)
    {
        this.x = x;
        this.y = y;
    }
}

위의 예에서는 이것을 코드화합니다.x/this.y는 점 클래스 x 및 y 변수인 현재 클래스를 참조합니다.여기서 (double x, double y)는 다른 클래스에서 전달된 이중 값이며 현재 클래스에 값을 할당합니다.

저도 같은 답을 찾고 있었는데, 왠지 개념을 명확하게 이해할 수 없었습니다.하지만 마침내 는 이 링크에서 그것을 이해했다.

Java 키워드입니다.클래스의 메서드 또는 생성자 내에서 사용할 수 있습니다.메서드 또는 생성자를 호출하는 현재 개체에 대한 참조로 작동합니다.이 키워드는 인스턴스 메서드 또는 컨스트럭터 내에서 현재 객체의 임의의 멤버를 참조하기 위해 사용할 수 있습니다.

링크의 예를 확인하여 명확하게 이해하십시오.

인스턴스 변수가 생성자에 선언된 변수와 동일한 경우 "this"를 사용하여 데이터를 할당합니다.

class Example{
     int assign;// instance variable

     Example(int assign){ // variable inside constructor
          this.assign=assign;
     }
}

이게 도움이 됐으면 좋겠다.

Java에서 "this"는 미리 정의된 변수입니다.메서드에서 "this"를 사용하면 현재 실행 중인 객체의 참조(주소)를 얻을 수 있습니다.예를 들면.

this.age ---> 현재 실행 중인 오브젝트의 경과시간.

이 키워드로 이해한 것을 공유하고 싶다.이 키워드는 다음과 같이 Java에서 6가지 사용법이 있습니다.

1. 현재 클래스 변수를 참조하기 위해 사용할 수 있습니다.암호로 이해하게 해주세요.*

다음 예에서 이 키워드를 사용하지 않는 경우의 문제를 이해합시다.

class Employee{  
int id_no;  
String name;  
float salary;  
Student(int id_no,String name,float salary){  
id_no = id_no;  
name=name;  
salary = salary;  
}  
void display(){System.out.println(id_no +" "+name+" "+ salary);}  
}  
class TestThis1{  
public static void main(String args[]){  
Employee s1=new Employee(111,"ankit",5000f);  
Employee s2=new Employee(112,"sumit",6000f);  
s1.display();  
s2.display();  
}}  

출력:-

0 null 0.0
0 null 0.0

위의 예에서는 파라미터(formal 인수)와 인스턴스 변수는 동일합니다.따라서 로컬 변수와 인스턴스 변수를 구별하기 위해 이 키워드를 사용합니다.

class Employee{  
int id_no;  
String name;  
float salary;  
Student(int id_no,String name,float salary){  
this.id_no = id_no;  
this.name=name;  
this.salary = salary;  
}  
void display(){System.out.println(id_no +" "+name+" "+ salary);}  
}  
class TestThis1{  
public static void main(String args[]){  
Employee s1=new Employee(111,"ankit",5000f);  
Employee s2=new Employee(112,"sumit",6000f);  
s1.display();  
s2.display();  
}} 

출력:

111 ankit 5000
112 sumit 6000

2. 현재의 클래스 메서드를 호출합니다.

class A{  
void m(){System.out.println("hello Mandy");}  
void n(){  
System.out.println("hello Natasha");  
//m();//same as this.m()  
this.m();  
}  
}  
class TestThis4{  
public static void main(String args[]){  
A a=new A();  
a.n();  
}}  

출력:

hello Natasha
hello Mandy

3. 현재 클래스 생성자를 호출합니다.컨스트럭터 체인에 사용됩니다.

class A{  
A(){System.out.println("hello ABCD");}  
A(int x){  
this();  
System.out.println(x);  
}  
}  
class TestThis5{  
public static void main(String args[]){  
A a=new A(10);  
}}

출력:

hello ABCD
10

4. 메서드에서 인수로 통한다.

class S2{  
  void m(S2 obj){  
  System.out.println("The method is invoked");  
  }  
  void p(){  
  m(this);  
  }  
  public static void main(String args[]){  
  S2 s1 = new S2();  
  s1.p();  
  }  
}  

출력:

The method is invoked

5. 컨스트럭터 호출에서 인수로 전달한다.

class B{  
  A4 obj;  
  B(A4 obj){  
    this.obj=obj;  
  }  
  void display(){  
    System.out.println(obj.data);//using data member of A4 class  
  }  
}  

class A4{  
  int data=10;  
  A4(){  
   B b=new B(this);  
   b.display();  
  }  
  public static void main(String args[]){  
   A4 a=new A4();  
  }  
} 

출력:-

10

6. 현재 클래스 인스턴스를 반환합니다.

class A{  
A getA(){  
return this;  
}  
void msg(){System.out.println("Hello");}  
}  
class Test1{  
public static void main(String args[]){  
new A().getA().msg();  
}  
}  

출력:-

Hello

또한 이 키워드는 구문이 잘못되었기 때문에 .(dot) 없이 사용할 수 없습니다.

모두가 말했듯이, 이것은 현재 객체/현재 인스턴스를 나타냅니다.저는 이렇게 이해해요.그냥 '이것'일 경우 클래스 오브젝트를 반환합니다.아래 예:이것이 있으면 Dog.무엇, 무엇인가가 그 클래스의 메서드 또는 변수이다.

class Dog {
private String breed;
private String name;

Dog(String breed, String name) {
    this.breed = breed;
    this.name = name;
}

public Dog getDog() {
    // return Dog type
    return this;
}

}

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/3728062/what-is-the-meaning-of-this-in-java

반응형