强圆nice 2016-04-19 07:17 采纳率: 55.2%
浏览 1959
已采纳

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);
    }
}

  • 写回答

6条回答 默认 最新

  • little_how 2016-04-19 22:27
    关注

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

    希望可以帮到你。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部