ตามString # ฝึกงาน () , internวิธีการที่ควรจะกลับ String จากสระว่ายน้ำ String ถ้าเชือกที่พบในสระว่ายน้ำ String มิฉะนั้นวัตถุสตริงใหม่จะถูกเพิ่มเข้ามาในสระว่ายน้ำ String และการอ้างอิงของสายนี้จะถูกส่งกลับ
ดังนั้นฉันลองทำสิ่งนี้:
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
if ( s1 == s2 ){
System.out.println("s1 and s2 are same"); // 1.
}
if ( s1 == s3 ){
System.out.println("s1 and s3 are same" ); // 2.
}
ฉันคาดหวังว่าs1 and s3 are sameจะถูกพิมพ์เมื่อ s3 ถูก interned และs1 and s2 are sameจะไม่ถูกพิมพ์ แต่ผลลัพธ์คือ: ทั้งสองบรรทัดถูกพิมพ์ ดังนั้นนั่นหมายความว่าค่าคงที่สตริงเริ่มต้นจะถูกฝึกงาน แต่ถ้าเป็นเช่นนั้นแล้วทำไมเราถึงต้องการinternวิธีการ? กล่าวอีกนัยหนึ่งเราควรใช้วิธีนี้เมื่อใด?
internวิธีเป็นสาธารณะ เราไม่ควรมีinternวิธีการส่วนตัวเพื่อให้ไม่มีใครสามารถเข้าถึงได้ หรือมีจุดประสงค์ของวิธีนี้หรือไม่?
