CodeGym /جاوا بلاگ /Random-UR /جاوا سٹرنگ برابر ()
John Squirrels
سطح
San Francisco

جاوا سٹرنگ برابر ()

گروپ میں شائع ہوا۔
مساوات کے لیے اشیاء کا موازنہ کرنا پروگرامنگ کے سب سے اہم کاموں میں سے ایک ہے۔ تاہم، عددی دنیا میں اس کے تمام واضح ہونے کے لیے، یہ ہمیشہ واضح نہیں ہوتا ہے کہ ڈیٹا کی دوسری اقسام کا موازنہ کیسے کیا جائے۔ جاوا آبجیکٹ کلاس، ایک بنیادی، موازنہ کے لیے equals() اور compareTo() طریقوں کی وضاحت کرتا ہے۔ اسٹرنگ کلاس اپنے برابر () طریقہ کو اوور رائیڈ کرتی ہے۔ Java String equals() طریقہ دو تاروں کا ان کے مواد کے مطابق موازنہ کرتا ہے۔ String equals() طریقہ دستخط اس طرح لگتا ہے:
public boolean equals(Object anotherObject)
String equals() طریقہ سٹرنگ کا موازنہ مخصوص آبجیکٹ سے کرتا ہے۔ اگر سٹرنگز برابر ہیں، تو یہ سچ لوٹتا ہے، ورنہ یہ غلط ہے۔ آپ سوچ رہے ہوں گے کہ == موازنہ آپریٹر کا استعمال کرتے ہوئے تاروں کا موازنہ کیوں نہیں کرتے؟ درحقیقت یہ بھی ممکن ہے لیکن نتیجہ کچھ مختلف ہوگا۔ حقیقت یہ ہے کہ == آپریٹر میموری میں پتوں کا موازنہ کرتا ہے۔ لہذا اگر s1 == s2 لوٹتا ہے true ، ان دونوں تاروں کا میموری میں ایک ہی پتہ ہے۔ ایک ہی وقت میں، برابر برابری کے لیے سٹرنگز کے مواد کو چیک کرتا ہے۔ جاوا سٹرنگ برابر () - 1آئیے دو تاروں کا موازنہ کرنے کی ایک مثال لیں۔
public class StringEqualsTest {
   //program to test Java equals() method
   public static void main(String[] args) {
       String myString1 = "here is my favorite string";
       String myString2 = "here is my favorite string"; //this string is the same as the previous one, at least we think so
       String myString3 = "here is My favorite string"; //this string looks a little bit like previous two, but the first letter is big M instead of small m
       String myString4 = new String("here is my favorite string");
//here we create a String in an object manner… Why? Find out soon
       String myString5 = "equals to myString1? No, not at all..."; //here we have absolutely different string. Just for fun
    //let’s compare myString1 with myString2 using “==” operator
       System.out.println(myString1 == myString2); //true
    //let’s compare myString1 with myString4 using “==” operator
       System.out.println(myString1 == myString4); //false
//and now we are going to use equals() method to compare myString1 with myString4, myString2 and myString5
     System.out.println(myString1.equals(myString4));//true
       System.out.println(myString1.equals(myString2));//true
       System.out.println(myString1.equals(myString5)); //false

   }
}
اس پروگرام کی پیداوار یہ ہے:
سچ جھوٹ سچ سچ جھوٹ
آئیے قریب سے دیکھیں کہ یہاں کیا ہو رہا ہے۔ جب ہم سٹرنگ بناتے ہیں، تو اسے سٹرنگ پول میں رکھا جاتا ہے، میموری کا ایک خاص علاقہ۔ سٹرنگز کسی بھی بڑے پروگرام میں تمام اشیاء کا ایک بہت بڑا حصہ لیتے ہیں۔ لہذا میموری کو بچانے کے لیے String Pool بنایا گیا، جہاں آپ کی ضرورت کے متن کے ساتھ ایک سٹرنگ رکھی گئی ہے۔ بعد میں نئے بنائے گئے لنکس اسی میموری ایریا کا حوالہ دیتے ہیں، ہر بار اضافی میموری مختص کرنے کی ضرورت نہیں ہے۔ اگر آپ نئے آپریٹر کے بغیر سٹرنگ بناتے ہیں، یعنی جب آپ لکھتے ہیں۔
String  myStringName = "...........................................",
یا اس جیسا کچھ، پروگرام چیک کرتا ہے کہ آیا سٹرنگ پول میں اس طرح کے متن کے ساتھ کوئی String موجود ہے۔ اگر ایسا ہے تو، کوئی نئی سٹرنگ نہیں بنائی جائے گی۔ اور نیا لنک اسٹرنگ پول میں اسی ایڈریس کی طرف اشارہ کرے گا جہاں وہ سٹرنگ پہلے سے محفوظ ہے۔ تو جب ہم نے پروگرام میں لکھا
String myString1 = "here is my favorite string";
String myString2 = "here is my favorite string";
حوالہ myString1 میموری میں بالکل اسی جگہ کی طرف اشارہ کرتا ہے جیسے myString2 ۔ پہلی کمانڈ نے اسٹرنگ پول میں ایک نئی اسٹرنگ بنائی جس کی ہمیں ضرورت تھی، اور جب بات دوسری پر آئی تو اس نے صرف اسی میموری ایریا کا حوالہ دیا myString1 ۔ لیکن سٹرنگ myString4 نئے آپریٹر کا استعمال کرتے ہوئے ایک آبجیکٹ کے طور پر بنائی گئی تھی ۔ یہ آپریٹر کسی چیز کے بننے پر میموری میں ایک نیا علاقہ مختص کرتا ہے۔ ایک سٹرنگ نئے کے ساتھ بنائی گئی۔
String myString1 = new String ("here is my favorite string");
String myString2 = new String ("here is my favorite string");
سٹرنگ پول میں نہیں آتا، لیکن ایک الگ آبجیکٹ بن جاتا ہے، چاہے اس کا متن مکمل طور پر سٹرنگ پول سے ایک ہی سٹرنگ سے مماثل ہو۔ مزید برآں، اگر ہم String equals() طریقہ استعمال کرتے ہوئے سٹرنگز کا موازنہ کریں، تو یہ پتہ نہیں بلکہ سٹرنگ کے مواد، سٹرنگز میں حروف کی ترتیب کو چیک کرے گا۔ اور اگر سٹرنگز میں متن ایک جیسا ہے، تو اس سے کوئی فرق نہیں پڑتا کہ وہ کیسے بنائے گئے اور وہ کہاں محفوظ ہیں، سٹرنگ پول میں، یا ایک الگ میموری ایریا میں۔ اسی لیے اس مقابلے میں myString1 ، myString2 اور myString4 برابر تھے۔ ویسے، کیا آپ نے دیکھا ہے کہ String equals() طریقہ آپ کو کیس کے حساس انداز میں سٹرنگز کا صحیح طریقے سے موازنہ کرنے کی اجازت دیتا ہے؟ یعنی، اگر ہم سٹرنگ "میری سٹرنگ" کا موازنہ "My string" اور "MY STRING" کے ساتھ کریں تو ہم غلط ہو جاتے ہیں۔
public class StringEqualsTest {

