黑马程序员技术交流社区

标题: 键盘录入字符串与自定义字符串地址值问题?求解 [打印本页]

作者: 卟離不棄    时间: 2015-3-23 22:58
标题: 键盘录入字符串与自定义字符串地址值问题?求解
本帖最后由 卟離不棄 于 2015-3-23 23:00 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>import java.util.Scanner;

  2. public class StringDemo {
  3.         public static void main(String[] args) {
  4.                 //创建字符串对象
  5.                 String s1 = "hello";
  6.                
  7.                 Scanner sc = new Scanner(System.in);
  8.                
  9.                 System.out.println("请输入字符串: ");
  10.                 String s2 = sc.nextLine();
  11.                
  12.                 System.out.println(s1==s2);
  13.                
  14.                
  15.         }
  16. }
复制代码

为什么相同的字符串键盘录入与自定义地址值会不同呢?他内存里面是怎么创建的啊?

BaiduShurufa_2015-3-23_22-57-17.png (123.75 KB, 下载次数: 18)

BaiduShurufa_2015-3-23_22-57-17.png

作者: dillinger    时间: 2015-3-23 23:33
s1和s2本来就是两个不同的对象,==比较的是两个对象的地址
s1.equals(s2)比较的是对象的值,就true了
作者: 卟離不棄    时间: 2015-3-23 23:40
dillinger 发表于 2015-3-23 23:33
s1和s2本来就是两个不同的对象,==比较的是两个对象的地址
s1.equals(s2)比较的是对象的值,就true了 ...

==比较的是地址值,但是字符串存储在方法区的常量池中,内存不是会把s1的地址值直接赋给s2吗?
作者: dillinger    时间: 2015-3-23 23:45
String和Scanner本来就是两个不同的类,怎么能指向同一个变量呢?




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