作者回复: 一个对象通过new创建的过程为:
1、在内存中开辟一块空间;
2、在开辟的内存空间中创建对象;
3、调用对象的构造函数进行初始化对象。
而一个对象通过clone创建的过程为:
1、根据原对象内存大小开辟一块内存空间;
2、复制已有对象,克隆对象中所有属性值。
相对new来说,clone少了调用构造函数。如果构造函数中存在大量属性初始化或大对象,则使用clone的复制对象的方式性能会好一些。
作者回复: 言简意赅!
作者回复: 理解很透彻,点赞
作者回复: 这里纠正下,不是每次请求,而是每次bean注入或通过上下文获取bean时。
如果我们使用的是单例,假设有一个全局变量private int a=1,我们通过上下文获取到实例,调用A方法修改了变量a=2,此时下一个通过上下文获取到实例调用B方法获取变量,则a=2。
如果我们使用的是原型模式,假设有一个全局变量private int a=1,我们通过上下文获取到实例,调用A方法修改了变量a=2,此时下一个通过上下文获取到实例调用B方法获取变量,则还是a=1。
作者回复: 需要的。共享数据尽量不要涉及到线程安全问题,否则就没有什么优势了。例如字符串则利用了不可变性来避免线程安全问题。
作者回复: 是的,通过反射创建对象的
作者回复: 对的
作者回复: 建议加一个图片验证码
作者回复: 需要占用大量连续内存空间的java对象一般称为大对象,比如很长的字符串、数组以及类对象。
作者回复: 用==就好了,Java中判断两个对象是否相等是==。
作者回复: 是的
作者回复: 可以的
作者回复: 是的
作者回复: 是的,感谢提醒