`

转java String初始化的两种方式

    博客分类:
  • java
阅读更多
字符串可能是任何程序语言中都会出现的对象,java中创建并初始化一个String对象,最常见的方式有两种:
String str=new String("XXX");
String str="XXX";   
      二者看似相同,其实有很大的差别。
      前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在"XXX",如果没有,则将"XXX"存放字符串池,并令引用变量str指向它;如果已经有"XXX",则直接令str指向它。这样充分利用 了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。
      下述代码展示了二者的不同:
Java代码  
1. public class Main { 
2.  
3.     /** *//**
4.      * @param args the command line arguments
5.      */ 
6.     public static void main(String[] args) { 
7.         String strA = "abc"; 
8.         String strB = "abc"; 
9.         String strAA = new String("abc"); 
10.         String strBB = new String("abc"); 
11.         System.out.println(strA == strB); 
12.         System.out.println(strAA == strBB); 
13.     } 
14. } 

输出结果:
true
false
字符串限定是指String s = “abc”这种形式,也就是说String s1 = “abc”;
s 和 s1 都是指向同一个内存地址
String s = "abc";
这句是定义一个String变量s,jvm会先去字符串池中找有没有"abc",有的话就把s指向"abc",没有就会先在池中创建一个,再让s指向"abc"。
String s = new String("abc");
这句是先定义一个String变量s,然后在内存中分配新的空间"abc"再让s指向这个内存地址。
分享到:
评论

相关推荐

    java String 使用详解

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

    JavaBean与JsonString的相互转换

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

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

    第三种方法:使用Arrays.asList这种方式使用了java.util.Arrays的静态方法,写法上比之前的两种都更简洁,也没有构造匿名内部类的效率问题。但也有几点需要注意:Arrays.asList返回的是Arrays的静态内部类,不支持增...

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

    本文将详细探讨Java成员初始化的两种不同情况,以及与之相关的基础知识。 首先,我们来看第一种情况:类内的变量初始化。当声明一个类的成员变量(即实例变量)时,即使你没有显式地为它们赋值,Java编译器会自动为...

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

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

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

    初始化二维数组有以下两种方式: 1. **静态初始化**: 初始化时可以同时指定每行的元素。例如: ```java String[][] str2DArray = { {"Hello", "Java"}, {"World", "Programming"} }; ``` 2. **动态初始...

    Java中StringBuffer对象的初始化.pdf

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

    JAVA 对word 内容的提取返回String

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

    Java8 将List<Integer> 转换成以逗号分割的String字符串

    在Java编程中,将一个`List<Integer>`转换成以逗号分隔的`String`字符串是一种常见的需求,尤其是在处理数据展示或格式化输出时。Java 8引入了新的特性和方法,使得这种转换变得更加简洁和高效。下面我们将深入探讨...

    Java中初始化块详解及实例代码

    初始化块可以分为两种:静态初始化块和非静态初始化块。 静态初始化块 静态初始化块使用static关键字定义,当类加载到系统时执行一次。静态初始化块只可以初始化类变量,即static修饰的数据成员。静态初始化块的...

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

    学习大数据技术时,掌握Java基础,特别是数组的初始化方式是至关重要的。本篇文章将详细讲解Java中数组的三种初始化方法:静态初始化、动态初始化和默认初始化。 一、静态初始化 静态初始化是指在声明数组的同时为...

    String的两种初始化方法讲解

    String的两种初始化方法是Java开发中的一大重要知识点。使用字面量初始化可以重用常量池中的字符串对象,而使用构造函数初始化总是创建一个新的字符串对象。理解这两种方法的实现过程对于Java开发人员来说是非常重要...

    Java数组初始化时内存分配情况解析.pdf

    这两种类型的数组在内存中存储和管理的方式有所不同。 1. 基本类型数组 基本类型数组,如int、byte、char等,它们的元素直接存储在数组内部。当声明并初始化一个基本类型数组时,例如: ```java int[] a = {1, 3, 5...

    Java类初始化顺序

    成员变量的初始化分为两种情况:直接在声明时初始化(如`private String a = "hello";`)和在初始化块中初始化。直接初始化的变量会按照它们在代码中的顺序执行初始化。如果在初始化块中访问未初始化的变量(如`b`...

    log4j初始化

    本文将深入探讨`log4j`的初始化过程,特别是两种常见的初始化方法——通过配置文件放置于不同目录下的初始化策略。 #### 第一种初始化方案:配置文件置于`/WEB-INF/`目录下 在Web应用中,将`log4j`配置文件置于`/...

    Java初始化块及执行过程解析

    初始化块也是对象初始化的一种方式,但它可以对 Java 对象进行更多的初始化操作。 在 Java 中,初始化块的语法格式如下: [修饰符]{ // 初始化块的可执行代码 ... } 其中,修饰符只能是 static,使用 static ...

    Java_String_的方法

    Java中主要有两种方式来创建字符串: 1. **使用字符串常量直接初始化**: ```java String s = "hello!"; ``` 这种方式简单直接,适合于创建只读的字符串。 2. **使用构造方法创建并初始化**: - **创建一个空...

    springboot初始化资源的几种方式源码

    本文将详细解析Spring Boot中常见的几种资源初始化方式及其源码实现。 1. **`@PostConstruct` 注解** 当我们需要在bean初始化后执行特定的代码时,可以使用`@PostConstruct`注解。这个注解标记的方法会在bean实例...

    java中文转拼音

    尽管代码片段中没有显示具体的转换方法实现,但我们可以推测出以下两种可能的方法: 1. **转换为完整拼音**:该方法遍历输入的中文字符串,查找每个汉字在拼音表中的对应拼音,并返回完整的拼音串。 2. **转换为...

Global site tag (gtag.js) - Google Analytics