首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中表达"new String(...)"的目的是什么?

在Java中,new String(...)的目的是创建一个新的字符串对象。这通常是为了确保创建一个独立的、不可变的字符串对象,以便在程序中进行修改或操作而不会影响其他字符串对象。

当使用new String(...)时,会创建一个新的字符串对象,即使原始字符串和新创建的字符串具有相同的内容。这是因为Java中的字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能更改其内容。

例如,在以下代码中:

代码语言:java
复制
String s1 = "hello";
String s2 = new String("hello");

s1s2都表示相同的字符串"hello",但它们是两个不同的字符串对象。这意味着,如果在程序中修改s1,它不会影响s2,反之亦然。

需要注意的是,在大多数情况下,使用字面量创建字符串对象(例如String s = "hello")已经足够了,因为字符串字面量在Java中是不可变的。只有在需要创建一个独立的、可修改的字符串对象时,才需要使用new String(...)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java中的stringbuffer是什么_java string类

话不多说开始: 区别一:在Java中字符串使用String类进行表示,但是String类表示字符串有一个最大的问题:“字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向。”...方式二:利用StringBuffer类中的append()方法(public StringBuffer append(String str))。...区别五:String类与StringBuffer类中定义的常用方法,两个类的大部分方法可以互补,String类应该很熟悉,我就说几个常用的StringBuffer类方法: public StringBuffer...从JDK1.5开始,Java增加了一个新的字符串操作类:StringBuilder类。...而打开Java源码你会发现区别,在StringBuffer类中定义的方法全部使用“synchronized”进行同步定义,属于安全的线程操作;而StringBuilder类没有同步定义,StringBuilder

43510

Java中new Long(String s)和Long.valueOf(String s)的区别

想要知道new Long(String s)和Long.valueOf(String s)的区别,还是得从源码直接看比较直观 new Long(String s) Long.valueOf(String...s) 从源码可以看出,使用new Long(s)和Long.valueOf(s)都会去调用parseLong(s, 10)方法, parseLong(String s, int radix)...result : -result; } parseLong(String s, int radix)返回long值,这事区别就出来了,对于new Long(String s)是直接将该long值返回...,而Long.valueOf(String s)会将返回的long值继续处理Long.valueOf(long l) 那么从valueOf(long l)方法可以看到再返回结果之前会进行一个判断...,判断当值在[-128,127]之间返回的是缓存的值,不在这个值区间了才会通过构造函数返回,从这一点上看会比new Long(String s)更节省空间,提高性能。

