Mystry of Java String.intern
Mystery of Java String.intern
We have all learn about how Java has optimised handling string objects. The String
class has been made immutable and string literal definition makes sure that existing instance from string pool will be returned instance creating new one.
Here is simple code snippet that explains it
String firstName = "John";
String firstNameWithNew = new String("John");
String duplicateFirstName = "John";
//All there strings are same
System.out.println(firstName.equals(duplicateFirstName) && firstName.equals(firstNameWithNew));//=> true
//Since they defiend using string iterals, even there memory references are same
System.out.println(firstName == duplicateFirstName);//=> true
//Since one of the object has defined explictly using new operator, there memory references are different.
System.out.println(firstName == firstNameWithNew);//=> false
This is very basic understanding that everyone has. Then I came across String.intern()
As per java docs
When the intern method is invoked, if the pool already contains a
string equal to this String
object as determined by the
equals(Object)
method, then the string from the pool is returned. Otherwise, this
String
object is added to the pool and a reference to this
String
object is returned.
It follows that for any two strings s
and t
, s.intern() == t.intern()
is true
if and only if s.equals(t)
is true
.
When java string literal statement internally takes care of referring any existing same object from pool,
- why do we need explicit function for the same?
- where and how is it going to be used ?
Lets look at below code snippet
String jafullName = "John Andreson";
String jmFullName = "John Miller";
String jaFirstName = jafullName.substring(0, 4);
String jmFirstName = jmFullName.substring(0, 4);
//They have common first name
System.out.println(jaFirstName.equals(jmFirstName)); //=> true
//Are both references same ?
System.out.println(jaFirstName == jmFirstName);//=>False
In above snippet, even if both person’s first name are same, their references are different. Since String
is immutable any operations will create new instance instate of updating existing.
If a system process large number of string objects and frequency of many string objects are very high then String pool will full of duplicate objects.
So how do you optimise above code snippet ?
String jafullName = "John Andreson";
String jmFullName = "John Miller";
String jaFirstName = jafullName.substring(0, 4).intern();
String jmFirstName = jmFullName.substring(0, 4).intern();
//They have common first name
System.out.println(jaFirstName.equals(jmFirstName)); //=> true
//Are both references same ?
System.out.println(jaFirstName == jmFirstName);//=> true
Notice the usage of intern
in statement #3 & #4, it makes sure that any existing reference get returned if any same content object available in the String pool. This way the program makes sure that no duplicate strings are occupying space in String Pool.
Applications where String.intern
matters
- Cache implementation
- Application that process/manipulates large number of string objects.
Thanks for sharing this invaluable amazing website, your own writing skills are exemplary, you should maintain writing this type of weblog.
ReplyDeleteFirst Commercial Web Browser : Netscape Navigator
Microsoft fights botnet after Office 365 malware attack
if you are facing issues while activating the cash card
ReplyDeleteCannot Activate Cash Card
Geto 10000$ per day
ReplyDeleteGeto 10000$ per day
Geto 10000$ per day
Geto 10000$ per day
I am reading the whole article it is very useful and there is a lot to learn. I bookmarked your blog. Waiting for the next post. Know about new technology visit our website Top 10 in history
ReplyDeletePresentations are an integral part of business. Everyone is concerned about giving the right presentation to the client or the people who you are giving it. No need to look further as I have come across a more efficient and easy way to PowerPoint presentation design by which you can give flawless presentations. Wheather you are giving a Corporate presentation design or want to build an animated explainer videos Pitchworx has it all.
ReplyDeleteRead More
ReplyDeleteThe website loading speed is amazing. It sort of feels that you’re doing any distinctive trick. Moreover, The contents are masterwork. you have performed a excellent activity in this matter!
ReplyDeleteAlso Read - bootstrap navbar close on click, input type file css
Nice Article Bro
ReplyDeleteVisit how to delete telegram account permanently to get tips and tricks of Technology, Android, Websites and others.llds
Simply the article is awesome
ReplyDeleteVisit Tech News to get tips and tricks of Technology, Android, Websites and others.
Simply the article is awesome
ReplyDeleteVisit convert images to PDF by phone to get tips and tricks of Technology, Android, Websites and others.
Visit turn off comments on Instagram posts to get tips and tricks of Technology, Android, Websites and others.
Visit restore deleted Instagram posts to get tips and tricks of Technology, Android, Websites and others.
Visit reopen recently closed tabs on chrome tech news to get tips and tricks of Technology, Android, Websites and others.
Visit tech news to get tips and tricks of Technology, Android, Websites and others.
Lenovo ideapad 5 laptop review
ReplyDeletehow to connect xbox one to pc monitor with hdmi
shomdom
Hello I like your website very much. Because I liked your content very much. And also I liked your template very much. And I keep visiting your site. I liked your website very much. Please keep writing such content. thank you
ReplyDeleteYour article is unmatchable read mine too on Tech News
ReplyDeleteOffroad outlaws is a new mod apk that was just released that allows you to drive around in your car or on a motorcycle off the beaten path. The app is full of different locations that you can explore, and there are lots of different vehicles to choose from. There are also a variety of challenges that you can complete to earn rewards. For more Info visit us at https://peerapk.com/offroad-outlaws-mod-apk/
ReplyDeleteVery well Explained . Thank you for published this content. visit:- https://sco.lt/8iTAnI
ReplyDeletehttps://tr.ee/EkzzAQoWjn
https://www.pearltrees.com/hakosharad#item571304372
https://folkd.com/link/Macbook-Logic-Board-Repair-in-Nehru-Place?
https://public.sitejot.com/Fixmyapple.html
https://padlet.com/fixmyapple/laptop-repair-service-center-w9ieih5irjo08o1t/wish/2856932519
https://www.bibsonomy.org/url/3edc8cef21938ad93728cb673eb0b089
https://diigo.com/0t2b8k
https://sco.lt/8iTAnI
ReplyDeletehttps://tr.ee/EkzzAQoWjn
https://www.pearltrees.com/hakosharad#item571304372
https://folkd.com/link/Macbook-Logic-Board-Repair-in-Nehru-Place?
https://public.sitejot.com/Fixmyapple.html
https://padlet.com/fixmyapple/laptop-repair-service-center-w9ieih5irjo08o1t/wish/2856932519
https://www.bibsonomy.org/url/3edc8cef21938ad93728cb673eb0b089
https://diigo.com/0t2b8k
good
ReplyDelete