String str 与 String str=new String("") 区别

1.当使用String str="abc",这种方式时,先去内存的Heap中找是否存在"abc"这个字符串,若存在,则将地址引用。若不存在则创建。

2.当使用String str=new String("abc");时,不管事先是否存在"abc",每次都会创建其新的对象。

测试一下:

String s1="abc";  
        String s2="abc"; 
        String s3=new String("abc");

String s4=new String("abc");

System.out.println(s1 == s2);  
        System.out.println(s2 == s3);

System.out.println(s1 == s3);

System.out.println(s4 == s3);

打印的结果为:

true
        false
        false

false

为什么呢?

参看以上两点可知,s1,s2引用的是相同的地址,故为true

s3又创建了一个新的"abc"对象,故为false

时间: 2024-11-05 03:41:43

String str 与 String str=new String("") 区别的相关文章

Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?

百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放,能放下吗? 答:A==B 不等,但是A.equals(B)相等:因为相等,所以都往HashSet里面放不下,只能放一个 这个问题涉及到常量池的概念, 问:String str=new String("a")和String str = "a"有什么区别? 答: ==与e

Java中String直接赋字符串和new String的区别

解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”kvill”:   String str=new String (“kvill”);的区别:  在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念.  常

JAVA的String、StringBuilder和StringBuffer类的区别

StringBuffer类(或者StringBuilder)和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样

String,StringBuilder,StringBuffer三者的区别

参考   String,StringBuilder,StringBuffer三者的区别 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1.运行速度 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,

String,StringBuilder,StringBuffer三者的区别(Java)

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的.以下面一段代码为例: String str="abc"; Sys

String的几种初始化方法的区别

参考了: java中String的两种初始化方法 ? String a; String aa = ""; String aaa = "123"; String b = new String(); String bb = new String(""); String bbb = new String("123"); String c = null; ? System.out.println(aa == bb);????????/

String、StringBuffer、StringBuilder三者的区别

String.StringBuffer.StringBuilder这三个都可以用在字符串处理上面,但它们三究竟有什么区别呢? 先来看看String,String是final类,是不可变的对象,在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,如果对String赋值N次,就会在内存中为新的对象分配N个新的空间,在内存中保存N个这个对象的副本,浪费系统资源. 比如:String s1 = new String("行者");s1 = s1 + "摩罗";实际上

java中String、StringBuilder、StringBuffer三者的区别

在Java项目开发中,字符串是最长使用的数据类型,而有关字符串的String.StringBuilder.StringBuffer三者又常常让人分不清楚什么时候该使用哪个. 特此整理一下. String字符串常量 大家都知道String是一个不可变的类,任何对String的改变都会引发新的String对象的生成:因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,

String Boot中@Controller和@RestController的区别?

一.@Controller 1.返回JSP.Thymeleaf等templates指定页面,配合视图解析器InternalResourceViewResolver一起使用2.方法之前添加@ResponseBody 注释,返回JSON,XML或自定义mediaType内容到页面请添加链接描述](http://www.askwinds.com) 二.@RestController 无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返

String,StringBuffer,StringBuilder三者的区别

相同点: String,StringBuffer,StringBuilder,都是final类,不允许被继承,在本质上都是字符数组, 不同点: 1.String的长度是不可变的而后两者长度可变,在进行连接操作时,String每次返回一个新的String实例,而StringBuffer和StringBuilder的append方法直接返回this,所以当进行大量的字符串连接操作时,不推荐使用String,因为它会产生大量的中间String对象. 2.StringBuffer和StringBuild