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

来源:2-3 Java 中 String 类的常用方法 Ⅰ

慕沐1990658

2018-08-19 15:17

如果判定时使用 

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文件名无效");

}

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


写回答 关注

3回答

  • 数码世界
    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引用数据类型


    暖_28 回复慕沐1990...

    你说得对,但是楼上说的也不错,它是区分了一下基本类型和引用类型.如果不是new 的话指定一个属性值得话,会现在内存中查找有没有这个值。比如说int a=1;int b=1;这样用==他们也是true.如果没有才会创建一个新的地址.如果new 了的话,就是无论有没有直接创建新的地址存值.

    2018-08-20 17:01:37

    共 2 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题