public static void main(String[] args) { String si = "Java"; String s2 = "Java"; String s3 = new String(si); System.out.println(si + "==" + s2
+ " : " + (s1==s2));//to‘g‘ri
System.out.println(s1 + "==" + s3
+ " : " + (s1==s3));//false System.out.println(s1 + " teng " + s2
+ " : " + s1.equals(s2));//true System.out.println(s1 + " teng " + s3
+ " : " + s1.equals(s3));//true System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); System.out.println(s3.hashCode()); }
}
Natijada, masalan, u ko'rsatiladi:
Java==Java: rost
Java==Java: noto'g'ri
Java Java ga teng: rost
Java Java ga teng: rost
2301506
2301506
2301506
Bir xil qiymatdagi ob'ektlar xotiraning turli sohalarida joylashganiga qaramay, ularning xesh kodlari qiymatlari bir xil.
Java-da barcha havolalar stekda, ob'ektlar esa uyada saqlanadi. s 2 yaratilsa , avval havola yaratiladi, so'ngra ushbu havolaga ob'ekt tayinlanadi. Bunday vaziyatda s2 allaqachon mavjud literal bilan bog'lanadi, chunki si ob'ekti allaqachon bu lug'atga havola qilgan. s 3 yaratilganda konstruktor chaqiriladi, ya'ni xotirani ajratish initsializatsiyadan oldin sodir bo'ladi, bu holda uyada yangi ob'ekt yaratiladi .
Intern () usulini chaqirish orqali xotirani saqlash va ob'ektdan literalga havolani qayta aniqlash mumkin .
// № 7.4 misol : intern() dan foydalanish : DemoIntern.java umumiy sinfi DemoIntern {
umumiy statik void main(String[] args) {
String s 1 = "Java";//literal va unga havola
String s2 = new String("Java");
System.out.println(s1 == s2); // yolg'on
s2 = s2.intern();
System.out.println(s1 == s2); // rost
}
}
Bunday holatda, s 1 havolasi ob'ektning barcha xususiyatlariga ega bo'lgan literalga ishga tushiriladi, to usul chaqiruvlarigacha. Intern () usulini chaqirish s 2 ob'ektining qiymatiga mos keladigan literalni qidirishni tashkil qiladi ( satrning kanonik tasviri) va agar natija ijobiy bo'lsa, topilgan literalga havolani qaytaradi, agar natija bo'lsa. salbiy, u qiymatni hovuzga qo'yadi va unga havolani qaytaradi.
Quyidagi misolda tanlash usuli yordamida qatorlar massivini qanday saralash ko'rsatilgan.
// misol № 7.5: tartiblash : SortArray.java umumiy sinf SortArray {
Do'stlaringiz bilan baham: |