创建对象的时候为什么可以直接new一个对象?

看到书上有两种,比如一个创建Demo对象,一种是Demo demo=new Demo();另一种是直接new Demo();请问这两者有什么区别和使用条件

Demo demo=new Demo();这样的写法代表有引用,用demo这个名字可以去操作这个对象,但是直接new的话就是匿名对象,没有引用指向它,只能在new的一瞬间做一些事情,后来就会被当成垃圾回收掉

Cat cat1 = new Cat();
cat1.cry();
cat1.play();
以上是同一只猫叫, 玩耍

new Cat().cry();
new Cat().play();
以上是两只猫, 第一个猫在叫, 第二只猫在玩耍

一个是使用匿名对象的方式 new xxx()

一个是创建一个对象 在下面还要继续用到 就好比如你定义一个变量一样
Xxx xxx=new Xxx()

使用时就要看你具体的需求了

Demo demo=new Demo(); 创建对象,并把对象赋值给demo
new Demo(); 只是创建了一个对象
一般如果你要对对象进行操作则选用第一种,否则第二种就足够了

Demo demo=new Demo(); 代表的是 新建一个对象并赋值给变量demo
new Demo(); 代表是 新建一个对象,无其他操作,无使用

假设你在别的类里写了个方法 叫做public vod play(){},这时候你想要在主函数中调用它,就可以用new方法,比如Play play=new Play(),
new关键字表示你新建了这个对象

匿名对象是一次性的,你这样记就行
另外我觉得这两种都算直接new啊,不直接的,应该是单例之类的吧?

Demo demo=new Demo() 和 new Demo() 唯一的区别是否要持有这个对象,

如果你后续还要操作这个对象,可以使用第一种,

如果只是临时变量而已,建议使用匿名类,典型的就是setOnxxxListener()这种情况。