小白请教java IO流的构造器参数问题

如一个字节流的构造器
OutputStream out = null;
out = new FileOutputStream (new File ("a.txt"));
out实例化的构造方法中为什么可以直接new File("a.txt");为什么没有声明File类,就使用了他的对象
请大神讲详细一点

File a = new File("a.txt");

OutputStream out = null;
out = new FileOutputStream (a);

这样跟你给的是等效的。

File a=new File("a.txt"),这里重要的是new的部分,在堆内存创建了对象,并将对象赋给了引用a。你直接new File("a.txt")使用当然也是可以的呀,只不过没有定义下次使用这个对象不方便了,当然你这个对象只用一次也就没这些问题了

new File("a.txt") 相当于一个匿名对象
使用场景一般仅作为参数传递 或者是只使用一次对象时候的
File a = new File() 这其中a仅代表在栈内存中开辟一块空间 用来存a a中存的只是new File()的地址值
而new File() 真正存放的位置在堆内存中
File a = new File() 只是为了你可以多次使用这个对象 也可以称为 声明a这个变量为File类型的

这个就像是你百度到QQ的官网,但是你不用百度 直接在游览器地址栏输入www.qq.com 一样

new 一个对象,默认就是讲该对象的实例返回