जावा में "यह" का अर्थ क्या है?


140

आम तौर पर, मैं thisकेवल कंस्ट्रक्टर में उपयोग करता हूं ।

मैं समझता हूं कि इसका उपयोग पैरामीटर चर (उपयोग करके this.something) की पहचान करने के लिए किया जाता है , अगर इसका वैश्विक चर के साथ एक ही नाम है।

हालाँकि, मुझे नहीं पता कि thisजावा में वास्तविक अर्थ क्या है और अगर मैं thisबिना डॉट ( .) का उपयोग करूँ तो क्या होगा ।


7
उत्तरदाताओं को: meta.stackexchange.com/questions/15775/…
BalusC

2
यक्षमश! तो दोस्तों। आप यहाँ मेरे सवाल का भी उल्लेख करना चाह सकते हैं - stackoverflow.com/questions/23334336/… चेनक्वी।
एरान मोराद

जवाबों:


157

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()प्रिंट होगा

1
42
MyThisTest a = 42

तो प्रभावी रूप से आप इसे कई चीजों के लिए उपयोग करते हैं:

  • स्पष्ट करें कि आप किसी फ़ील्ड के बारे में बात कर रहे हैं, जब फ़ील्ड के समान नाम के साथ भी कुछ और है
  • वर्तमान वस्तु को संपूर्ण रूप में देखें
  • अपने निर्माता में वर्तमान वर्ग के अन्य कंस्ट्रक्टरों को आमंत्रित करें

यह काम नहीं कर रहा है। मुझे यह कहते हुए एक त्रुटि मिलती है कि एक mainविधि की आवश्यकता है। यदि मैं मुख्य विधि जोड़ता हूं, तो मुझे वहां से कॉल करना होगा। और मुख्य के अंदर फ्रोबनीट () को कॉल करने का कोई भी प्रयास यह कहता है कि आप एक स्थिर के अंदर से गैर-स्थिर संदर्भ को कॉल नहीं कर सकते। और स्थैतिक को mainरिटर्न से हटाते हुए फिर से त्रुटि होती है कि कोई मुख्य विधि नहीं मिली है। कृपया समझाएँ।
dbconfession 21

7
@dbconfession: यहां कोड का मतलब स्टैंड-अलोन, सेल्फ-रनिंग प्रोग्राम नहीं है। आप कोड और पाठ को पढ़ने के लिए हैं , इसे न चलाएं! यह मान्य कोड है, लेकिन यह केवल प्रदर्शन उद्देश्यों के लिए है (इसीलिए इसका उचित मुख्य नहीं है)। मुख्य विधि की सहायता के लिए, कृपया stackoverflow.com/questions/146576/… देखें ।
जोआचिम सॉर

@ जोशिम धन्यवाद! मुझे इस बारे में कुछ मौलिक याद आ रही है कि एक विधि को स्थिर बनाने का क्या अर्थ है और कैसे this.काम करता है। मेरी समझ यह है कि this.आप किसी विधि या चर को कॉल करने की अनुमति देते हैं जो वर्ग के तात्कालिक संस्करण के लिए अद्वितीय है, विधि या चर के किसी अन्य संस्करण को मौजूद करने की अनुमति देता है जिसे आह्वान किए बिना बुलाया जाता है this. एक साधारण में Test.classमुझे दो तरीके हैं: public static void main()और public Test() मैं विधियों के बीच सूचना पास नहीं कर सकते क्योंकि mainस्थिर है और निर्माणकर्ताओं को स्थिर नहीं बनाया जा सकता है। क्या मुझे एक नए प्रश्न के रूप में पोस्ट करना चाहिए?
dbconfession

@dbconfession: मुझे लगता है कि आपका प्रश्न पहले से ही कहीं और उत्तर दिया गया है, लेकिन मैं बिल्कुल समझ नहीं पाता कि आपका प्रश्न क्या है, इसलिए आप इसे पोस्ट भी कर सकते हैं (लेकिन इसे डुप्लिकेट के रूप में बंद करने के लिए तैयार रहें)। हालांकि, सबसे मौलिक स्तर पर, एक विधि staticमूल रूप से बनाने का मतलब है कि आपको इसे कॉल करने के लिए कक्षा के एक उदाहरण की आवश्यकता नहीं है और आपके पास thisइसके अंदर पहुंच नहीं होगी ।
जोकिम सॉयर

@JoachimSauer अगर मैं इसे चलाना चाहता था, तो मैं कैसे करूंगा? मुझे dbconfession जैसी ही समस्या है।
FudgeMuffins

52

निम्नलिखित यहाँ से एक कॉपी और पेस्ट है , लेकिन thisकीवर्ड के सभी अलग-अलग उपयोगों को बहुत अच्छी तरह से समझाता है :

