package test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
public class StringTest {
public static void main(String[] args) throws Exception{
String s ="123456";
//以空间换时间
String s2 = s.substring(1,2);
a(s2);
//以时间换空间
String s3=new String(s2);
a(s3);
String s4 =new String(s.toCharArray(),0,4);
a(s4);
//以空间换时间
Constructor con=s.getClass().getDeclaredConstructor(int.class,int.class,char[].class);
con.setAccessible(true);
String newStr = (String) con.newInstance(1,2,s.toCharArray());
System.out.println("new Str ===="+newStr);
a(newStr);
//以空间换时间
List l = new ArrayList();
l = l.subList(1, 2);
//以空间换时间
BitSet a = new BitSet();
}
public static void a(String s2)throws Exception{
Field f=s2.getClass().getDeclaredField("value");
f.setAccessible(true);
char[] c =(char[])f.get(s2);
System.out.println(new String(c));
}
}
当遇到空间换时间时,需要注意内存泄露问题
对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式:访问串行化,对象共享化。而ThreadLocal采用了“以空间换时间”的方式:访问并行化,对象独享化。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。
相关推荐
通过研究 OpenJDK 8u60 的源码,开发者可以深入理解 Java 虚拟机的工作原理,这对于优化代码、调试问题、设计高效算法以及开发新的 JVM 功能都有极大的帮助。同时,这也为学习其他编程语言的虚拟机提供了参考,因为...
在编程领域,尤其是Java开发者,对JDK源码的研究是提升技能的重要途径。JDK 1.4作为早期版本,虽然现在已被更新的版本替代,但它依然具有深远的学习价值,尤其对于初学者来说,它相对简洁,更易于理解和掌握基础概念...
Java Development Kit(JDK)是Java编程语言的核心组件,它包含了一个完整的Java运行环境和一组开发工具,...对于任何Java开发者来说,掌握JDK源码都是一个重要的里程碑,它能提升编程技能,帮助解决日常开发中的难题。
源码是理解任何软件工作原理的关键,JDK 1.6的源码对于开发者来说是一份宝贵的资源,无论是初学者还是经验丰富的开发者都能从中受益。 首先,`sunw`目录通常包含Sun Microsystems(现已被Oracle收购)提供的特定于...
**JDK10与OpenJDK10源码解析** JDK10是Java开发工具包的第十个主要版本,它的发布标志着Java平台的持续进化。这个版本引入了许多新的特性和改进,旨在提升性能、易用性和开发者的生产力。本文将深入探讨JDK10的底层...
源码是理解任何软件工作原理的关键,JDK源码也不例外。通常,官方发布的JDK包含了大部分核心类库的源代码,但有些部分,特别是涉及敏感或专有技术的部分,如`sun`和`com.sunw`包下的源码,可能不会公开提供。这个...
《深入解析JDK 1.8.0源码——src.zip中的编程智慧》 JDK 1.8.0作为Java开发的重要版本,其源码是开发者深入理解Java语言、框架和库的关键资源。在Windows环境下,使用NetBeans进行开发时,常常需要查阅JDK的源码以...
【标题】"jdk1.8 源码( Linux)(1.4, 1.5, 1.6, 1.7都可以用)" 指的是Java Development Kit (JDK) 1.8的源代码,适用于Linux操作系统,并且由于源码的兼容性,它同样适用于较早的JDK版本,包括1.4、1.5、1.6和1.7...
JDK源码对于深入理解Java的工作原理、优化代码以及学习面向对象设计原则至关重要。在JDK源码zip文件中,我们通常会发现以下几个关键目录和子文件,它们构成了Java的基础框架: 1. **javax**: 这个包主要包含了Java...
总的来说,JDK 8u144的源码对于Java开发者来说是一份宝贵的资源,它不仅可以帮助初学者理解Java的基本工作原理,也能为经验丰富的开发者提供深入洞察,以优化他们的代码和设计。无论是为了学术研究,还是为了提升...
1. 学习原理:源码是语言设计思想的直接体现,通过阅读源码,我们可以深入理解Java的设计原则和实现机制,比如垃圾回收、类加载、异常处理等。 2. 性能优化:源码分析有助于我们了解API的内部实现,从而在编写高...
### jdk源码阅读一:ArrayList #### 一、ArrayList简介与特性 ArrayList作为Java集合框架中的重要组成部分,被广泛应用于各种应用场景。它的主要特点包括: - **基于数组实现**:ArrayList采用数组作为其底层数据...
Java Development Kit(JDK)是Java编程语言的核心组件,提供了编写、编译、调试和运行Java应用程序所需的所有工具。JDK 7,也被称为JDK 1.7,是Oracle公司发布的一个重要版本,它引入了许多新特性,优化了性能,并...
标题中的问题涉及到Windows 7操作系统下使用JDK 1.5时遇到的日期时间问题,具体表现为时间显示比实际慢8小时。这个问题主要是由于Java在处理时间区域设置时与操作系统的时区设置不一致导致的。在Java中,时区信息是...
【标题】"jdk1.8.0_211源码.zip" 提供的是Java开发工具包(JDK)1.8.0_211版本的源代码,这是一个重要的学习资源,对于深入理解Java语言及其运行机制具有极大价值。 【描述】中提到,这个源码是用于学习目的。这...
本文将针对新手,详细讲解如何手写一个精简版的`List`和`ArrayList`,帮助大家更好地理解JDK源码中的实现原理。 首先,我们要明白`List`是一个接口,它继承自`Collection`接口,并规定了元素的有序性和可重复性。`...
JDK1.8的源码分析可以帮助开发者深入理解这些新特性的实现原理,优化代码性能,并从中学习到高级并发编程和设计模式。通过阅读源码,我们可以学习到如何在多线程环境下设计高效、线程安全的数据结构,以及如何利用新...
例如,JDK的完整版可能包含Javadoc和源码,这对于学习和调试Java代码非常有用。精简版可能没有这些,因此对于开发者来说,可能需要根据实际项目需求来决定是否使用精简版。另外,如果项目依赖于JDK的特定模块或工具...
通过深入研究JDK1.7的源码,开发者可以提升自己的编程技巧,更好地理解和应用Java语言特性,同时也能了解到优秀软件设计的原则和最佳实践。对于解决实际问题,优化代码性能,或者扩展Java功能,阅读源码都是必不可少...
- `src.zip`和`javafx-src.zip`:源代码压缩包,开发者可以通过查看源码来理解JDK内部的工作原理。 - `bin`:包含了各种命令行工具,如javac、java、jar等,用于开发和管理Java应用程序。 - `include`:包含了...