黑马程序员技术交流社区

标题: 输入abc的时候还带输入了什么东西吗? [打印本页]

作者: 黑马-张洋    时间: 2013-2-26 13:39
标题: 输入abc的时候还带输入了什么东西吗?
package com.exam;

import java.util.Scanner;
  1. public class test {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                
  7.                 String s1="abc";
  8.                 String s2="abc";
  9.                 if(s1==s2)
  10.                  System.out.println("s1等于s2");
  11.                 else
  12.                  System.out.println("s1不等于s2");
  13.                 Scanner input=new Scanner(System.in);
  14.                 System.out.println("请输入abc:");
  15.                 String s3=input.next();
  16.                 if(s3==s2)
  17.                 System.out.println("s3等于s2");
  18.                 else
  19.                 System.out.println("s3不等于s2");

  20.         }
  21. }
复制代码
打印:
s1等于s2
请输入abc:
abc
s3不等于s2
为什么s3不等于s2?
作者: 陈圳    时间: 2013-2-26 13:58
因为从键盘录入的字符被new了一下....
作者: 黑马-张洋    时间: 2013-2-26 14:15
陈圳 发表于 2013-2-26 13:58
因为从键盘录入的字符被new了一下....

不懂你在说什么。。。。。new了一下又怎么了?

作者: 何伟    时间: 2013-2-26 14:36
如果使用String s ="abc"这种方法直接创建字符串,它不会在堆内存中创建实例对象,
而是在字符串常量池中创建一个字符串常量
创建的过程:
1.查看常量池中是否存在"abc"这个常量;
2.如果存在,那么返回这个常量的引用
3.不存在就创建一个
作者: 贾文泽    时间: 2013-2-26 14:46
           
                String s1="abc";
                String s2="abc";                                     // s1 和 s2 都指向字符串常量池中的 abc“”
                if(s1==s2)
                 System.out.println("s1等于s2");
                else
                 System.out.println("s1不等于s2");
                Scanner input=new Scanner(System.in);
                System.out.println("请输入abc:");
                String s3=input.next();                           //这个方法是scanner通过正则匹配把扫描到的字节toString()后返回一个字符串对象,这个对象在堆内存中,而s2是指向常量池中的
                if(s3==s2)
                System.out.println("s3等于s2");
                else
                System.out.println("s3不等于s2");

        }
}


作者: 黑马-张洋    时间: 2013-2-26 15:51
贾文泽 发表于 2013-2-26 14:46
String s1="abc";
                String s2="abc";                        ...

这位大哥的解释非常清晰。我懂了




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