一网打尽各种常量池
2025-06-05 12:35:59 0 举报
本文档是一份全面的参考资料,详细解析了在计算机编程领域中涉及常量池的相关概念、功能和实现方式。它集成了多种编程语言和平台下常量池的使用场景与技术细节,例如Java、C#和Python等,提供了一系列核心内容的深入探讨。本文档不仅涉及了常量池在代码优化、运行时性能提升等方面的作用,还探讨了常见问题的解决方案以及不同场景下的最佳实践。 无论您是专业开发者,还是初学者,这份文件都是一个宝贵的资源,可以帮助您更好地理解、设计和使用常量池,从而提升您的开发效率和程序性能。通过阅读这份文件,您可以掌握常量池的详细原理,并学习如何在实际项目中有效地实施这一技术。 文件格式为PDF,确保了内容的排版整洁、易读性高,并且支持跨平台查看。文档采用了实用主义的修饰语,强调其高度实用性和针对性,确保了信息的高效传递和应用价值。
作者其他创作
大纲/内容
test
运行时常量池
new String(\"c\")
test.intern
\"c\"
\"ab\"
heap
编译后
代码: public static void test1() { String test = \"abc\"; String test2 = \"abc\"; System.out.println(test==test2); }返回True
public static void test2() { String test = new String(\"c\")+\"ab\"; String test2 = new String(\"abc\"); System.out.println(test==test2); } false
类的元信息Person类
new(\"abc\")
new String(\"abc\")
ab
\"abc\"
1:类加载的时候会把各个类的符号应用和字面量添加到运行时常量池中
test2
元空间
public static void test2() { String test = \"abc\"; String test2 = new String(\"abc\"); System.out.println(test==test2); } false
代码: public static void test4() { String test = \"a\"+\"b\"+\"c\"; String test2 = \"abc\"; System.out.println(test==test2); }返回True这种编译器会进行优化,在编译阶段 会把\"a\" \"b\" \"c\" 优化成字符串\"abc\
每个类都有一个常量池(该类的资源仓库)存放字面量和符号引用
实际元空间才保存的真正信息是这个格式的
intern方法就是把一个字符串尝试放入运行时常量池,若运行时常量池没有就直接添加进去,若常量池有返回该字符串的引用
test3
c
public static void test4() { String test = \"ab\"+new String(\"c\"); String test2 = \"abc\"; String test3 = test.intern(); System.out.println(test3==tes2); }true
2:程序员直接调用String.intern()方法调用该方法,若运行时常量池没有该对象 就直接把该字符串丢进运行时常量池,若有,返回运行时常量池的引用
常量池
public static void test4() { String test = \"ab\"+new String(\"c\"); String test2 = \"abc\"; String test3 = test.intern(); System.out.println(test3==test); }false
源码
public static void test2() { String test = new String(\"abc\"); String test2 = new String(\"abc\"); System.out.println(test==test2); } false
类的元信息其他类类

收藏
0 条评论
下一页