জাভাতে "এটি" এর অর্থ কী?


140

সাধারণত, আমি thisকেবল নির্মাণকারীগুলিতেই ব্যবহার করি ।

আমি বুঝতে পারি যে এটি প্যারামিটার ভেরিয়েবল সনাক্ত করতে ব্যবহৃত হয় (ব্যবহার করে this.something), যদি এর বৈশ্বিক ভেরিয়েবলের সাথে একই নাম থাকে।

তবে আমি জানি না যে thisজাভাতে আসল অর্থটি কী এবং আমি thisবিনা ( .) ছাড়াই ব্যবহার করলে কী হবে ।



2
যক্ষ্মেশ! বন্ধুরা। - তুমি আমার প্রশ্নের এখানে পড়ুন পাশাপাশি চাইতে পারেন stackoverflow.com/questions/23334336/... Chenqui।
এরান মোরাড

উত্তর:


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
মাইথিসটেষ্ট a = 42

তাই কার্যকরভাবে আপনি এটি একাধিক জিনিসের জন্য ব্যবহার করেন:

  • আপনি একটি ক্ষেত্রের বিষয়ে কথা বলছেন তা স্পষ্ট করে বলুন, যখন ক্ষেত্রের একই নামের সাথে অন্য কিছু রয়েছে
  • সামগ্রিকভাবে বর্তমান অবজেক্টটি উল্লেখ করুন
  • আপনার নির্মাণকারীর মধ্যে বর্তমান বর্গের অন্যান্য নির্মাণকারীদের অনুরোধ করুন

এটি কাজ করছে না একটি mainপদ্ধতি প্রয়োজন বলে আমি একটি ত্রুটি পেয়েছি । যদি আমি মূল পদ্ধতিটি যুক্ত করি তবে আমাকে সেখান থেকে কল করতে হবে। এবং মুখ্য ভিতরে ফ্রোবনেটিকে () কল করার যে কোনও প্রয়াস বলে যে আপনি কোনও স্থিতিশীলের অভ্যন্তর থেকে অ স্থিতিশীল রেফারেন্স কল করতে পারবেন না। এবং স্থিতিশীল অপসারণ থেকে mainত্রুটি আবার ত্রুটি করে যে কোনও প্রধান পদ্ধতি খুঁজে পাওয়া যায় নি। দয়া করে ব্যাখ্যা করুন.
dbconfession

7
@ ডিবি কনফেশন: এখানে কোডটি এককভাবে স্ব-চলমান প্রোগ্রাম হিসাবে বোঝানো হয়নি। আপনি বোঝানো করছি পড়া কোড এবং টেক্সট, তাই না চালানোর জন্য! এটি বৈধ কোড, তবে এটি কেবল প্রদর্শনের উদ্দেশ্যেই বোঝানো হয়েছে (এজন্য এটির যথাযথ প্রধান নেই)। মূল পদ্ধতির সাহায্যের জন্য, দয়া করে stackoverflow.com/questions/146576/… দেখুন
জোছিম সউর

@ জোছিম ধন্যবাদ! কোনও পদ্ধতি স্থির করার কী অর্থ এবং কীভাবে this.কাজ করে সে সম্পর্কে আমি মৌলিক কিছু অনুপস্থিত । আমার বোধগম্যতা হ'ল এটি this.আপনাকে ক্লাসের ইনস্ট্যান্টেড সংস্করণে অনন্য এমন একটি পদ্ধতি বা পরিবর্তনশীল কল করতে দেয়, পদ্ধতিটির অন্য সংস্করণ বা ভেরিয়েবলের উপস্থিতির অনুমতি দেয় যা ডাকে না this. বলে ডাকে Test.classআমার দুটি পদ্ধতি রয়েছে: public static void main()এবং public Test() আমি পদ্ধতিগুলির মধ্যে তথ্য পাস করতে পারে না কারণ mainস্ট্যাটিক এবং কনস্ট্রাক্টররা স্থির করতে পারে না। আমার কি নতুন প্রশ্ন হিসাবে পোস্ট করা উচিত?
dbconfession