परिभाषा: जावा के thisकीवर्ड का उपयोग उस पद्धति के वर्तमान उदाहरण को संदर्भित करने के लिए किया जाता है जिस पर इसका उपयोग किया जाता है।

इसका उपयोग करने के तरीके निम्नलिखित हैं:

  1. यह विशेष रूप से निरूपित करने के लिए कि स्थिर या स्थानीय चर के बजाय उदाहरण चर का उपयोग किया जाता है। अर्थात्,

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

    यहाँ यह उदाहरण चर को संदर्भित करता है। यहां स्थानीय चर के लिए पूर्वता अधिक है। इसलिए thisस्थानीय चर को निरूपित करता है। यदि स्थानीय चर जो पैरामीटर का नाम उदाहरण चर के समान नहीं है, तो thisइसका उपयोग किया जाता है या नहीं, यह उदाहरण चर को दर्शाता है।

  2. This का उपयोग निर्माणकर्ताओं को संदर्भित करने के लिए किया जाता है

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

    यह उसी जावा वर्ग के निर्माता को आमंत्रित करता है जिसके दो पैरामीटर हैं।

  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इसके उदाहरण के साथ जुड़ा हुआ है और यह स्थैतिक तरीकों से काम नहीं करेगा।


44

पूर्ण thisहोने के लिए, बाहरी वस्तु को संदर्भित करने के लिए भी इस्तेमाल किया जा सकता है

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

5
thisजिसकी मुझे तलाश थी वह है! ;)
forresthopkinsa

3
बस इतना हीsuper
किलोजॉय

18

यह किसी विशेष वस्तु के वर्तमान उदाहरण को संदर्भित करता है, इसलिए आप कुछ ऐसा लिख ​​सकते हैं

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;
    }
}

4
इसे कॉल करते समय उचित शैली का उपयोग करने के लिए सावधान रहें: o.getMe ()। GetMe ()। OutOfHere ()
जस्टिन के

8

एक वर्ग को लिखने के लिए अपने सामान्य रूप से स्विंग में ActionListener, घटकों के लिए एक ActionListener के रूप में वर्तमान उदाहरण (यानी 'यह') जोड़ते हैं।

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!");
    }

}

7

यह "वर्तमान संदर्भ में वस्तु का संदर्भ" प्रभावी ढंग से है। उदाहरण के लिए, "यह ऑब्जेक्ट" प्रिंट करने के लिए आप लिख सकते हैं:

System.out.println(this);

ध्यान दें कि "वैश्विक चर" का उपयोग कुछ हद तक बंद है ... यदि आप उपयोग कर रहे हैं this.variableNameतो परिभाषा के अनुसार यह एक वैश्विक चर नहीं है - यह इस विशेष उदाहरण के लिए विशिष्ट चर है।


7

Programming.guide पर एक लेख का हवाला देते हुए :


thisहै दो का उपयोग करता है एक जावा प्रोग्राम में।

1. वर्तमान वस्तु के संदर्भ के रूप में

इस मामले में वाक्यविन्यास आमतौर पर कुछ ऐसा दिखता है

this.someVariable = someVariable;

इस प्रकार का उपयोग यहाँ वर्णित है: 'यह' संदर्भ (उदाहरण के साथ)

2. एक अलग कंस्ट्रक्टर को कॉल करने के लिए

इस मामले में वाक्यविन्यास आमतौर पर कुछ ऐसा दिखता है

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

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

इस प्रकार का उपयोग यहां वर्णित है: यह (…) कंस्ट्रक्टर कॉल (उदाहरण के साथ)


4

यह उस उदाहरण को संदर्भित करता है जिस पर विधि कहा जाता है

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

4

इस कीवर्ड नीचे दिए गए कोड पर विचार (बस एक exampple, इसलिए उम्मीद मानक जावा कोड न) उदाहरण के लिए, एक ब्लॉक की वर्तमान चर उल्लेख करने के लिए प्रयोग किया जाता है:

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


3

ऑब्जेक्ट में विधियाँ और विशेषताएँ (चर) होती हैं, जो कक्षाओं से प्राप्त होती हैं, यह निर्दिष्ट करने के लिए कि thisआरक्षित शब्द का उपयोग किसी विशेष वस्तु के किस तरीके और चर से होता है। उदाहरण के चर के मामले में, अंतर्निहित और स्पष्ट मापदंडों के बीच अंतर को समझना महत्वपूर्ण है। ऑब्जेक्ट के fillTankलिए कॉल पर एक नज़र डालें audi

Car audi= new Car();

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

कोष्ठक में मान निहित पैरामीटर है और ऑब्जेक्ट स्वयं स्पष्ट पैरामीटर है, ऐसे तरीके जिनमें स्पष्ट पैरामीटर नहीं हैं, अंतर्निहित पैरामीटर का उपयोग करें, fillTankविधि में एक स्पष्ट और एक अंतर्निहित पैरामीटर दोनों हैं।

