黑马程序员技术交流社区
标题:
关于String中的一个小问题
[打印本页]
作者:
纪艺松
时间:
2012-12-27 19:44
标题:
关于String中的一个小问题
public class test{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
System.out.println(str);
System.out.println(str.equals("abc"));........................true;
System.out.println(str=="abc"));........................false;
/*String str1[] = str.split(",");
System.out.println(str1[0]);*/
System.out.println("abc"=="abc");
}
}
求解答
作者:
郭俊
时间:
2012-12-27 22:11
同学你的疑惑是什么? 是哪不懂啊?
作者:
冯伟超
时间:
2012-12-27 22:43
你通过Scanner来在键盘上获取子字符串,然后赋给str,这时str就是相当于new了一个实例。
还有equals在String中它覆写了Object中的equals,覆写后实现的功能是值的比较。
所以第一个是true。第二个str==“abc”中前面是一个对象,在内存中对应的地址值和abc对应的地址值
值不相同!
作者:
梁俊
时间:
2012-12-29 15:35
本帖最后由 梁俊 于 2013-1-2 21:09 编辑
equals是值的比较,==是对象的比较,或者说是地址的比较,str和"abc"在内存中地址不一样,不是一个对象
System.out.println("abc"=="abc");//结果为true
abc都在常量池里面,当又创建一个字符串常量"abc"时,先在常量池里面找有没有这个常量,没有会重新创建一个字符串对象,有的话就不创建了,进行引用这个地址,所有结果为ture
作者:
勾尧
时间:
2012-12-31 20:31
==比较引用对象的地址值, equals比较字符串的值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2