String

 String - immutable klassdir.


    Burada gorduyumuz kimi Heap yaddawin icinde String pool deyilen bir yaddaw novu var. Biz yeni String obyekti yaratdiqda hemin String Poolda deyerler saxlanilir. Yuxaridaki wekilden gorunduyu kimi burada iki obyekt var lakin her ikiside yaddawda eyni yere baxir. Eger bir String b = "Ali" yazsaq, demeli String Poolda yeni bir deyer yaranacaq.

    String c = new String("Parvin"); dedikde Heap yaddawda yeni yer yaradir. 

package mylibrary;

import java.util.Objects;

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

String a = "Parvin";
String b = "Parvin";
String c = new String("Parvin");
String d = new String("Parvin");

System.out.println(a == b); // true
System.out.println(a == c); // false
System.out.println(c == d); // false

System.out.println(a.equals(b)); // true
System.out.println(a.equals(c)); // true
System.out.println(c.equals(d)); // true

System.out.println(a.hashCode()); // -1911540742
System.out.println(b.hashCode()); // -1911540742
System.out.println(c.hashCode()); // -1911540742
System.out.println(d.hashCode()); // -1911540742

System.out.println(System.identityHashCode(a)); // 460141958
System.out.println(System.identityHashCode(b)); // 460141958
System.out.println(System.identityHashCode(c)); // 1163157884
System.out.println(System.identityHashCode(d)); // 1956725890
}
}
Burada butun obyeklerin hashCode lari eynidir.
*** Lakin identityHashCode lari a ve b obyektleri ucun eynidir. Cunki StringPoola da yaranir. c ve d 
obyektleri ucun ise ferqlidir cunki Heap da yeni obyekt yaranir.
*** == iwaresi reference lari yoxlayir, hashCode lari yox. Duzdu bezen deyirik hashCode reference ye 
beraberdir. Amma hemiwe bele olmur. Yeqin ki, String klasi hashCode metodunu ozune uygun override edir.


package org.example;

public class Main {
public static void main(String[] args) {
String s = "Hello";
s.concat(" World");
System.out.println(s);

s = s.concat(" World");
System.out.println(s);

StringBuilder ss = new StringBuilder("Hello");
ss.append(" World");
System.out.println(ss);
}
}

Комментарии

Популярные сообщения из этого блога

Lesson1: JDK, JVM, JRE

SE_21_Lesson_11: Inheritance, Polymorphism

SE_21_Lesson_9: Initialization Blocks, Wrapper types, String class