强圆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条)

报告相同问题?

悬赏问题

  • ¥50 swiftui @query 报错
  • ¥50 怎么解决刷卡或扫码后,点击软件输入框,win10屏幕键盘不会自动弹出的问题
  • ¥15 如何使用arcgispro的训练深度模型,发现water和nowater精度为0?(相关搜索:深度学习)
  • ¥20 matlab作业不太懂呀有问题能给个代码吗
  • ¥15 自制电路图为何无法驱动ESP01S?
  • ¥15 前端加access数据库
  • ¥15 ARCGIS 多值提取到点 ERROR 999999
  • ¥15 mysql异常断电, [MY-011971] [InnoDB]
  • ¥15 uni.onBluetoothDeviceFound熄屏不运行
  • ¥15 求PHDA糖尿病并发症数据集,有偿