Ritesh please ask questions properly, do that others can understand this.
new Horse(); and Horse horse=new Horse(); are same but new Horse(); here you have created object but you have no reference to it.
You cant use it. instead new Horse().method(); makes sense. But this object becomes eligible for garbage collection as it has no reference from a live thread. Hope this makes sense.
It does make sense, but may be difficult to understand for people not fluent in English.
new Horse() means create a Horse object. You haven’t done anything with it, but you can use it as foo(new Horse); or new Horse().foo()
You can only use that object once, unless you can retrieve it from another object using it.
Horse h = new Horse() means create a Horse object and apply the name h to it. You can now use it as often as you like, as long as h is in scope and hasn’t been reassigned.