- JDK7的String重新设计。
确实,重新设计后,更加安全了,但某些情况下,会有很大的性能损失。
http://nextmovesoftware.com/blog/2013/07/05/java-6-vs-java-7-when-implementation-matters/
主要体现在substring,trim等;
原有设计可能存在内存泄露,我的博客http://lvdccyb.iteye.com/blog/1849542也讨论过
但是,新的设计引来的问题是:性能有所下降(参见上述引文)。
主要是,原来是通过共享char数组buffer实现,因此,实际上,即使substring(1),也会对整个string对象引用,从而可能造成内存泄露。现在采用的是copy该缓冲区,单独形成一个String对像,简单的说:
JDK7:
String a = "abc".substring(1);
该语句完全等价于 JDK6的:
String a =new String("abc".substring(1));
JDK6中为了避免内存泄露,也是通过上述new String来实现的。
因此,从算法上,原有的是O(1),现在是O(N) ,即要copy N个char,如果N很大,且substring调用很频繁,可能会有性能问题。
如果性能确实至关关重要,修改方式:
(1)不使用substring,而是直接引用char数组
(2)新建一个代理类String,使用jdk6的实现方式代理新的String.
对于原有jdk6代码中,使用了 new String(line.substtring(XXX,YYY))方式的代码,影响其实并不大。
相关推荐
1. **Lambda表达式**:JDK 1.8引入了Lambda表达式,这是一种简洁的函数式编程语法,使得编写匿名函数更加简单。通过这种方式,开发者可以使用更少的代码实现功能,提高代码可读性和效率。 2. **Stream API**:...
JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7...
JDK下载软件的宅槽信息系统以及配置需求安装文件信息详情
标题“jdk1.6.0——13.tagz”揭示了这是一个与Java开发工具包(Java Development Kit)相关的文件,具体版本为1.6.0的第13次更新。Java JDK是用于编写、编译和调试Java应用程序的基础软件包。它包含了Java虚拟机...
Linux安装JDK指南 Linux安装JDK是开发者和系统管理员最常见的任务之一。...本文指导了读者如何在Linux系统上安装JDK,从解压缩JDK安装包到检测JDK安装的每一步骤。本文适合初学者和经验丰富的开发者和系统管理员。
Java JDK 1.8.0_101是Oracle公司发布的Java Development Kit的一个版本,它包含了Java编程语言的运行环境和开发工具。这个版本对于Java开发者来说至关重要,因为它提供了编译、调试和运行Java应用程序所需的所有组件...
2. 解压文件:使用tar命令解压jdk7-aarch64-uos.tar.gz到指定目录,例如`tar -zxvf jdk7-aarch64-uos.tar.gz -C /usr/local/`。 3. 设置环境变量:修改系统环境变量,将JDK的bin目录添加到PATH中,例如`echo "export...
根据提供的网盘链接(https://pan.baidu.com/s/1DPMZe4OJN-tecBQ8jzGjtw,提取码:jnx8),可以下载到JDK 7 Update 80的Linux x64版本。这是一个适用于64位Linux操作系统的安装包。 ##### 4.2 解压JDK 7 Linux x64 ...
此外,`String`类还新增了`isEmpty()`方法,用于判断字符串是否为空,以及`substring()`方法的改进,允许负数索引,表示从字符串末尾开始计数。 在文件系统操作上,JDK7引入了`java.nio.file`包,提供了一组新的API...
1. **JDK 1.8新特性**: - **Lambda表达式**:这是JDK 1.8中最显著的特性,它引入了函数式编程的概念,允许开发者使用简洁的语法处理匿名函数。 - **方法引用和构造器引用**:与Lambda表达式配合,可以更直观地...
这个压缩包“jdk7jdk-7u65-windows-x64.rar”包含了适用于64位Windows系统的Java Development Kit(JDK)的更新版本7u65。JDK是Java编程的基础,它提供了编译、调试和运行Java程序所需的所有工具和库。 Java JDK 7 ...
从官方渠道下载JDK保证了获取的是未经篡改的、安全的、最新版本的软件,避免了潜在的安全风险和兼容性问题。官方版本还提供了持续的更新和补丁,确保开发者可以使用到最新的特性和修复。 **4. 安装与配置** 安装JDK...
**JDK1.8——Java开发环境(最常用)** JDK(Java Development Kit)是Oracle公司提供的Java编程工具包,用于开发、编译、调试Java应用程序。JDK1.8,也称为Java 8,是Java历史上一个非常重要的版本,它的发布在...
JDK——1.8的tools.jar 包,.
良葛格————JavaJDK5.0学良葛格————JavaJDK5.0学习笔记PDF.rar习笔记PDF.rar良葛格良葛格————JavaJDK5.0学习笔记PDF.rar————JavaJDK5.0学习笔记PDF.rar良葛格————JavaJDK5.0学习笔记PDF.rar良...
这个压缩包“jdk7(jdk压缩包,不是exe执行文件——打开直接就可以用).zip”包含了JDK 7版本,而不是通常的.exe安装程序。因此,用户需要手动进行解压和环境变量配置才能使用。 首先,我们需要对压缩包进行解压。...
3. switch语句支持字符串:在JDK7之前,switch只能用于常量和枚举,JDK7将其扩展到支持字符串,提高了代码的可读性和灵活性。 4. 多 catch 块:允许在一个catch块中捕获多种异常,简化了异常处理代码。 5. 文件...
1. **多语言支持**:Java 7增加了对其他编程语言的支持,如Groovy、Scala等,通过JEP(JDK Enhancement Proposals)292,使得这些语言可以在Java虚拟机(JVM)上运行。 2. **try-with-resources**:这是一个语法糖...
《精通JAVA——JDK》是一本深度探讨Java编程语言及其开发工具集JDK的专业教程,旨在帮助Java开发者提升技能,实现技术的精进。作为Java的基石,JDK(Java Development Kit)是学习和开发Java应用程序必不可少的工具...
1. **泛型改进**:在JDK 7中,泛型的使用更加灵活,引入了类型推断(Type Inference)特性,通过`<>`语法糖使得创建泛型实例更为简洁,例如`List<String> list = new ArrayList();` 2. **钻石操作符**:在创建带...