今天心血来潮,看了看java笔试题,其中有人提到intern的方法,我暂且测试一番。
public static void main(String[] args) {
String s = new String("abc");
String b = s.intern();
if (s == b) {
System.out.println("字符串abc在常量池中");
} else {
System.out.println("字符串abc不在常量池中");
}
String s1 = "abc";
String b1 = s1.intern();
if (s1 == b1) {
System.out.println("字符串abc在常量池中");
} else {
System.out.println("字符串abc不在常量池中");
}
}
结果:
字符串abc不在常量池中
字符串abc在常量池中
详见jdk
public native String intern();
if the pool already contains a string equal to this String object,
then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
说明b和b1都是来自pool的。而new的Object是动态heap上的,这也从侧面证明了
String s = new String("123");创建几个对象的原理
分享到:
相关推荐
尽管描述中提到参考价值不高,但对于熟悉和理解Java后端开发、Spring框架的运作机制以及前端与后端的交互方式,该项目依然具有一定的学习和实践价值。在深入研究项目时,可以关注如何整合这些技术,理解它们在实际...
- `String`类还引入了`intern()`方法,用于缓存字符串实例,减少内存消耗,特别是在大量重复字符串出现时。 2. **设计模式**: - 设计模式是软件工程中的重要概念,Java API 1.6的实现中融入了许多设计模式,如...
Java开发面试题通常涵盖语言基础、面向对象编程、集合框架、多线程、异常处理、内存管理、IO流、网络编程、设计模式等多个方面。...在准备Java面试时,开发者应全面复习这些主题,并通过实践加深理解。
使用`String.intern()`方法可以避免这个问题。 3. 数组与集合:数组长度固定,而集合类如ArrayList和LinkedList具有动态扩展能力。根据需求选择合适的数据结构,避免性能瓶颈。 4. 并发问题:线程安全是Java并发...
9. **字符串常量池**:理解字符串在JVM中的存储方式,以及String对象的intern()方法,有助于优化字符串处理。 10. **类与对象的生命周期**:从类加载到卸载的整个过程,以及对象的创建、使用和销毁,都是JVM进阶...
虽然无法在此直接提供文档内容,但基于Java代码优化的常见实践,我可以分享一些广泛使用的优化技术。 1. **算法优化**:选择合适的数据结构和算法是优化的第一步。例如,使用哈希表进行查找操作比线性搜索更快,二...
"java String 源码"可能要求考生理解Java中的String类,它是不可变的,并且其内部机制包括字符串池和 intern() 方法。"面试设计模式"意味着试题可能包含面试常问的设计模式问题,如工厂模式、装饰器模式、代理模式等...
字符串的`intern()`方法会将字符串对象加入到字符串池中,如果字符串池中已有相同的字符串,则返回池中的引用。 10. **编码与解码**: 字符串与字节之间的转换涉及到编码问题,如`getBytes()`和`new String(byte...
Java面试是评估程序员技能的重要环节,它涵盖了广泛的Java编程概念和技术。以下是一些在Java面试中经常出现的问题,包括基础、中等和难题,以及一些常见的思考题。...持续学习和实践是提升Java技能的关键。
`String`类的`intern()`方法返回池中字符串的引用。如果字符串不在池中,它会被添加到池中并返回其引用。这个方法在优化内存使用和避免重复对象时非常有用。 ### 8. 格式化输出 `String`类还提供了`format()`方法,...
1. 类型注解:Java 8引入了类型注解,这是一种可以在类型、方法、参数、变量声明上添加元数据的方式。例如,`@NonNull`可以用来表示一个变量或参数不允许为null,`@Interned`可以标记字符串是否已经被 intern()。...
Java是一种广泛使用的编程语言,尤其在企业级应用和...以上是Java面试中常见的知识点,涵盖了面向对象、多态、继承、接口、字符串操作、对象创建、内存管理等多个方面,对于理解Java的核心概念和编程实践至关重要。
在Java编程语言中,基础知识是每个开发者都需要扎实掌握的关键部分。本篇复习将重点讨论String类中的`equals()`方法和`==`运算符的区别,这对于理解对象比较和...通过持续学习和实践,我们可以成为更好的Java开发者。
- Java中的`String`类提供了丰富的字符串操作方法,如`substring()`, `concat()`, `intern()`等,如`J_stringBuffer.java`和`J_Intern.java`可能涉及到字符串的构建和优化。 6. **输入/输出流** - 文件如`J_...
9. **intern()方法**: - 返回常量池中相同值的字符串引用,如果没有,则将当前字符串放入池中并返回其引用。 10. **模板字符串**: - Java 15引入了`String`的`formatted`方法,可以方便地进行格式化输出。 ...
如果是一个软件项目,通常会包括各种编程语言的源代码文件(如.java、.cs、.py等)、配置文件(如.gitignore、.env)、测试文件、README文档、数据库脚本等。实习生可能通过这个压缩包分享他们的工作,以便导师或...
本教程通过大量的代码示例、实战项目和面试题,帮助学习者掌握Java的基础和进阶知识,旨在提升实践能力和应对面试的能力。同时,课程涵盖了Eclipse和IDEA两种主流开发环境的使用,使学习者能更好地适应企业开发环境...
总之,通过本教程和提供的源代码,你将学习到如何在Java中有效地进行字符串操作,了解何时使用`StringBuilder`、`StringBuffer`、`StringJoiner`或流API,以及如何利用`intern()`方法优化内存使用。实践这些知识,你...
线程间的通信和同步是非常关键的,Java提供了多种机制,如wait()、notify()和notifyAll()方法,以及synchronized关键字和Lock接口,来避免竞态条件和死锁。此外,Executor框架提供了更高级别的线程管理,使得线程池...
14. **使用String.intern()**:对于重复出现的字符串,使用intern()方法可以节省内存。 15. **避免使用过多的反射**:反射操作相对慢,尽量减少其使用,特别是在性能敏感的代码中。 16. **使用高效的数据结构**:...