首页
学习
活动
专区
工具
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(...)

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

相关·内容

javastringbuffer是什么_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

40010

Javanew 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)更节省空间,提高性能。

10310

javanew BufferedReader(new InputStreamReader(System.in))「建议收藏」

JAVA /IO 基本小结 通过一行常见代码讨论:new BufferedReader(new InputStreamReader(System.in)) javaIO是基于流(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。

57720

Javanew与null不同

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

74020

Java 8 拉姆达表达是什么

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

2.8K40

JavaString不再纠结

先分享一下javastring一些小专题吧,这部分比比较基础,但是也非常有用。我发现很多面试官像中了邪一样就爱问这个。。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(

34520

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

34920

深入理解JavaString

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

61230

JavaString、StringBuffer和StringBuilder

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

44810

JavaString、StringBuffer、StringBuilder区别

JavaString、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

56950

javascanner意思_javaScanner 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类进行调用。

59420

javaString相等比较

3.原理 要理解 javaString运作方式,必须明确一点:String是一个非可变类(immutable)。什么是非可变类呢?...简单说来,非可变类实例是不能被修改,每个实例包含信息都必须在该实例创建时候就提供出来,并且在对象整个生存周期内固定不变。java为什么要把String设计为非可变类呢?...看下面的例子: 1 java 代码 2 String str1 = new String("abc"); //jvm 在堆上创建一个String对象 3 4 //jvm 在strings...(2)String str3 = new String("hello quanjizhu"); 每次初始化都会重新在内存堆开辟空间给新对象,而不会到String pool查找,更不会添加到String...(4) String var = “quanjizhu“; String str4 = “hello “+var;   System.out.println(str1= =str4)结果是什么呢?

1.4K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券