कक्षा fillTankमें विधि पर एक करीब से नज़र डालेंCar

public class Car()
{
   private double tank;

   public Car()
   {
      tank = 0;
   }

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

}

इस वर्ग में हमारे पास एक उदाहरण चर "टैंक" है। टैंक ऑब्जेक्ट चर का उपयोग करने वाली कई वस्तुएं हो सकती हैं, यह निर्दिष्ट करने के लिए कि उदाहरण चर "टैंक" का उपयोग किसी विशेष ऑब्जेक्ट के लिए किया जाता है, हमारे मामले में "ऑडी" ऑब्जेक्ट जिसका हमने पहले निर्माण किया था, हम thisआरक्षित कीवर्ड का उपयोग करते हैं । उदाहरण के लिए, चर का उपयोग एक विधि में 'इस' से होता है, यह दर्शाता है कि उदाहरण चर, हमारे मामले में "टैंक", निहित पैरामीटर का उदाहरण चर है।

जावा संकलक स्वचालित रूप से thisआरक्षित शब्द जोड़ता है ताकि आपको इसे जोड़ना न पड़े, यह प्राथमिकता का विषय है। आप thisडॉट (।) के बिना उपयोग नहीं कर सकते क्योंकि वे जावा (वाक्यविन्यास) के नियम हैं।

संक्षेप में।

  • ऑब्जेक्ट कक्षाओं द्वारा परिभाषित होते हैं और उनके तरीके और चर होते हैं
  • एक विधि में एक उदाहरण चरthis पर उपयोग इंगित करता है कि, उदाहरण चर निहित पैरामीटर से संबंधित है, या यह कि अंतर्निहित पैरामीटर का एक उदाहरण चर है।
  • निहित पैरामीटर वह वस्तु है जिसे इस मामले में "ऑडि" कहा जाता है।
  • जावा संकलक स्वचालित रूप से इस आरक्षित शब्द को जोड़ता है, इसे जोड़ना प्राथमिकता का विषय है
  • this बिना बिंदी के (।) का उपयोग नहीं किया जा सकता है, यह वाक्यात्मक रूप से अमान्य है
  • this स्थानीय चर और वैश्विक चर के बीच अंतर करने के लिए भी उपयोग किया जा सकता है जिनका नाम समान है
  • thisआरक्षित शब्द भी तरीकों पर लागू होता है, इंगित करने के लिए एक विधि एक विशेष वस्तु के अंतर्गत आता है।

2

इंस्टेंस चर आपके द्वारा बनाई जा रही हर वस्तु के लिए सामान्य हैं। कहते हैं, दो उदाहरण चर है

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);



}
}

यदि आपने कोड के ऊपर देखा है, तो हमने तीन ऑब्जेक्ट्स शुरू किए हैं और तीन ऑब्जेक्ट्स 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);
}

2

(मैं जानता हूँ कि मुझे देर हो गई है, लेकिन मुझे डर लगता है कि तुमने मुझे कभी नहीं देखा है)

इस सबसे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में कीवर्ड अगर हर तरह नहीं है कि उस वर्ग के मौजूदा वस्तु उदाहरण के प्रति अपनी एक संदर्भ। यह अनिवार्य रूप से विधि के नाम से उस वस्तु पर कॉल करने के रूप में एक ही बात है। शायद इसलिए कोई मतलब नहीं था

कक्षा के बाहर, वस्तु के उस उदाहरण के भीतर कुछ कॉल करने के लिए, उदाहरण के लिए एक कहना आपके पास एक ऑब्जेक्ट है जिसे ऑब्जेक्ट कहा जाता है और आप एक फ़ील्ड प्राप्त करना चाहते हैं जिसका आपको उपयोग करना होगा

object.field

उदाहरण के लिए कहें कि आप अपने वर्ग के अंदर से ऑब्जेक्ट .field तक पहुँचने की कोशिश कर रहे हैं, उदाहरण के लिए, आपका कंस्ट्रक्टर, आप उपयोग कर सकते हैं

this.field

