1)查找StringPool中是否存在"abc"这个对象
不存在:则在StringPool中创建一个"abc"对象,然后将StringPool中的"abc"对象的地址返回回来,赋给引用变量aa,这样aa就会指向StringPool中的这个"aa"字符串对象
存在:如果存在,则不创建任何对象,直接将StringPool中的这个"abc"对象地址返回给对象,赋给aa对象
例子:String aa = new String("abc"); new 就会创建新的对象(堆)
首先在StringPool中查找有没有"abc"对象
不存在:在StringPool去创建“abc”这个对象,然后在堆中创建一个"abc"字符串对象,然后将堆中的“abc”对象地址返回回来,赋给aa
存在:则不在StringPool中再去创建“abc”这个对象,直接在堆中创建一个“abc”字符串对象,然后将堆中的“abc”对象地址返回回来,赋给aa
String hello = "Hello";
String lo = "lo";
System.out.println((hello == "Hello") + " ");//true
System.out.println((Other.hello == hello) + " ");//true
System.out.println((hello == ("Hel"+"lo")) + " ");//true
System.out.println((hello == ("Hel"+lo)) + " ");//常量加变量,生成新的字符串对象,返回false
System.out.println(hello == ("Hel"+lo).intern());//true
相关推荐
`String Pool`是存储`String`字面量的缓存池,当通过字面量的方式创建`String`对象时,Java虚拟机首先检查`String Pool`中是否已经存在相同的字符串,如果存在,则返回该字符串的引用,而不是创建一个新的对象。...
String对象存在于Java的字符串常量池(String Pool)中,这个池是为了优化性能,避免多次创建相同的字符串对象。当创建一个新的String实例时,如果常量池中已经存在相同内容的字符串,那么就会返回池中已有的对象...
jodd java工具类库,包括数据库mvc依赖注入等等
AndroidManifest解析器 一个纯Java、实现了SAX接口、无任何第三方依赖的 AndroidManifest.xml 解析工具。 AndroidManifest.xml文件格式 ... String Pool Offset 4bytes // 字符串常量池相对于Chunk偏移值 Sty
使用 new String("abc") 创建的字符串对象不在 String Pool 中,而使用 String.valueOf("abc") 创建的字符串对象在 String Pool 中。 StringBuffer 和 StringBuilder 是可变的字符串类,StringBuffer 是线程安全的...
- **直接赋值**:这种方式会在**字符串常量池**(String Pool)中查找或创建一个对应的`String`对象,并将变量指向该对象。字符串常量池是Java堆的一部分,专门用来存储字符串字面量。如果字符串常量池中已经存在...
java jdbc帮助类 v1.0 自带连接池 boolean delete(java.lang.String sql) 删除单条记录的方法,适用于... boolean update(java.lang.String sql, java.lang.String poolName) 更新一条记录,适用与简单的update语句
2. **缓存效率**:当创建相同的字符串时,如果该字符串已经存在于字符串池(String Pool)中,则不会创建新的实例,而是返回已存在的引用。这避免了内存中存在多个相同字符串副本的情况,提高了空间效率。 3. **性能...
8. **String Pool优化**: - 使用`String.intern()`方法可以将字符串放入字符串常量池,如果池中已存在相同值,则返回池中的引用。 9. **Java 11的新特性**: - `strip()`, `stripLeading()`, 和 `stripTrailing...
在 JAVA 中,存在一个字符串池(String Pool),用于保存和共享 String 对象。String 对象池可以提高效率,因为它可以避免创建重复的 String 对象。 String 对象池是由 String 类维护的,可以通过 intern() 方法来...
3. **String缓存池(String Pool)**:字符串常量池是在编译期间创建的,存储所有的字符串字面量。使用`intern()`方法可以将运行时创建的字符串添加到池中,如果池中已有相同的字符串,`intern()`会返回池中已存在的...
- 直接通过字面量创建的`String`对象,如`"a"`,会存储在字符串池(String Pool)中。如果池中已有相同的字符串,就不会再创建新的对象,而是重用已存在的。 - 使用`new`关键字创建的`String`对象则会在堆内存中...
2. **对象缓存机制**:了解JVM如何缓存字符串常量,如`String Pool`,并讨论如何有效利用。 3. **JVM优化技巧**:探讨如何优化Java代码,减少不必要的字符串对象创建。 4. **类的演进**:讨论`String`相关类在不同...
在JDK 8中,字符串常量存储在永久代(Permanent Generation)中的字符串池(String Pool)中。字符串池是一个特殊的内存区域,用于存储共享的字符串字面量,这有助于避免重复创建相同的字符串对象。 ```java // 示例...
void setPoolName(java.lang.String poolName) boolean update(java.lang.String sql, java.util.Map,java.lang.Object> elements) 根据输入的参数执行更新操作 boolean update(java.lang.String sql, java...
public synchronized void freeConnection(String poolName, Connection con) { // ... } // 关闭连接池 public synchronized void release() { // ... } } ``` 以上就是Java数据库连接池的基本概念、原理...
3. Java中的String:String是Java中最常用的数据类型之一,涉及到String的不可变性、String Pool等概念。面试官会询问String与StringBuilder、StringBuffer的区别,以及在多线程环境下使用String的注意事项。 4. ...
本题主要考察了Java中字符串对象的创建、内存分配以及字符串常量池(String Pool)的概念。以下是对题干内容的详细解释: 1. 字符串常量池:在Java中,每当创建一个字符串对象时,如果该字符串值已经存在于字符串常量...