如果判定时使用
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文件名无效");
}
这样跑出来应该文件名是对的,有效的
题目给多了个“a”,所以跟答案相反。
题目是故意的,就是为了让我们分清楚比较栈内存和堆内存的区别
1:==是比较栈内存里面的值,对于基本数据类型,栈区的值就是数据的值
2:equals()是进行堆区里面内容的比较,对于引用数据类型,栈区的值是对象的地址
3:基本数据类型比较用==,引用数据类型比较用equals()方法
4:".java"是字符串String引用数据类型