问答详情
源自:2-3 Java 中 String 类的常用方法 Ⅰ

题目的答案错的吧,文件名明明有效

如果判定时使用 

if ( index!=-1 && index!=0 && prefix==".java" ) {

System.out.println("Java文件名正确");

} else {

System.out.println("Java文件名无效");

}

这样就不对,因为前面说过两个".java"在内存中是两个不同的单元只是内容相同,所以会跳到else上,文件名无效


但真正正确的应该用

if ( index!=-1 && index!=0 && prefix.equals(".java") ) {

System.out.println("Java文件名正确");

} else {

System.out.println("Java文件名无效");

}

这样跑出来应该文件名是对的,有效的


提问者:慕沐1990658 2018-08-19 15:17

个回答

  • 数码世界
    2019-03-07 17:50:42

    https://img3.mukewang.com/5c80e93a0001b19803860486.jpg

    https://img1.mukewang.com/5c80e93b0001d67807330496.jpg

    题目给多了个“a”,所以跟答案相反。

  • qq_泡沫_37
    2018-09-01 11:05:03

    题目是故意的,就是为了让我们分清楚比较栈内存和堆内存的区别


  • hevrcccj65gegg
    2018-08-19 16:03:53

    1:==是比较栈内存里面的值,对于基本数据类型,栈区的值就是数据的值

    2:equals()是进行堆区里面内容的比较,对于引用数据类型,栈区的值是对象的地址

    3:基本数据类型比较用==,引用数据类型比较用equals()方法

    4:".java"是字符串String引用数据类型