`
Javaloverlover
  • 浏览: 347023 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java String的对象创建

    博客分类:
  • java
 
阅读更多

一个常见的面试题:

1:

String str = new String("aaa");
String str1 = "aaa"
String str2 = new String("aaa");

System.out.println(str == str1);
System.out.println(str == str2);
System.out.println(str1 == str2);

 问题:前3行代码分别创建对象的情况?

答:String str = new String("aaa");这行创建2个对象;首先是"aaa",先到String池里看看有没有"aaa"这个对象,没有就创建对象,所以先创建在池里创建"aaa"对象,接着new语句又创建一个对象,也是"aaa",但这个对象在堆里;String str1 = "abc";直接去池里找有"aaa"这个对象,此时能找到,所以就不创建对象;String str2 = new String("aaa");同样的道理,直接在堆里创建一个对象;所以一共创建了3个对象。输出是:false,false,false;

 

2:

System.out.println(str == str1.intern());
System.out.println(str == str2.intern());
System.out.println(str1 == str2.intern());

 intern()就是返回String池里边对应字符串内容的对象,所以输出为:false,false,true

 

3:String s1 = "world";

String s2 = "wo";
String s3 = "rld";

System.out.println(s1 = "wo" + "rld");
System.out.println(s1 = "wo" + s3);

 "wo" + "rld"直接返回字符串池中的对象,所以第一个输出true;而"wo"+s3在返回堆里的"world"对象,输出false;自然总共创建4个对象。

分享到:
评论

相关推荐

    Java String对象的经典问题

    ### Java String对象的经典问题 #### 一、String 类与对象机制概述 在Java中,`String`类是一个非常重要的类,它提供了丰富的功能用于处理文本数据。`String`类是不可变的(immutable),这意味着一旦一个`String`...

    String对象创建问题

    首先,我们来了解一下编译期的`String`对象创建,这通常与字符串字面量有关。在Java源代码中,当使用双引号定义一个字符串,例如`"hello"`,Java编译器会将这些字面量字符串存储在常量池中。这种方式创建的`String`...

    java String 使用详解

    实际上创建了两个 String 对象,一个是”abc”对象,存储在常量空间中,一个是使用 new 关键字为对象 s 申请的空间。 二、字符串的常见操作 字符串的常见操作包括 charAt 方法、compareTo 方法、concat 方法等。 ...

    Java中颜色的String和Color对象之间的互相转换

    Java 中颜色的 String 和 Color 对象之间的互相转换 在 Java 中,颜色的表示形式有多种,包括字符串形式和 Color 对象形式。这两种形式可以互相转换,本文将介绍 Java 中颜色的 String 和 Color 对象之间的互相转换...

    String创建对象

    // 转换为String对象 ``` 4. **intern() 方法**: `String`类的`intern()`方法用于获取常量池中的字符串引用。如果常量池中已存在该字符串,则返回其引用;否则,将字符串添加到常量池并返回引用。例如: ```...

    JAVA面试题解惑系列(二)——到底创建了几个String对象-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    JAVA 面试题解惑系列之 String 对象创建机制 本文将深入探讨 JAVA 中 String 对象的创建机制,解答常见的面试题目,并探索 String 对象池的概念和机制。 一、String 对象的创建方式 在 JAVA 中,String 对象可以...

    java四种创建对象的方式

    当Java程序启动时,所有命令行参数都会被封装为String对象,并放入一个String数组中,然后作为参数传递给main方法。 3. 自动装箱操作 在Java中,基本数据类型和它们对应的包装类对象之间可以自动转换,这种转换过程...

    String类创建对象问题

    ### String类创建对象问题 #### 一、String 类与常量池、字符串池的基本概念 在 Java 中,`String` 类并不属于八种基本数据类型之一,而是作为一个对象存在。这意味着 `String` 对象默认值为 `null`。尽管如此,`...

    java中Object对象String对象的解析.pdf

    在 Java 中,可以使用两种方式创建 String 对象:一种是使用字面值赋值方式,例如 `String s = "a";`;另一种是使用 new 关键字,例如 `String s = new String("a");`。这两种方式创建的 String 对象有很大的区别。...

    java String 数据结构

    当你创建一个新的`String`对象时,如果常量池中已经存在相同内容的字符串,那么会直接返回该对象的引用,而不是创建新的实例。 字符串的常用方法包括: 1. `length()`:返回字符串的长度,即包含的字符数。 2. `...

    Java String创建对象实例解析

    Java String 创建对象实例解析 Java String 创建对象实例解析是 Java 语言中一个重要的概念,它涉及到字符串对象的创建、内存分配、垃圾回收等方面。在 Java 中,String 是一个特殊的类,它既是类也是对象。下面...

    解析Java中的String对象的数据类型 字符串

    在Java中,如果我们使用字面值方式创建的String对象,它们是常量池中的字符串常量,如果我们使用new关键字创建的String对象,它们是运行时创建的新对象。例如,String s0="kvill";,String s1=new String("kvill");...

    我们一起学Java之String

    这一特性对于Java内存管理有着重要影响,因为String对象会存储在方法区的字符串常量池中,以避免重复创建相同的字符串,从而提高内存使用效率。 在JDK 8版本中,字符串常量池的位置发生了变化,从方法区移至Java堆...

    Java String 字符串创建理解 equels和\"==\" 差异

    在Java编程语言中,字符串(String)是一个非常基础且重要的数据类型。它被广泛用于存储文本信息,而关于字符串创建的理解,以及"equals()"方法和"=="运算符的区别,是每个Java开发者都应深入掌握的知识点。 首先,让...

    Java中的String对象是不可变的吗Java开发Jav

    在Java编程语言中,String对象被认为是不可变的。这个特性是Java设计者为了优化性能、安全性和线程安全性而有意设定的。理解String对象的不可变性对于Java开发者来说至关重要,因为它影响着代码的编写、内存管理和多...

    创建string对象过程的内存分配:

    ### 创建string对象过程的内存分配详解 #### 一、引言 在Java中,`String` 类是最常用的数据类型之一,用于表示不可变的字符序列。`String` 对象的创建涉及复杂的内存分配机制,特别是在Java虚拟机 (JVM) 的环境中...

    Java String与Byte类型转换

    在Java编程中,String对象和Byte类型的转换是常见的操作,特别是在网络编程中,因为网络通信通常涉及字节流的处理。下面将详细讲解Java中如何进行这两种类型之间的转换,并探讨其在网络编程中的应用。 首先,让我们...

    小心String的陷阱——深入剖析Java中String的处理机制

    `String Pool`是存储`String`字面量的缓存池,当通过字面量的方式创建`String`对象时,Java虚拟机首先检查`String Pool`中是否已经存在相同的字符串,如果存在,则返回该字符串的引用,而不是创建一个新的对象。...

    java String类的实现

    `String`类代表不可变的字符序列,这意味着一旦创建了`String`对象,它的值就不能改变。这个特性使得`String`在处理文本时既安全又高效。 ### 1. `String`类的构造方法 `String`类提供了多种构造方法,允许我们以...

Global site tag (gtag.js) - Google Analytics