इस कीवर्ड अनिवार्य वस्तु नाम कीवर्ड जब कक्षा के अंदर बुलाया जा रहा है बदल देता है। आमतौर पर ऐसा करने का कोई कारण नहीं है, अगर आपके पास एक ही नाम के दो चर हैं जिनमें से एक वर्ग का एक क्षेत्र है और दूसरा सिर्फ एक विधि के अंदर परिवर्तनशील होने के कारण, यह दोनों के बीच समझदारी में मदद करता है । उदाहरण के लिए यदि आपके पास यह है: (हाह, इसे प्राप्त करें? यह ? हे .... बस मुझे? ठीक है :( मैं अब छोड़ दूँगा)

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

यह कुछ समस्याओं का कारण होगा, कंपाइलर कंस्ट्रक्टर के लिए मापदंडों में परिभाषित नाम चर और आपकी कक्षा की फील्ड घोषणाओं के अंदर नाम चर के बीच का अंतर जानने में सक्षम नहीं होगा, इसलिए यह नाम पैरामीटर को असाइन करेगा। .. नाम पैरामीटर का मूल्य जो कुछ भी फायदेमंद नहीं है और इसका कोई उद्देश्य नहीं है। यह एक सामान्य मुद्दा है जो अधिकांश नए कार्यक्रम करते हैं और मैं भी इसका शिकार था। वैसे भी, इस पैरामीटर को परिभाषित करने का सही तरीका उपयोग करना होगा:

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

इस तरह, संकलक जानता है कि आप जिस नाम चर को निर्दिष्ट करने का प्रयास कर रहे हैं वह वर्ग का एक हिस्सा है और विधि का एक हिस्सा नहीं है और इसे सही ढंग से असाइन करता है, जिसका अर्थ है कि आप जो भी निर्माण में डालते हैं वह नाम फ़ील्ड को असाइन करता है।

इसे सारांशित करने के लिए, यह अनिवार्य रूप से उस कक्षा के ऑब्जेक्ट उदाहरण के एक क्षेत्र को संदर्भित करता है जिस पर आप काम कर रहे हैं, इसलिए यह "यह" कीवर्ड है, जिसका अर्थ है यह ऑब्जेक्ट या यह उदाहरण। इसका उपयोग करने का एक अच्छा अभ्यास यह है कि अपनी बग के क्षेत्र को कॉल करने के बजाय केवल संभावित बग से बचने के लिए नाम का उपयोग करना मुश्किल है क्योंकि कंपाइलर उनके ठीक ऊपर चलता है।




1

यह किसी विधि या कंस्ट्रक्टर के अंदर उपयोग किया जा सकता है।

यह वर्तमान वस्तु का संदर्भ देता है।


1

यह उस वस्तु को संदर्भित करता है जिसे आप अभी "इन" कर रहे हैं। दूसरे शब्दों में, यह प्राप्त वस्तु को संदर्भित करता है। आप इसका उपयोग यह स्पष्ट करने के लिए करते हैं कि आप किस चर का उल्लेख कर रहे हैं। 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) वर्तमान क्लास को मान असाइन करने के लिए अलग-अलग वर्ग से पारित किए गए दोहरे मान हैं।


0

मैं भी उसी उत्तर की तलाश में था, और किसी तरह अवधारणा को स्पष्ट रूप से नहीं समझ सका। लेकिन आखिरकार मैंने इसे इस लिंक से समझा

यह जावा में एक कीवर्ड है। जिसका उपयोग विधि या वर्ग के निर्माता के अंदर किया जा सकता है। यह (यह) एक वर्तमान वस्तु के संदर्भ के रूप में काम करता है जिसका विधि या निर्माणकर्ता आह्वान किया जा रहा है। इस कीवर्ड का उपयोग किसी इंस्टेंस मेथड या कंस्ट्रक्टर से करंट ऑब्जेक्ट के किसी भी मेंबर को रेफर करने के लिए किया जा सकता है।

स्पष्ट समझ के लिए लिंक में उदाहरण देखें


सही उदाहरण
sathya

0

यदि उदाहरण चर कंस्ट्रक्टर में घोषित चर के समान हैं तो हम डेटा असाइन करने के लिए "इस" का उपयोग करते हैं।

class Example{
     int assign;// instance variable

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

उम्मीद है की यह मदद करेगा।


0

जावा में "यह" एक पूर्वनिर्धारित चर है। यदि हम "इस" विधि का उपयोग करते हैं तो इसका मतलब है कि हम वर्तमान में चल रही वस्तु का संदर्भ (पता) प्राप्त कर रहे हैं। एक उदाहरण के लिए।

this.age ---> वर्तमान में चल रही वस्तु की आयु।


0

मैं इस कीवर्ड से जो कुछ भी समझा था उसे साझा करना चाहूंगा। इस कीवर्ड के जावा में 6 usages हैं: -

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

उपरोक्त उदाहरण में, पैरामीटर (औपचारिक तर्क) और उदाहरण चर समान हैं। इसलिए, हम स्थानीय चर और उदाहरण चर को अलग करने के लिए इस कीवर्ड का उपयोग कर रहे हैं।

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

साथ ही, यह कीवर्ड बिना उपयोग नहीं किया जा सकता है। (डॉट) क्योंकि यह सिंटैक्स अमान्य है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.