package com.goods; class Test { /** * jdk6 vs jdk7 string intern 区别 * 6:将字符串加入常量池.返回常量值。(不改变当前引用) * 7:将字符串加入常量池.返回常量值。(改变当前引用)1、判断常量池中是否有该值,没有的话将该字符串加入常量池,并返回常量值,2.常量池中有的话,就返回当前的内存地址 * @param args */ public static void main(String... args) { String s1="Good"; s1=s1+"morning"; System.out.println(s1.intern()); String s2="Goodmorning"; //jdk6 intern返回字符串常量 == true System.out.println(s1.intern()==s2); //jdk 6 s1 新对象 ==false System.out.println(s1==s2); //jdk7 intern返回字符串常量 == true System.out.println(s1.intern()==s2); //jdk7 ==true System.out.println(s1==s2); } }
相关推荐
关于String.intern()方法,这个问题都被问烂了,有的文章在分析的时候还在用jdk1.7,jdk1.8之后内存模型发生了变化,内存的变化也会影响intern方法的执行,这里有必要写文章分析一下,请大家务必从头开始看,这样...
pos文件是ProcessOn的源文件,可以导入后直接打开编辑。 内容是:不同jdk版本下对String的intern()的分析
在JDK的不同版本中,`String`类经历了一些优化和改进,尤其是在性能和内存管理方面。这里我们将对JDK 1.6、1.7和1.8中的`String`类进行对比研究,探讨其中的关键变化。 ### JDK 1.6中的String 在JDK 1.6中,`...
6. **String的改进**:如重复字符串创建、更高效的intern()方法等。 7. **并发库增强**:如ForkJoinPool和CompletableFuture,增强了多线程编程的能力。 8. **安全增强**:加强了对Java安全模型的控制,包括改进的...
标题中的"jdk1.7+jdk1.8"指的是两个不同版本的JDK,分别是Java 7和Java 8。这两个版本在Java发展历程中占据了重要的位置,各有其特色和改进。 **Java 7(JDK 1.7):** Java 7于2011年发布,它的主要更新包括: 1....
Java JDK 7,全称Java Development Kit 7,是Oracle公司发布的Java编程语言的一个重要版本。JDK是Java开发人员必备的工具集,包含了编译器、Java运行环境、调试工具以及各种API文档,用于编写、运行和调试Java程序。...
- **String的优化**:Java 8对String进行了优化,如使用StringBuilder替换String进行字符串连接,以及使用String的intern()方法来节省内存。 5. **开发者工具**: - **JConsole**:用于监控Java应用程序的性能和...
- **String的`intern()`方法**:现在使用字符串池来提高性能,减少内存消耗。 安装JDK1.8_191后,开发人员可以利用其提供的工具和库进行Java应用程序的开发,同时享受该版本带来的性能优化和新特性的便利。无论是...
在JDK 1.6中,`String`的`intern()`方法的行为如下: 1. 当调用`intern()`时,JVM会检查字符串常量池中是否存在与当前`String`对象内容相同的字符串。 2. 如果找到匹配的字符串,`intern()`方法将返回常量池中该字符...
4. **字符串去重复**:`String`类新增了`intern()`方法,用于存储和重用相同的字符串实例,节省内存。 5. **开关语句增强**:允许在switch语句中使用字符串,增强了代码的可读性。 安装"jdk-7u75-windows-x64.exe...
6. **字符串去重复**:String类新增了`intern()`方法的改进,能够更有效地处理字符串池,节省内存。 7. **改进的JMX(Java Management Extensions)**:更新了管理工具和API,方便监控和管理Java应用程序。 安装...
在Java编程语言中,String是最常用的类之一,用于处理文本数据。本文主要分析两种创建String对象的...在实际编程中,推荐使用字符串字面量或`String.intern()`方法来优化内存使用,特别是对于大量重复字符串的情况。
2. **内存分布**:在JDK6及之前,StringTable位于JVM的永久代;JDK7开始,移到了Java堆;JDK8进一步改到了元空间,以减少永久代的内存压力。 3. **不可变性**:String对象是不可变的,一旦创建,其内容就不能改变。...
字符串池可以使用自己定义的 Map<String, String> 或者使用 JDK 提供的 String.intern() 方法实现。 Java 6 中的字符串池 在 Java 6 中,字符串池是存储在 PermGen 中的固定的内存区域中。PermGen 的大小是固定的...
【String.intern()方法】 String类的intern()方法在Java中扮演着重要的角色,它涉及到字符串对象的内存管理和性能优化。这个方法的主要功能是检查当前字符串对象的值是否已经在Java虚拟机(JVM)的字符串常量池中...
- `java.lang.String`类是不可变的,了解它的内部实现,如字符数组、intern()方法和字符串池,有助于优化字符串操作。 9. **多线程(Multithreading)**: - `java.lang.Thread`类和`java.lang.Runnable`接口定义...
然而,从JDK7.0开始,`String#intern()`的行为有所变化,使得池中不仅可以存储字符串字面量,还可以存放堆内存中的字符串对象引用。这意味着动态生成的字符串,只要内容相同,也可能被放入字符串常量池。 接下来,...
- `String::intern()`:这个方法将字符串常量池中的字符串引用返回,如果不存在则添加到池中。在不同JVM实现中,行为可能有所不同。 5. **HotSpot虚拟机** - HotSpot是Oracle的JVM实现,从JDK 6开始广泛使用,...