s4是通过调用String#intern()方法将s3添加到字符串常量池中,并返回该字符串的引用。因此,s1和s4指向同一个字符串常量池中的字符串,所以它们相等。 总之,String#intern()方法是一个有用的工具,可以帮助优化Java应用程序的内存使用和性能。
2 String#intern 存在的意义想知道 String#intern 存在的意义, 我们来看看 String 类的 equals 方法: public boolean equals(Object anObject) { if (this == anObject) { // @1 return true; } if (anObject instanceof String) { // @2 String anotherString = (String)anObject; int n = value.l...
从这些测试数据可以看出,尽管在Java 7以上对intern()做了细致的优化,但其耗时仍然很显著,如果无限制的使用intern()方法,将导致系统性能下降,不过可以将有限值的字符串放入常量池,提高内存利用率,所以intern()方法是一把双刃剑。 执行一百万次intern()方法,不同StringTableSize的耗时情况如下: 1、-XX:StringTableSize...
[Android.Runtime.Register("intern","()Ljava/lang/String;","")]publicstringIntern(); 반환 String 이 문자열과 내용이 같지만 고유한 문자열 풀에서 온 것으로 보장되는 문자열입니다. ...
Java String intern() 方法描述该方法返回字符串对象的规范表示。对于任意两个字符串 s 和t ,当且仅当s.equals(t)为true时,s.intern() == t.intern()也为true。语法以下是此方法的语法:public String intern() Java Copy参数这里是参数的详细信息−...
本文将从源码角度分析String.intern方法的作用及其适用场景。OpenJDK版本 ➜ jdk hg id 76072a077ee1+ jdk-11+28 首先,我们来看下该方法的Javadoc文档 代码语言:javascript 代码运行次数:0 运行 AI代码解释 /** * Returns a canonical representation for the string object. ...
intern()是一个 Native 方法,底层调用 C++ 的StringTable::intern方法。这段注释告诉了如下几个信息:...
Java 中的String.intern ()返回字符串池中存在的相等字符串文字的引用。如果字符串池中存在现有字符串文字,则返回其引用。否则,创建一个具有相同内容的新字符串,并返回新字符串的引用。 请注意,在内部,字符串相等性是使用String.equals()方法检查的。 1.什么是字符串
二. intern()方法(重点)了解了常量池的内容之后,接下来请大家再跟着我们来看看String的intern()方法,这个方法很重要,请大家记住哦。/** * Returns a canonical representation for the string object. * * A pool of strings, initially empty, is maintained privately by the * class {@code...
运行时数据区中的方法区有一个常量池,但是发现在JDK1.6以后常量池被放置在了堆空间,因此常量池位置的不同影响到了String的intern()方法的表现。深入了解后发现还是值得写下来记录一下的。 1.为什么要介绍intern()方法 重用String对象,以节省内存消耗。这么说可能有点抽象,那么就用例子来证明。