A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-29 17:43  /  1659 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用=赋值也new赋值有什么区别?

评分

参与人数 1黑马币 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
没有区别
回复 使用道具 举报
  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,所以没有区别的,希望对你有帮助!
回复 使用道具 举报
//字符串本身就是一个不可修改的对象。
   
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”

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
如果我们记错的话 区别还是有的
补充下楼上的 别介意哈
String str1 = new String("abc");
String str2 = "abc";
new String每写一遍就会创建一个新的对象
以上代码当你第一次new String("abc");这时除了new出来的对象时,abc也被创建出来放在字符常量缓冲区中
你在执行String str2 = "abc";这句代码实际在这里并没有创建出对象,是直接从字符常量缓冲区中拿来用的
回复 使用道具 举报
有区别,你可以用“==”比较看看,你就知道区别在哪里
回复 使用道具 举报
=赋值的变量其实是引向该变量地址,new是新建一个变量地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马