   public static void main(String[] args) {

       String myString1 = new String ("here is my favorite string");
       String myString2 = new String ("here is My favorite string");
       String myString3 = new String("HERE IS MY FAVORITE STRING");

       System.out.println(myString1.equals(myString2)); //false because first string myString1 has small m and myString2 has big M instead
       System.out.println(myString1.equals(myString3));//false because myString1 is in lowercase while myString3 is in uppercase

   }
}
آؤٹ پٹ یہاں ہے:
جھوٹے جھوٹے
کیس کے غیر حساس انداز میں تاروں کا موازنہ کرنے کے لیے، جاوا کا ایک طریقہ ہے جو بہت ملتا جلتا ہے equals :
boolean equalsIgnoreCase​(String anotherString)
آئیے اسے اپنی مثال میں استعمال کریں۔
public class StringEqualsTest {

   public static void main(String[] args) {

       String myString1 = new String ("here is my favorite string");
       String myString2 = new String ("here is My favorite string");
       String myString3 = new String("HERE IS MY FAVORITE STRING");
     /* here we are going to use the brother of equals() method, equalsIgnoreCase(). It can help to check user input when case isn’t
important */
       System.out.println(myString1.equalsIgnoreCase(myString2));

       System.out.println(myString1.equalsIgnoreCase(myString3));

   }
}
اب آؤٹ پٹ ہے:
سچ سچ
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION