String实例化的区别

面试题:请解释String类中两种对象实例化的区别

  1. String str = “hello”(常量池对象)
    只会开辟一块堆内存空间,保存在字符串常量池中,然后str共享常量池中的String对象
  2. String str = new String(“hello”)(常量池对象+String对象本身)
    会开辟两块堆内存空间,字符串"hello"保存在字符串常量池中,然后用常量池中的String对象给新开辟的String对象赋值。
  3. String str = new String(new char[]{‘h’, ‘e’, ‘l’, ‘l’, ‘o’})(String对象+字符串数组+拷贝的数组)
    现在堆上创建一个String对象,然后利用copyof将重新开辟数组空间,将参数字符串数组中内容拷贝到String对象中

你可能感兴趣的:(面试题,java,前端,服务器)