`
西口西
  • 浏览: 10012 次
社区版块
存档分类
最新评论

String的特别之处1

    博客分类:
  • java
 
阅读更多

【西口西】在Java中,感觉String是个很特别的存在,下面我来稍微总结一下,欢迎吐槽~


两种实例化方法的区别

String作为一个基本数据类型,实例化的时候可以直接赋值

String s1=”blahblah”;

当然也可以调用String类的构造方法,通过new赋值

String s2=new String(“blahblah”);

这两种方式有何区别呢?

首先“blahblah”一经声明,本身就是一个String类的匿名对象,在堆内存中开辟了空间,就算“blahblah”这个字符串没有名字,它也可以直接调用String类中的方法。

  • 使用直接赋值的方式,在对多个字符串进行赋值时,如果字符串内容相同,则不同的字符串名字指向的都是同一个堆内存地址,如:

    String s1=”blahblah”;
    String s2=”blahblah”;

    对s1s2进行比较,使用==和equals,结果都是true。(String中==比较地址,equals比较内容)
    因为此时s1,s2实际上指向的是同一堆内存地址中的”blahblah”。

  • 但如果使用构造方法对多个字符串进行赋值,不管内容是否相同,每次new一个对象都会开辟一个新的堆内存

    String s1=new String(“blahblah”);
    String s2=new String(“blahblah”);

    再对s1s2进行比较,使用==时结果是false,使用equals时结果为true。
    此时的s1,s2虽然内容相同,指向的却不是同一个堆内存地址了。

由此可见,使用直接赋值的方法可以减少空间的冗余度。

分享到:
评论

相关推荐

    StringtoList和StringtoMap和StringtoObject和StringtoArray

    1. **String to List** JSON字符串中包含一个数组时,我们可以将其转换为Java的List。这通常通过使用`org.json.JSONArray`或`com.google.gson.JsonArray`来实现。例如: ```java String jsonString = "[\"Apple\...

    C# String 的各种转换

    ### C# String 的各种转换 在C#编程语言中,字符串与数字之间的转换是非常常见的操作。本文将详细介绍如何在C#中实现字符串与其他数据类型(如整数、浮点数等)之间的转换,并特别关注字符串与十六进制之间的转换。...

    HexString和Base64String的相互转换

    1. **HexString转Base64String**:此过程涉及到将每个十六进制字符转换为对应的二进制值,然后每连续的两个二进制值组成一个字节。接着,按照Base64的编码规则,将这些字节转换为Base64字符。 2. **Base64String转...

    String[] list 相互转化

    String[] arr = new String[]{"1", "2"}; List<String> list = Arrays.asList(arr); ``` 此外,还可以先创建一个空的 `ArrayList`,然后调用 `add` 方法逐个添加数组中的元素。这种方法更为灵活,但效率稍低。 ```...

    c++string用法详解

    特别是 C++ 的 string 类,它提供了许多实用的函数和操作符,极大地方便了字符串的处理。 1. String 的存储功能 C++ 的 string 类可以存储字符串,并提供了许多函数来操作字符串,如 substr()、find()、getline() ...

    c++中double与string相互转换算法

    在C++编程中,数据类型之间的转换是常见的操作,特别是在处理用户输入或数据存储时。本文将详细讨论如何在C++中将`double`类型的数值转换为`std::string`字符串,以及如何将`std::string`转换回`double`。我们将基于...

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

    文章由天津工业大学软件工程专业的翁龙辉撰写,旨在深入剖析`String`在Java中的独特行为及其潜在的陷阱。下面我们将详细探讨这些陷阱及其背后的原理。 ### String的不可变性 `String`在Java中被设计为不可变对象,...

    LUA-string库函数

    string.format 函数在用来对字符串进行格式化的时候,特别是字符串输出,是功能强大的语言的 printf 来使用这个函数。该函数可以用于格式化字符串,例如: ```lua print(string.format("pi = %.4f", math.pi)) --> ...

    C++实现string存取二进制数据的方法

    总的来说,当在C++中使用string类处理二进制数据时,需特别注意空字符的影响,正确使用构造函数并传递数据长度,以确保数据的完整性和一致性。同时,理解string类的内部工作原理以及其与二进制数据交互时可能出现的...

    redis之string介绍

    ### Redis之String介绍 #### Redis String概述 Redis是一款开源的键值存储系统,因其高性能、低延迟的特点,在缓存、消息队列等场景下被广泛应用。Redis支持多种数据类型,其中最基础的数据类型就是`String`。在...

    delphi 自带 StringReplace 慢, 替换 StringReplace ,高效率,秒杀 原版

    delphi 自带 StringReplace 慢, 替换 StringReplace ,高效率,秒杀 原版

    Excel和String.xml 互相转换工具

    1. 导入`String.xml`:将应用中的`String.xml`文件导入工具,工具会解析XML结构并将其转换成Excel表格。 2. 编辑和翻译:在Excel中进行修改,添加新的行或列以适应新的字符串或语言。 3. 导出回XML:完成编辑后,...

    Android string拼接

    String sFinal1 = String.format(sAgeFormat1, "暂无", "数据"); // 输出结果为 "業暂无数据" Log.d("TAG", "最终字符串: " + sFinal1); ``` 这里,`%1$s`被替换为第一个字符串参数`"暂无"`,`%2$s`被替换为...

    String练习

    在Java编程语言中,`String`类是使用最频繁的类之一,主要用于处理文本数据。这个练习主要关注`String`类的基本操作,非常适合初学者掌握和理解。在本练习中,我们将探讨以下知识点: 1. **字符串创建与常量池**: ...

    String实例

    在编程领域,字符串是数据类型中的重要组成部分,特别是在C++这样的强类型语言中。`String`类通常用于处理文本,提供了丰富的操作方法。本篇将深入探讨如何在C库的基础上,手动自定义`String`原型,实现一个基本的`...

    StringUtil.rar

    在IT行业中,字符串操作是日常编程任务中不可或缺的一部分,特别是在C++这样的编程语言中。"StringUtil.rar"这个压缩包文件包含了一些关键的字符串处理功能,主要用于VC++环境下的字符串操作。下面我们将详细探讨...

    Android byte[] 和 String互相转换

    2. **大小端问题**:当处理二进制数据时,特别是网络通信中的数据,可能涉及到字节序(大端或小端)的问题。在Android设备上,通常是小端字节序,但网络传输中可能存在大端字节序,此时需要额外处理。 3. **效率**...

    String类创建对象问题

    尽管如此,`String` 类拥有其独特之处,比如它是不可变的(final),这保证了字符串一旦创建便不能更改其内容。 **常量池(Constant Pool)**:在 Java 编译阶段确定的数据集合,存储在 `.class` 文件中。它包含了类...

Global site tag (gtag.js) - Google Analytics