黑马程序员技术交流社区

标题: string类对象那个赋值 [打印本页]

作者: 一诺千金    时间: 2014-3-29 17:43
标题: string类对象那个赋值
用=赋值也new赋值有什么区别?

作者: 苏伯亚    时间: 2014-3-29 18:13
没有区别
作者: xuehuayous    时间: 2014-3-29 18:19
  1. package com.itheima;

  2. public class Test{
  3.         public static void main(String args[]) {

  4.                 String str1 = new String("abc");
  5.                 String str2 = "abc";
  6.                 System.out.println(str1.equals(str2));//true
  7.         }
  8. }
复制代码

结果为true,所以没有区别的,希望对你有帮助!
作者: 清风木扬    时间: 2014-3-29 19:04
//字符串本身就是一个不可修改的对象。
   
String str1 = new String("abc");//将生成两个对象"abc"   new String再产一个
String str2 = "abc";//"abc“就产一个对象

System.out.println(str1.equals(str2));//true  
System.out.println(str1==str2);//false  ==比较变量是指向同一对象    equals比较内容 “String的equals是重构过的,Object的equals比较的hasecode”
作者: 13556793092    时间: 2014-5-17 13:48
如果我们记错的话 区别还是有的
补充下楼上的 别介意哈
String str1 = new String("abc");
String str2 = "abc";
new String每写一遍就会创建一个新的对象
以上代码当你第一次new String("abc");这时除了new出来的对象时,abc也被创建出来放在字符常量缓冲区中
你在执行String str2 = "abc";这句代码实际在这里并没有创建出对象,是直接从字符常量缓冲区中拿来用的
作者: 247033993@qq.co    时间: 2014-5-17 17:11
有区别,你可以用“==”比较看看,你就知道区别在哪里
作者: 杨韬略    时间: 2014-5-18 16:22
=赋值的变量其实是引向该变量地址,new是新建一个变量地址




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2