`
jaesonchen
  • 浏览: 313538 次
  • 来自: ...
社区版块
存档分类
最新评论

String.intern 示例

 
阅读更多
		//字符串常量池
		String str1 = "str";
		String str2 = "ing";
		String str3 = "str" + "ing";
		String str4 = str1 + str2;
		System.out.println(str3 == str4);	//false
		String str5 = "string";
		System.out.println(str3 == str5);	//true
		
		// 将两个常量用+连接对s进行初始化 
		String s = A + B;	// 将两个常量用+连接对s进行初始化  等同于:String s="ab"+"cd";
		String t = "abcd";   
		System.out.println(s == t);   //true
		String _s = _A + _B;   
		String _t = "abcd";   
		System.out.println(_s == _t);  //false 

		//String.intern
		String s1 = new String("计算机");
		String s2 = s1.intern();
		String s3 = "计算机";
		System.out.println("s1 == s2? " + (s1 == s2));	//false
		System.out.println("s3 == s2? " + (s3 == s2));	//true
		
		String hello = "Hello", lo = "lo";
		System.out.print((hello == "Hello") + " ");
		System.out.print((hello == ("Hel"+"lo")) + " ");
		String _hello = "Hel"+lo;
		System.out.print((hello == _hello) + " ");
		System.out.println(hello == _hello.intern());	//true true false true
		
		//jdk1.7以后字符串常量池不在永久代中,而在堆中,String.intern会不会拷贝字符串到常量池中,
		//而是在常量池中保存指向堆中intern对象的引用
		String str11 = new String("hello");
		str11 = str11 + "world";
		str11.intern();
		String str12 = "helloworld";
		System.out.println(str11 == str12);	//true
		
		String str21 = new String("how");
		str21 = str21 + "areyou";
		String str22 = "howareyou";
		str21.intern();
		System.out.println(str21 == str22);	//false

 

分享到:
评论

相关推荐

    JVM系列之String.intern的性能解析

    在上述的代码示例中,使用JMH(Java Microbenchmark Harness)进行性能测试,比较了 `String.intern()`、`HashMap` 和 `ConcurrentHashMap` 的性能。`StringInterner` 类使用 `intern()` 方法,而 `...

    关于java String中intern的深入讲解

    在上面的示例代码中,我们首先创建了一个新的字符串对象 `stringObject`,然后调用了其 intern 方法,将其添加到字符串常量池中。接着,我们创建了一个字符串字面量 `stringLiteral`,并将其与 `stringObject` 进行...

    全面理解java中的String.doc

    在示例3中,即使对`s1`调用了`intern()`,但由于没有将返回的引用赋给`s1`,`s0 == s1`仍为false,但`s0 == s1.intern()`为true,表明`s1.intern()`返回的是常量池中的引用。 6. **理解String的不可变性**:String...

    Java String的intern用法解析

    下面是一个示例代码,演示了Java String的intern方法的使用: ```java public class StringTest { public static void main(String[] args) { String a = new StringBuffer("a").append("a").toString(); String ...

    Ben.StringIntern:字符串缓存以合并重复的字符串; 限制了第二代LRU驱逐以及Gen2 GC集合的进一步驱逐

    受此问题的启发而被关闭:“ API请求:string.Intern(ReadOnlySpan ...)” 共享池已设置上限; 具有第二代LRU驱逐,以及第二代GC集合的进一步驱逐。 使用示例 馆藏 using Ben . Collections ; array = array . ...

    Java字符池.pdf

    在示例3中,调用`s1.intern()`并不会改变`s1`的值,而是返回常量池中"kvill"的引用。因此,`s1.intern() == s0`是true,但`s1 == s0`仍然为false。 7. **误解澄清**: 有时人们误以为`String.intern()`会将所有...

    Java String对象的经典问题

    `String`类提供了一个名为`intern()`的方法,该方法的作用是返回字符串对象的规范化表示形式。具体来说,当调用`intern()`方法时,如果字符串池中已经存在一个与当前字符串完全相同的字符串,则返回该字符串的引用;...

    Java基础教程之String深度分析

    Java基础教程之String深度分析主要给大家介绍了关于Java基础教程之String的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 1. String类的不可变性 String类是一个不可...

    正确使用String类的几点注意

    下面是一个简单的示例代码,用于展示上述概念的应用: ```java public class StringTest { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); String s3 = new...

    Java常用类与基础API-String的构造器与常用方法

    System.out.println(new String("Hello").intern()); // Hello (常量池中的引用) } ``` ##### (2)系列2:查找 1. **contains(xx)**: - 判断字符串是否包含指定的子字符串。 - 示例代码: ```java String...

    java常见笔试、面试题深度剖析

    - **`intern()` 方法的作用**:当调用 `string.intern()` 方法时,如果字符串池中已存在一个等于该 `String` 对象的字符串,则返回字符串池中的字符串;否则,将该 `String` 对象添加到字符串池中并返回它的引用。 -...

    String和StringBuffer深入.doc

    为了解决这个问题,Java提供了`String.intern()`方法,允许程序强制检查字符串池,将通过`new`关键字创建的字符串对象与池中的字符串进行比较。如果池中已有相同的字符串,`intern()`方法会返回池中的引用,否则会将...

    Java中的String对象数据类型全面解析

    下面通过示例来进一步解释`String.intern()`: ```java String s0 = "kvill"; String s1 = new String("kvill"); String s2 = new String("kvill"); // s1 和 s2 是独立的对象,与 s0 不同 System.out.println(s0 ...

    String和StringBuilder、StringBuffer的区别1

    当调用一个`String`对象的`intern()`方法时,Java会检查常量池中是否已经存在一个与其内容相等的字符串。如果存在,就返回常量池中的引用;如果不存在,那么这个字符串就会被添加到常量池中,并返回这个新添加的引用...

    java高并发锁的3种实现示例代码

    其实现原理是,使用 String.intern() 方法将字符串池中的字符串与当前字符串比较,如果相同,则返回池中的字符串,否则,创建一个新的字符串并加入池中。 CopyOnWriteMap CopyOnWriteMap 是一种基于副本的锁机制,...

    String.rar_Windows_CE_Java_

    文档"String.docx"可能详细阐述了这些概念,并给出了具体的代码示例和最佳实践。在Windows CE这样的移动或嵌入式环境中,理解和熟练运用这些字符串处理技术将有助于开发出更高效、更稳定的Java应用。

    Java中的String池

    本篇文章将详细解释Java中的String池概念及其重要性,并通过一个示例代码深入理解String池的工作机制。 #### String池的基本概念 Java中的String池是一个特殊的数据结构,它存储了所有被程序引用的字符串字面量...

    java performance2

    通过调用`String.intern()`方法,可以将字符串放入常量池中,从而避免重复创建相同内容的字符串对象。 示例: ```java String s1 = "abc"; String s2 = new String("abc"); System.out.println(s1 == s2); // ...

    深入堆与栈 堆与栈的区别

    ##### 示例3:`new String()` 的使用 ```java String s0 = "kvill"; String s1 = new String("kvill"); String s2 = "kv" + new String("ill"); System.out.println(s0 == s1); System.out.println(s0 == s2); ...

    Scala的String类方法整合

    ### Scala的String类方法整合 在Scala编程语言中,`String` 类是处理文本数据的基础。本文将对 `String` 类中的方法进行详细介绍,并提供它们的功能概述与应用场景,旨在帮助开发者更好地理解和应用这些方法。 ###...

Global site tag (gtag.js) - Google Analytics