-
jdk源码string的构造方法中decode的问题 求解释5
String构造方法String(byte bytes[], int offset, int length, String charsetName)中,
有这样一句:
char[] v = StringCoding.decode(charsetName, bytes, offset, length);
StringCoding的decode方法如下:
static char[] decode(String charsetName, byte[] ba, int off, int len)
throws UnsupportedEncodingException
{
StringDecoder sd = deref(decoder);
String csn = (charsetName == null) ? "ISO-8859-1" : charsetName;
if ((sd == null) || !(csn.equals(sd.requestedCharsetName())
|| csn.equals(sd.charsetName()))) {
/*
问题在这里:sd不为null,则sd的requestedCharsetName和cs两个字段都与csn相同,那么为何还要用csn new一个StringDecoder?
如果要每次都想new一个,为何在下面还要用set(decoder, sd)将sd保存起来?
咋感觉把上面的条件csn.equals(sd.charsetName())改成!csn.equals(sd.charsetName())就看着顺眼了?
求解释?
*/
sd = null;
try {
Charset cs = lookupCharset(csn);
if (cs != null)
sd = new StringDecoder(cs, csn);
} catch (IllegalCharsetNameException x) {}
if (sd == null)
throw new UnsupportedEncodingException(csn);
set(decoder, sd);
}
return sd.decode(ba, off, len);
}
2012年12月24日 17:59
相关推荐
- **调试与问题解决**: 对源码的了解能帮助开发者更快定位并解决问题,尤其是在遇到JDK相关问题时。 - **贡献社区**: 掌握源码后,开发者可以参与OpenJDK项目,为Java的发展做出贡献。 总之,JDK源码的完整版为...
压缩包中为JDK8的源码,在源码的注释下方附带的中文翻译,是本压缩包的亮点,下方为局部代码,示范给大家: * Sole constructor. Programmers cannot invoke this constructor. * It is for use by code emitted ...
下载后直接去本机jdk目录里替换jdk中的src.zip 再打开idea就能看到中文版的源码注释 示例 https://blog.csdn.net/a7459/article/details/106495622
通过研读源码,我们可以洞察Java的内部工作机制,学习优秀的设计模式,掌握各种API的实现细节,从而提升自己的编程技艺,解决实际开发中遇到的复杂问题。无论是初学者还是经验丰富的开发者,都应该充分利用这样的...
对于想了解JDK源码的朋友来说,通过调试JDK源码来学习是一个常用的方法。但是默认的情况下eclipse是不支持进入jdk源码中进行调试和显示当前变量的。 我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样...
在本文中,我们将深入探讨JDK 8u60的源码,揭示其内部工作机制,帮助开发者更好地理解和利用这个强大的开发工具。 首先,我们关注的是"IMPORT_README"文档,这通常是项目导入或构建过程的关键指南。在阅读此文档时...
JDK源码阅读笔记
在Java开发过程中,理解JDK源码是提升技术深度的关键步骤。JDK1.7版本的源码提供了对Java语言核心库的深入洞察,而sun包下的源码更是其中的重要组成部分,因为它们包含了Java的核心实现和一些私有API。然而,标准的...
4. **接口默认方法**:JDK1.8引入了默认方法,允许接口中定义具有实现的抽象方法,解决了增加新方法导致的实现类冲突问题,同时也使得接口可以充当行为的容器。 5. **Date与Time API更新**:Java 8改进了日期和时间...
Java JDK源码是Java开发工具包的原始代码集合,它为开发者提供了深入理解Java平台工作原理的机会。JDK源码包含了许多核心类库,如`javax`、`com`、`org`、`java`以及`launcher`和`sunw`等包下的类和接口。这些源文件...
JDK源码,JDK源码,JDK源码,JDK源码,JDK源码,JDK源码,JDK源码
JDK源码阅读笔记
- **对象和类**:Java是面向对象的语言,类是其核心,JDK源码中包含了大量内置类,如`Object`、`String`、`Exception`等。 - **接口与多态**:`interface`定义了类的行为规范,多态性是Java的一大特性,体现在方法...
深入理解JDK 1.6的源码对于Java开发者来说至关重要,因为它揭示了语言核心库的工作原理,有助于优化代码、理解和解决潜在问题。 1. **Java虚拟机(JVM)**:JDK 1.6中的JVM是Java程序执行的基础,它的主要职责是...
jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码
6. **NIO.2的改进**:Java的非阻塞I/O(New I/O)在JDK11中进一步完善,例如`java.nio.file`包下增加了`Files.readString()`和`Files.writeString()`方法,简化了文件读写操作。 7. **JShell(REPL)**:JShell是...
8. **字符串处理**:Java中的String类是不可变的,了解其内部构造、字符串连接的效率以及如何优化字符串操作,有助于编写高效的代码。 9. **模块系统**:Java 9引入了模块系统,它使得大型项目的组织和打包更加有序...
1. **方法注释**:在JDK源码中,大部分类和方法都有详尽的JavaDoc注释,这些注释提供了关于类的功能、方法的作用以及参数和返回值的解释。例如,`java.util.ArrayList`中的`add()`方法就有详细的注释,描述了它如何...
10. **jdk.dynalink**:动态链接库,提供了一种方式来在运行时动态绑定方法调用,通常用于实现动态语言的功能或者高效的反射机制。 通过研究这些源码,开发者可以提升对Java平台的理解,学习如何优化代码,解决性能...
第一步:安装完jdk之后,打开jdk所在目录,里面有个src.zip,这就是此jdk的所有源码 第二步:找到之后我们开始导入,选中项目点击右键,选中Build Path栏中的Configure Build Path,在Libraries中我们打开JRE ...