Q7:Java中的对象创建有多少种方式?Java中共有5种方式可以创建一个对象。最简单的方式就是使用new关键字。User user = newUser;除此以外,还可以使用反射机制创建对象:User user = User.class.newInstance;或者使用Constructor类的newInstance:Constructor<User> constructor= User.class.getConstructor( );User user = constructor.newInstance( );除此之外还可以使用clone方法和反序列化的方式,这两种方式不常用并且代码比较复杂,就不在这里展示了,感兴趣的可以自行了解下。Q8:Java中对象创建的过程是怎么样的?对于一个普通的Java对象的创建,大致过程如下:1、虚拟机遇到new指令,到常量池定位到这个类的符号引用。2、检查符号引用代表的类是否被加载、解析、初始化过。3、虚拟机为对象分配内存。4、虚拟机将分配到的内存空间都初始化为零值。5、虚拟机对对象进行必要的设置。6、执行方法,成员变量进行初始化。Q9:Java中的对象一定在堆上分配内存吗?前面我们说过,Java堆中主要保存了对象实例,但是,随着JIT编译期的发展与技术逐渐成熟,、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。其实,在编译期间,JIT会对代码做很多优化。其中有一部分优化的目的就是减少内存堆分配压力,其中一种重要的技术叫做逃逸分析。如果JIT经过逃逸分析,发现有些对象没有逃逸出方法,那么有可能堆内存分配会被优化成栈内存分配。(关于逃逸分析和栈上分配可以参考:深入理解Java中的逃逸分析、对象并不一定都是在堆上分配内存的)