转自:http://www.diybl.com/course/3_program/java/javajs/2007104/75886.html
字符串可能是任何程序语言中都会出现的对象,java中创建并初始化一个String对象,最常见的方式有两种:
String str=new String("XXX");
String str="XXX";
二者看似相同,其实有很大的差别。
前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后查看栈中是否存在"XXX",如果没有,则将"XXX"存放进栈,并令引用变量str指向它;如果已经有"XXX",则直接令str指向它。这样充分利用了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对象。
下述代码展示了二者的不同:
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
分享到:
相关推荐
Java中初始化List有多种方法,本文将介绍五种常见的初始化方式。了解这些方法可以帮助开发者更好地使用Java中的List数据结构。 第一种方法:构造List后使用add方法初始化,这是最常规的做法,但使用起来不太方便。 ...
String 对象的初始化是一种特殊的语法,Java 提供了简化的初始化方法,例如: String s = "abc"; 这与面向对象的标准语法不同,标准语法应该是: String s = new String("abc"); 但是,按照面向对象的标准语法,...
初始化二维数组有以下两种方式: 1. **静态初始化**: 初始化时可以同时指定每行的元素。例如: ```java String[][] str2DArray = { {"Hello", "Java"}, {"World", "Programming"} }; ``` 2. **动态初始...
本文将详细探讨Java成员初始化的两种不同情况,以及与之相关的基础知识。 首先,我们来看第一种情况:类内的变量初始化。当声明一个类的成员变量(即实例变量)时,即使你没有显式地为它们赋值,Java编译器会自动为...
创建`StringBuffer`对象主要有两种方式: - **无参数构造器**:`StringBuffer s = new StringBuffer();` 这将创建一个空的`StringBuffer`对象,初始容量通常是16个字符。 - **带参数构造器**:`StringBuffer s = ...
根据不同的初始化方式,Java 提供了三种主要的数组初始化方法:动态初始化、静态初始化以及隐式初始化。 #### 二、动态初始化 动态初始化是在创建数组时由系统自动为数组中的元素赋以默认值。默认值取决于元素的...
本篇文章将详细讲解Java中数组的三种初始化方法:静态初始化、动态初始化和默认初始化。 一、静态初始化 静态初始化是指在声明数组的同时为其分配空间并赋予初始值。这种方式允许我们在定义数组时就明确给出每个...
初始化块可以分为两种:静态初始化块和非静态初始化块。 静态初始化块 静态初始化块使用static关键字定义,当类加载到系统时执行一次。静态初始化块只可以初始化类变量,即static修饰的数据成员。静态初始化块的...
String的两种初始化方法是Java开发中的一大重要知识点。使用字面量初始化可以重用常量池中的字符串对象,而使用构造函数初始化总是创建一个新的字符串对象。理解这两种方法的实现过程对于Java开发人员来说是非常重要...
我们将通过两种方式来实现这个目标,分别是使用 Java 流读取 Word 内容和使用 Jacob 读取 Word 内容。 使用 Java 流读取 Word 内容 在第一个示例中,我们使用 Java 流来读取 Word 文档的内容。我们首先需要引入...
Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...
在 Java 中,对象的初始化方式主要有两种:构造器和初始化块。构造器是 Java 中常用的对象初始化方式,用于对对象进行初始化操作。初始化块也是对象初始化的一种方式,但它可以对 Java 对象进行更多的初始化操作。 ...
在Java开发中,JavaBean和JsonString是两种常见的数据表示形式。JavaBean是Java对象的一种规范,用于封装数据,而JsonString是一种轻量级的数据交换格式,常用于前后端交互。本篇将深入探讨JavaBean与JsonString之间...
Java中主要有两种方式来创建字符串: 1. **使用字符串常量直接初始化**: ```java String s = "hello!"; ``` 这种方式简单直接,适合于创建只读的字符串。 2. **使用构造方法创建并初始化**: - **创建一个空...
本文将深入探讨`log4j`的初始化过程,特别是两种常见的初始化方法——通过配置文件放置于不同目录下的初始化策略。 #### 第一种初始化方案:配置文件置于`/WEB-INF/`目录下 在Web应用中,将`log4j`配置文件置于`/...
成员变量的初始化分为两种情况:直接在声明时初始化(如`private String a = "hello";`)和在初始化块中初始化。直接初始化的变量会按照它们在代码中的顺序执行初始化。如果在初始化块中访问未初始化的变量(如`b`...
本文将详细解析Spring Boot中常见的几种资源初始化方式及其源码实现。 1. **`@PostConstruct` 注解** 当我们需要在bean初始化后执行特定的代码时,可以使用`@PostConstruct`注解。这个注解标记的方法会在bean实例...
这两种类型的数组在内存中存储和管理的方式有所不同。 1. 基本类型数组 基本类型数组,如int、byte、char等,它们的元素直接存储在数组内部。当声明并初始化一个基本类型数组时,例如: ```java int[] a = {1, 3, 5...
在Java编程中,数据结构是程序设计的基础,List和Map是两种非常常用的数据结构。本文将详细介绍Java中初始化List和Map的几种常见方法,并对比它们的优缺点。 首先,我们来看传统的初始化方式: ```java // 初始化...