在java中是不可以不实例化对象去调用非静态方法的。
静态方法跟非静态方法主要的区别在于生命周期。
静态方法的生命周期从进程被创建就开始了,直到进程结束,所以说静态方法是全局的,贯穿整个进程。
非静态方法的生命周期,从类实例化对象开始,直到实例对象被注销回收之后结束。
所以可知,非静态方法的生命周期要短于静态方法,这也是非静态方法中不能调用静态方法的原因。
你给的例子中的语句:new Person().eat(new Apple());已经实例化对象了,new Person()就是在实例化对象,否则不能调用非静态的eat()方法。
当然也可以这么写,你就会非常熟悉。
Person person = new Person();
person.eat(new Apple());
不会,一次加载,持续使用