@ ডিবি কনফেশন: আপনার প্রশ্নের উত্তর ইতিমধ্যে অন্য কোথাও জবাব পেয়েছে বলে আমার মনে হচ্ছে, তবে আপনার প্রশ্নটি ঠিক কী তা আমি যথেষ্ট বুঝতে পারি না, তাই আপনি এটি পোস্টও করতে পারেন (তবে এটি নকল হিসাবে বন্ধ করার জন্য প্রস্তুত)। যাইহোক, সর্বাধিক মৌলিক স্তরে, একটি পদ্ধতি তৈরির staticঅর্থ মূলত এর অর্থ হল যে এটি বলার জন্য আপনার ক্লাসের কোনও উদাহরণ প্রয়োজন নেই এবং thisএটির ভিতরে আপনার অ্যাক্সেস থাকবে না ।
জোছিম সউর

@ জোছিমসৌর আমি যদি এটি চালাতে চাই তবে কীভাবে করব? আমি dbconfession হিসাবে একই সমস্যা পেয়েছি।
ফুজমুফিনস

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এর উদাহরণের সাথে যুক্ত এবং এটি স্থির পদ্ধতিতে কাজ করবে না।



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 ()। আউট হেয়ার ()
জাস্টিন কে

8

সুইংয়ের ক্ষেত্রে ক্লাসটি লেখার পক্ষে মোটামুটি সাধারণ যা প্রয়োগ করে 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

প্রোগ্রামিং.গাইডে একটি নিবন্ধের উদ্ধৃতি :


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



}
}

আপনি যদি উপরে কোডটি লক্ষ্য করেছেন তবে আমরা তিনটি বস্তু সূচনা করেছি এবং তিনটি বস্তু সেটমাইনেস্ট্যান্স ভ্যালু পদ্ধতিতে কল দিচ্ছে। আপনি কীভাবে মনে করেন যে জেভিএম সঠিকভাবে প্রতিটি বস্তুর মান নির্ধারণ করে? কৌশলটি রয়েছে, জেভিএম এই কোডটি এটি কীভাবে উপরে প্রদর্শিত হবে তা দেখবে না। পরিবর্তে এটি নীচের কোডের মতো দেখতে পাবে;

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

উদাহরণস্বরূপ বলুন আপনি ক্লাসের অভ্যন্তর থেকে অবজেক্ট অ্যাক্সেস করার চেষ্টা করছেন your উদাহরণস্বরূপ আপনার নির্মাতা , আপনি ব্যবহার করতে পারেন

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

এইভাবে, সংকলকটি যে নাম পরিবর্তনশীলকে আপনি নির্ধারণের চেষ্টা করছেন তা জানেন এটি একটি শ্রেণীর অংশ এবং কোনও পদ্ধতির অংশ নয় এবং সঠিকভাবে বরাদ্দ করেছে, এর অর্থ এটি আপনি নির্মাণকারীর মধ্যে যা রাখবেন তার জন্য নাম ক্ষেত্রটি বরাদ্দ করে।

সংক্ষিপ্তসার হিসাবে, এটি মূলত আপনি যে শ্রেণীর উপর কাজ করছেন তার অবজেক্টের উদাহরণের ক্ষেত্রের উল্লেখ করে, সুতরাং এটি "এটি" মূল শব্দ, যার অর্থ এটি এই বস্তু, বা এই উদাহরণ। আপনার ক্লাসের কোনও ফিল্ডকে কল করার সময় এটি ব্যবহার করা ভাল অভ্যাস যা সম্ভাব্য বাগগুলি এড়ানোর জন্য কেবল নামটি ব্যবহার করা ঠিক নয় যা সংকলকটি ঠিক তার উপর দিয়ে চলেছে find


1

একটি দ্রুত গুগল অনুসন্ধান এই ফলাফলটি এনেছে: http://xahlee.org/java-a-day/this.html

খুব সুন্দর "এই" কীওয়ার্ডটি বর্তমান বস্তুর (নিজেই) একটি উল্লেখ a



1

এটি কোনও পদ্ধতি বা নির্মাণকারীর ভিতরে ব্যবহার করা যেতে পারে।

এটি বর্তমান বস্তুর রেফারেন্স প্রদান করে returns


