Java中两种String对象创建和初始化方式比较

原创 2007年09月30日 20:10:00
字符串可能是任何程序语言中都会出现的对象,java中创建并初始化一个String对象,最常见的方式有两种:
  • String str=new String("XXX");
  • String str="XXX";
      二者看似相同,其实有很大的差别。

      前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后查看栈中是否存在“XXX”,如果没有,则将“XXX”存放进栈,并令引用变量str指向它;如果已经有“XXX”,则直接令str指向它。这样充分利用了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对象。
      下述代码展示了二者的不同:
/**
 *
 * 
@author Jeffery
 
*/

public class Main {

    
/**
     * 
@param args the command line arguments
     
*/

    
public static void main(String[] args) {
        String strA 
= "abc";
        String strB 
= "abc";
        String strAA 
= new String("abc");
        String strBB 
= new String("abc");
        System.out.println(strA 
== strB);
        System.out.println(strAA 
== strBB);
    }

}
输出结果:
true
false

Java中String类两种实例化的区别

一、String类的第一种方式 1、直接赋值 例:String str = "hello"; 直接赋值实际上就是相当于一个匿名对象(“hello”)设置了一个名字(str),String类的匿名...
  • wangdajiao
  • wangdajiao
  • 2016年08月01日 17:06
  • 1577

Java 对象初始化顺序 执行顺序

先看一道Java面试题: 求这段程序的输出。   解答此题关键在于理解和掌握类的加载过程以及子类继承父类后,重写方法的调用问题:   从程序的执行顺序去解答: 1.编译;当这个类被编译...
  • Zhangxichao100
  • Zhangxichao100
  • 2015年10月14日 22:59
  • 1577

Java中string 创建对象时 “”和null的区别

string “” 和 null 区别
  • yali1990515
  • yali1990515
  • 2015年08月12日 16:52
  • 3876

java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别

string 对象创建的两种方式 String aString="a"; String bString = new String("a"); 其中aString是通过直接赋值的方式创建,bStr...
  • qq_15585907
  • qq_15585907
  • 2017年07月11日 14:53
  • 315

java_String类的对象的两种赋值方式

a) String类的对象的两种赋值方式  b) 为什么String类的对象可以直接赋值 a) 1 类似普通对象,通过new创建字符串对象。String str = new String("Hel...
  • feicongcong
  • feicongcong
  • 2017年01月08日 18:19
  • 1323

String类的两种创建方式的比较

  • yanlove_jing
  • yanlove_jing
  • 2016年06月11日 19:05
  • 201

Java中String类的两种创建方式

Java中String类的一些发现和思考遇到的问题之前在网上浏览别人家的博客时,看到这样的小程序: public static void main(String[] args){ ...
  • chenjiatao0909
  • chenjiatao0909
  • 2016年08月09日 12:50
  • 385

java中通过放射机制创建对象的两种方式

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Metho...
  • github_34595514
  • github_34595514
  • 2016年08月18日 23:33
  • 164

对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?

本文转自http://www.cnblogs.com/hongten/p/hongten_string_qubie.html 当你看见这个标题的时候,你可能会下意识的去想一下,这两种方式到底有什...
  • Fungyow
  • Fungyow
  • 2016年04月02日 23:44
  • 272

Java线程的两种创建方式及优劣比较

1、通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法。在run()方法中加入具体的任务代码或处理逻辑。 (2).创建实现Runnable...
  • YJian2008
  • YJian2008
  • 2013年11月26日 21:58
  • 735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中两种String对象创建和初始化方式比较
举报原因:
原因补充:

(最多只允许输入30个字)