13510
  • java中的new BufferedReader(new InputStreamReader(System.in))「建议收藏」

    流 JAVA /IO 基本小结 通过一行常见的代码讨论:new BufferedReader(new InputStreamReader(System.in)) java的IO是基于流(stream...对于流,我们要研究些什么呢,我们主要是针对应用掌握流的特性,而之后根据流的特性,我们转移不同的数据时,选择不透的流对象,达到我们的目的。 下面让我们从一行常见的代码来分析流吧!...I/O应用的一个例子 import java.io.*; public class TestIO{ public static void main(String[] args) throws IOException...")); String s, s2 = new String(); while((s = in.readLine()) !...2区中,要以字符的形式从一个String对象中读取数据,所以要产生一个StringReader类型的stream。

    96420

    Java中new与null的不同

    今天在写一个android的程序时,本来想初始化一个list的集合,以避免第二次的数据添加在第一次的后面,就直接使用了对象=null,发现在给list集合添加数据后运行出现了这样的错误。...翻译下来的意思是 试图在空对象引用上调用接口方法的布尔java. U.List.Advices(java. Lang.Object)” 也就是说这个list集合并没有初始化。...查询资料后发现 比如: List list=new ArrayList(); new相当于开辟了一块新内存放入了对象,并把它的引用给了list.而 list=null 就相当于list...声明了一个空的对象的引用,并没有开辟新的空间,所以我在上面添加数据的时候就会出现空对象引用。...当然,这只是我个人的理解。学习中,还是得不断踩坑,哪怕这个坑很小。

    76020

    Java 8 中的拉姆达表达式是什么?

    Java 8 中的拉姆达表达式是什么? 拉姆达表达式就是一个匿名函数。在 C#中,拉姆达表达式是一个委托类型,因此拉姆达表达式可以赋值给一个委托变量。...Java 中,没有委托,Java 的设计者只能想出一些曲折的方法来实现拉姆达表达式,这种方式就是用接口。 这种接口叫做函数式接口。...如果还需定义别的抽象方法,那只能定义 Object 类中的同名方法,事实上,例如 toString 和 Clone 这种方法的声明并不是抽象的,Java API 中某些接口重新声明 Object 类中的方法...,目的是为了关联 javadoc 中的注释而已。...这样一个接口的 dosomething 方法就对应了拉姆达表达式,也就是说拉姆达表达式可以赋值给这个接口了。

    2.8K40

    Java中的String不再纠结

    先分享一下java中string的一些小专题吧,这部分比比较基础,但是也非常的有用。我发现很多面试官像中了邪一样就爱问这个。。string的种种,纠结,希望这篇文章让大家不再纠结。。...String str1 = "string"; String str4 = "string"; String str2 = new String("string"...); String str3 = new String("string"); /*用于测试两种创建字符串方式的区别*/ System.out.println.../解释:每一次new都会创建一个新的对象 false // 解释: 注意==比较的是地址,不仅仅是内容 true //介绍一下intern方法,这个方法会返回一个字符串在常量池中的一个地址,如果常量池中有与...StringBuilder sb = new StringBuilder("string builder"); StringBuffer sf = new StringBuffer(

    35820

    Java 中的 String Pool 简介

    在 Java 中 String 对象是我们最常用的对象。在本文章中,我们主要对 String 对象使用的 String Pool 进行一些简单的介绍。...Java 定义 String 后,String 是存储在 String Pool 中的,以便于加快字符串的访问和处理。...String 构造方法中的内存分配因为构造 String 对象有几种不同的方法,我们可以通过直接赋值的方式构造 String 对象,我们也可以通过 new 的方式来构造一个 String 对象。...简单来说,如果你使用了 new 这个关键字来构造 String 对象的话,不管 String 对象中的值是不是相同,JVM 都会为构造的对象开辟存储空间,这个存储空间在 JVM 的 heap 中。...但是这个值在最近的一些 Java 版本更新中有了改变,从 7u40 到 Java 11 String Pool 的大小为 60013 buckets,在 Java 11 的后续版本中,这个值增加到了 65536

    37920

    Java 中的 String Pool 简介

    在 Java 中String对象是我们最常用的对象。在本文章中,我们主要对 String 对象使用的 String Pool 进行一些简单的介绍。...Java 定义 String 后,String 是存储在 String Pool 中的,以便于加快字符串的访问和处理。...String 构造方法中的内存分配因为构造 String 对象有几种不同的方法,我们可以通过直接赋值的方式构造 String 对象,我们也可以通过 new 的方式来构造一个 String 对象。...简单来说,如果你使用了 new 这个关键字来构造 String 对象的话,不管 String 对象中的值是不是相同,JVM 都会为构造的对象开辟存储空间,这个存储空间在 JVM 的 heap 中。...但是这个值在最近的一些 Java 版本更新中有了改变,从 7u40 到 Java 11 String Pool 的大小为 60013 buckets,在 Java 11 的后续版本中,这个值增加到了 65536

    8910

    java中scanner意思_java中Scanner s = new Scanner(System.in);分别是什么意思?「建议收藏」

    键盘作为输入,然后用new在内存中实例化一个Scanner出来,使得其它变量能调用这块内存区。...Scanner类简介: Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。...由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。...这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。...Java通过系统类System实现标准输入/输出的功能,定义了3个流变量:in,out,和err.这3个流在Java中都定义为静态变量,可以直接通过System类进行调用。

    67120

    Java中的String、StringBuffer和StringBuilder

    作为作为一个已经入了门的java程序猿,肯定对Java中的String、StringBuffer和StringBuilder都略有耳闻了,尤其是String 肯定是经常用的。...Java作为一个非纯面向对象的语言,除了提供分装对象外,也提供了一些原始类型(比如:int long double char),String的使用居然可以像用原始类型一样不需要new,直接String...我们日常使用String的过程中,肯定经常会用到字符串追加的情况,按String的实现,没次追加即便只是一个字符,都是生成一个完全不同的对象,如果这次操作很频繁很多的话会大幅提高内存的消耗,并且增加gc...这种一次性扩容一倍的方式,在我们之前HashMap源码浅析中已经看到过了。一次性多申请内存,虽然看起来会有大段的内存空闲,但其实可以减少String append时频繁创建新字符串的问题。   ...所以记住,如果你代码中对String频繁操作,千万不用用String而是选择用StringBuffer或者我们下面要讲的StringBuilder。

    48510

    深入理解Java中的String

    在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。...由于String字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串(这点对理解上面至关重要)。 Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。...所以上面应该产生了两个对象:保存在栈中的c和保存堆中chenssy。但是在Java中根本就不存在两个完全一模一样的字符串对象。故堆中的chenssy应该是引用字符串常量池中chenssy。...首先必须弄清楚创建对象的含义,创建是什么时候创建的?这段代码在运行期间会创建2个对象么?毫无疑问不可能,用javap -c反编译即可得到JVM执行的字节码内容: ?...编译器对string + 基本类型/常量 是当成常量表达式直接求值来优化的。

    63130

    Java中String、StringBuffer、StringBuilder 的区别

    String、StringBuffer、StringBuilder 的区别 前言 作者:神的孩子都在歌唱 一....String:不可变字符串 String 是一个不可变类,这意味着一旦创建,字符串的值就不能修改。如果你修改一个字符串,实际上是创建了一个新的 String 对象。...特点: • 可变 • 线程安全 • 在多线程环境中使用时,适合修改大量数据 StringBuffer sb = new StringBuffer("神的孩子"); sb.append(" 都在歌唱");...这使得它在单线程环境中具有更好的性能,因为它避免了 StringBuffer 在处理同步时的开销。...特点: • 可变 • 非线程安全 • 在单线程环境下性能更高,适用于大量字符串修改的场景 StringBuilder sb = new StrBuilder("Hello"); sb.append("

    3000

    Java中String、StringBuffer、StringBuilder的区别

    Java中String、StringBuffer、StringBuilder的区别 1.从是否可变的角度   String类中使用字符数组保存字符串,因为有“final”修饰符,所以String对象是不可变的...private final char value[];   StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串.../** * The value is used for character storage. */ char[] value; 2.是否多线程安全   String中的对象是不可变的...如下源码: 1 public StringBuilder append(String str) { 2 super.append(str); 3 return this...StringBuffer、StringBuilder的方法都会调用AbstractStringBuilder中的公共方法,如上面的两段源码中都调用了super.append(str);  只是StringBuffer

    59550
    领券