用File f=new File("D:\\text");直接打印f和直接打印f.getPath()结果一样。他们有什么本质的区别吗?
1 回答
已采纳
是王小二呀
TA贡献88条经验 获得超19个赞
package testProgramming; import java.io.File; public class TestMethod { public static void main(String[] args){ String f1=new String("F:\\javaTest\\Paint.txt"); String f2="F:\\javaTest\\Paint.txt"; File file1=new File(f1); File file2=new File(f2); System.out.println("F:\\javaTest\\Paint.txt"==file1.getPath());//false System.out.println("F:\\javaTest\\Paint.txt".hashCode()==file1.getPath().hashCode());//true System.out.println(f1.toString()==file1.getPath());//true System.out.println(f1.toString().hashCode()==file1.getPath().hashCode());//true System.out.println("F:\\javaTest\\Paint.txt"==file2.getPath());//true System.out.println("F:\\javaTest\\Paint.txt".hashCode()==file2.getPath().hashCode());//true System.out.println(f2.toString()==file2.getPath());//true System.out.println(f2.toString().hashCode()==file2.getPath().hashCode());//true System.out.println(file2.equals(file1));//true System.out.println(file2.hashCode()==file1.hashCode());//true } }
第一:存变量是按照其hashcode值存的,f.getPath本质是一个字符串,打印出来的也是一个字符串;因此相等
第二:file1.equals(file2)为true的原因是其路径f1和f2表示的是同一个字符串,因此hashcode值相等,
第三:第一行打印为false的原因:file1.getPath()表示的是一个String类对象f1;因此调用==比较的时候其代表自己的地址而不是值,因此为false
添加回答
举报
0/150
提交
取消