开发者社区> 问答> 正文

java代码:为什么输出结果是false?

控制台输入:asdf,为什么结果是false?求Scanner的具体解释

 public class StringTest {

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String s1="asdf";
        String s2=scan.next();
        System.out.println(s1==s2);
    }
}

展开
收起
蛮大人123 2016-06-12 18:37:29 2374 0
3 条回答
写回答
取消 提交回答
  • 这是两个不一样的对象,判断是不是相等应该使用equals方法,不是==

    2019-07-17 19:34:55
    赞同 展开评论 打赏
  • 可是试着先搞清楚String类型比较时,isEqual()和==的不同。

    2019-07-17 19:34:55
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    因为System.in是标准控制台输入字符流,这样输入的东西都是以流式传输,当控制台读到控制台输入的流后,
    会用当前系统默认编码对流进行字符编码获取字符串,形式如String s = new String(byte[], Charset.defaultCharset());
    这时候生成的是一个new出来的字符串对象,引用地址就发生了改变,且其值不会出现在字符串常量池中,如果想要值new出来的
    string对象的值也进行常量池,可以调用方法intern进行刷入。

    2019-07-17 19:34:55
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载