为了账号安全,请及时绑定邮箱和手机立即绑定

IO流的问题

IO流的问题

qiqiqiqi010629 2015-12-14 23:54:59
用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

查看完整回答
反对 回复 2015-12-15
  • 1 回答
  • 1 关注
  • 1158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信