1

এটি এই মুহুর্তে আপনি যে "" ভিতরে "রয়েছেন তা বোঝায়। অন্য কথায়, এটি প্রাপ্ত বস্তুকে বোঝায়। আপনি কোন পরিবর্তনশীল উল্লেখ করছেন তা স্পষ্ট করতে আপনি এটি ব্যবহার করেন। জাভা_হাইটপেপার পৃষ্ঠা: 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;
    }
}

উপরের উদাহরণ কোডে this.x / this.y বর্তমান বর্গকে বোঝায় যেটি হল পয়েন্ট শ্রেণি x এবং y ভেরিয়েবল যেখানে (ডাবল এক্স, ডাবল y) বিভিন্ন শ্রেণি থেকে বর্তমান শ্রেণীর মান নির্ধারণের জন্য দ্বিগুণ মান পাস করা হয়।


0

আমিও একই উত্তরটির সন্ধান করছিলাম, এবং কোনওভাবেই ধারণাটি পরিষ্কারভাবে বুঝতে পারি নি। তবে শেষ পর্যন্ত আমি এই লিঙ্কটি থেকে বুঝতে পেরেছি

এটি জাভাতে একটি কীওয়ার্ড। যা ক্লাসের মেথড বা কনস্ট্রাক্টরের ভিতরে ব্যবহার করা যেতে পারে। এটি (এটি) একটি বর্তমান অবজেক্টের রেফারেন্স হিসাবে কাজ করে যার পদ্ধতি বা নির্মাণকারীর প্রার্থনা করা হচ্ছে। এই কীওয়ার্ডটি কোনও ইনস্ট্যান্স পদ্ধতি বা কনস্ট্রাক্টরের মধ্য থেকে বর্তমান অবজেক্টের কোনও সদস্যকে উল্লেখ করতে ব্যবহার করা যেতে পারে।

পরিষ্কার বোঝার জন্য লিঙ্কে উদাহরণগুলি দেখুন Check


নিখুঁত উদাহরণ
ya

0

উদাহরণস্বরূপ ভেরিয়েবলগুলি কনস্ট্রাক্টরে ঘোষিত ভেরিয়েবলগুলির সাথে একই হয় তবে আমরা ডেটা বরাদ্দ করতে "এটি" ব্যবহার করি।

class Example{
     int assign;// instance variable

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

আশাকরি এটা সাহায্য করবে.


0

জাভাতে "এটি" একটি পূর্বনির্ধারিত পরিবর্তনশীল। যদি আমরা পদ্ধতিতে "এটি" ব্যবহার করি তবে এর অর্থ আমরা বর্তমানে চলমান অবজেক্টের রেফারেন্স (ঠিকানা) পাচ্ছি। একটি উদাহরণ জন্য।

this.age ---> বর্তমানে চলমান অবজেক্টের বয়স।


0

আমি এই কীওয়ার্ড থেকে যা বুঝলাম তা ভাগ করে নিতে চাই। এই কীওয়ার্ডটির জাভাতে 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

উপরের উদাহরণে প্যারামিটার (আনুষ্ঠানিক যুক্তি) এবং উদাহরণ ভেরিয়েবলগুলি একই। সুতরাং, আমরা এই কীওয়ার্ডটি স্থানীয় ভেরিয়েবল এবং উদাহরণ ভেরিয়েবলের পার্থক্য করতে ব্যবহার করছি।

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

২. বর্তমান শ্রেণি পদ্ধতিতে প্রার্থনা করা।

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

৩. বর্তমান বর্গ নির্মাণকারীকে প্রার্থনা করা। এটি চেইন কনস্ট্রাক্টর করতে ব্যবহৃত হয়।

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

৫. কনস্ট্রাক্টর কলে একটি আর্গুমেন্ট হিসাবে পাস করতে

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

Current. বর্তমান শ্রেণীর উদাহরণটি ফিরিয়ে আনতে

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

এছাড়াও, এই কীওয়ার্ডটি (বিন্দু) ব্যতীত ব্যবহার করা যাবে না কারণ এটির বাক্য গঠনটি অবৈধ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.