`
KongFUN
  • 浏览: 19833 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中两种String对象创建和初始化方式比较

    博客分类:
  • Java
阅读更多

在Java中,初始化String分为两种:
1. String s1 = "11";
2. String s2 = new String("11")
区别:
方法1中,先在内存中查找有没有"11"这个字符串对象存在,如果存在就把s1指向这个字符串对象;
方法2中,不论内存中是否已经存在"11"这个字符串对象,都会新建一个对象。

 

前者会在栈中创建一个对象引用变量str,然后 查看栈中是否存在“11”,如果没有,则将“11”存放进栈,并令引用变量str指向它;如果已经有“11”,则直接令str指向它;后者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象。这样充分利用 了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。
      下述代码展示了二者的不同:


/** */ /**
 *
 * 
@author  Jeffery
 
*/

public   class  Main  ... {

    
/** */ /**
     * 
@param  args the command line arguments
     
*/

    
public   static   void  main(String[] args)  ... {
        String strA 
=   " abc " ;
        String strB 
=   " abc " ;
        String strAA 
=   new  String( " abc " );
        String strBB 
=   new  String( " abc " );
        System.out.println(strA 
==  strB);
        System.out.println(strAA 
==  strBB);
    }

}
输出结果:
true
false

 

总结:
1.
String str1 = "string";
String str2 = "string";

if (str1==str2)  return true;

else if (str1.equals(str2)) return true;
else return false;
2.
String str3 = new String("string") ;
String str4 = new String("string") ;
if (str1==str2) return false;

else if (str1.equals(str2)) return true;

else return false;

分享到:
评论

相关推荐

    Java中对象的初始化

    在Java中,对象的初始化是一个重要的概念,它涉及到如何创建对象以及如何设置对象的状态。本文档主要介绍Java对象初始化的相关知识点,包括构造方法的使用、方法重载、this关键字等。 #### 二、构造方法与对象初始...

    Java中StringBuffer对象的初始化.pdf

    创建`StringBuffer`对象主要有两种方式: - **无参数构造器**:`StringBuffer s = new StringBuffer();` 这将创建一个空的`StringBuffer`对象,初始容量通常是16个字符。 - **带参数构造器**:`StringBuffer s = ...

    java String 使用详解

    String 对象的初始化是一种特殊的语法,Java 提供了简化的初始化方法,例如: String s = "abc"; 这与面向对象的标准语法不同,标准语法应该是: String s = new String("abc"); 但是,按照面向对象的标准语法,...

    Java对象属性数据比较,返回变化数据

    `ObjectCompareUtil`工具类提供了一种通用的方式来比较两个对象的属性,而`PriceCheckDetail`类展示了如何在实际业务中利用这样的工具。理解这些概念和技巧对于Java开发者来说至关重要,尤其是在处理数据跟踪和比较...

    String的两种初始化方法讲解

    String的初始化方法有两种,即使用字面量初始化和使用构造函数初始化。下面,我们将对这两种方法进行详细的介绍。 1. 使用字面量初始化 使用字面量初始化的方法是使用String str = "abc"的形式创建一个字符串对象...

    Java中初始化List的5种方法示例

    Java中初始化List有多种方法,本文将介绍五种常见的初始化方式。了解这些方法可以帮助开发者更好地使用Java中的List数据结构。 第一种方法:构造List后使用add方法初始化,这是最常规的做法,但使用起来不太方便。 ...

    Java对象的比较方式.doc

    Java提供了两种主要的方式来实现对象之间的比较,即`Comparable`接口和`Comparator`接口。这两种接口使得自定义对象可以根据特定的规则进行排序。 首先,`Comparable`接口是Java的`java.lang`包中的一个基础接口,...

    9.java学习第九章——对象的创建和使用+构造方法+方法重载——作业的形式:创建对象在JVM中的存储状态(内存图).pdf

    - 构造方法是一种特殊的方法,主要用于初始化新创建的对象。 - 构造方法的名字必须与类名相同,没有返回值类型(即使是void也不行)。 #### 2. 构造方法的使用 - 默认构造方法:如果没有显式定义任何构造方法,Java...

    Java 成员初始化要注意的两种不同的情况

    在Java编程语言中,成员初始化是创建对象时为类的实例变量赋予初始值的过程。本文将详细探讨Java成员初始化的两种不同情况,以及与之相关的基础知识。 首先,我们来看第一种情况:类内的变量初始化。当声明一个类的...

    大数据必学Java基础(二十五):数组的三种初始化方式

    本篇文章将详细讲解Java中数组的三种初始化方法:静态初始化、动态初始化和默认初始化。 一、静态初始化 静态初始化是指在声明数组的同时为其分配空间并赋予初始值。这种方式允许我们在定义数组时就明确给出每个...

    用new创建对象和直接定义的区别

    本文将深入探讨两种常见的对象创建方式:使用`new`关键字创建对象和直接定义对象。这两种方法虽然最终都能创建类的实例,但它们在内存分配、作用域和生命周期等方面存在显著差异。 ### 1. `new`关键字创建对象 `...

    java代码-JAVA中String数组初始化,一维数组和二维数组初始化

    本篇将详细讲解如何在Java中初始化String类型的一维数组和二维数组。 ### 一、一维String数组的初始化 1. **静态初始化**: 在Java中,可以使用花括号{}来静态初始化一维数组。这种方式允许你在声明数组的同时...

    Java中的静态块初始化块及main方法.doc

    Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...

    在Java中创建线程有两种方法

    Java提供了两种主要的方法来创建线程,分别是直接继承自`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景。 1. **继承Thread类**: 当你选择继承`Thread`类时,你需要创建一个新的类,该类直接...

    JAVA 对word 内容的提取返回String

    我们将通过两种方式来实现这个目标,分别是使用 Java 流读取 Word 内容和使用 Jacob 读取 Word 内容。 使用 Java 流读取 Word 内容 在第一个示例中,我们使用 Java 流来读取 Word 文档的内容。我们首先需要引入...

    Java中的类和对象总结

    ### Java中的类和对象总结 #### 一、类与对象的概念 在面向对象编程中,类(Class)和对象(Object)是两个核心概念。类是对象的抽象模板,它定义了对象的数据结构(即属性)和行为(即方法)。而对象则是类的具体...

    Java对象和类 最详细说明

    以下是一些关于如何在Java中创建和使用对象及类的示例。 ##### 示例1:main方法和类 假设我们需要创建一个`Student`类,包含两个数据成员`id`和`name`。接下来我们创建一个`Student`类的对象,并打印出对象的值。 ...

    java数组初始化详解修正版.doc

    根据不同的初始化方式,Java 提供了三种主要的数组初始化方法:动态初始化、静态初始化以及隐式初始化。 #### 二、动态初始化 动态初始化是在创建数组时由系统自动为数组中的元素赋以默认值。默认值取决于元素的...

    Java基础之字符串及String

    这种方式会首先在堆中创建一个`String`对象,然后根据字符串字面量在常量池中可能创建第二个对象(如果常量池中不存在的话)。 字符串的本质是`char`数组,即`char[]`,例如: ```java String str = "laofu"; // ...

    JavaBean与JsonString的相互转换

    在Java开发中,JavaBean和JsonString是两种常见的数据表示形式。JavaBean是Java对象的一种规范,用于封装数据,而JsonString是一种轻量级的数据交换格式,常用于前后端交互。本篇将深入探讨JavaBean与JsonString之间...

Global site tag (gtag.js) - Google Analytics