Java文件构造函数-将文件对象与字符串组合

Java文件构造函数-将文件对象与字符串组合,java,Java,通过随机测试,我发现以下代码在Java中是有效的。Eclipse在使用程序时不会显示错误,也不会出现运行时异常: File f1 = new File(""); File f2 = new File(f1 + ""); 为什么会这样f1绝对不是字符串,那么为什么我们可以用+操作符组合两个不同的对象呢?File是Object的直接子类,我们不能将字符串与文件对象合并,因为它们主要是不同的对象File还有一个uri构造函数,但为什么这应该是一个uri呢文件和uri在java的技术视图中是绝对不同的

通过随机测试,我发现以下代码在Java中是有效的。Eclipse在使用程序时不会显示错误,也不会出现
运行时异常

File f1 = new File("");
File f2 = new File(f1 + "");

为什么会这样
f1
绝对不是字符串,那么为什么我们可以用
+
操作符组合两个不同的对象呢?File是Object的直接子类,我们不能将
字符串
文件
对象合并,因为它们主要是不同的对象
File
还有一个
uri
构造函数,但为什么这应该是一个uri呢<代码>文件和
uri
在java的技术视图中是绝对不同的对象(同样,它们都是对象的直接子类,彼此之间没有上下文),那么为什么这样做呢?

这是可能的,因为
字符串
转换。如果运算符是
+
,其中一个操作数是
字符串
,另一个不是,则
字符串
转换在非
字符串
的操作数上进行。通过调用
toString()
将其转换为
字符串

报告包括:

任何类型都可以通过字符串转换转换为字符串类型

现在只需考虑参考值:

  • 如果引用为null,则将其转换为字符串“null”(四个ASCII字符n、u、l、l)

  • 否则,转换就好像是通过调用引用对象的toString方法(不带参数)来执行的;但是如果调用toString方法的结果为null,则使用字符串“null”


确切地说,效果最好描述为调用
String.valueOf(…)
,将对象引用作为参数传递:它也适用于
null
引用。