强圆nice 2016-04-19 15: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-20 06:27
    关注

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

    希望可以帮到你。

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

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格