配。对于栈内存,百度百科的解释如下:
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。栈有一个很重要的特殊性,就是存在栈中的数据可以共享
值类型与Null的关系
首先值类型永远不能赋值为null,因为值类型的值就是它本身。而对于引用变量来说,它的值则是对一个对象的引用,故可以用null(空引用)对其赋值。
大佬这个讲的很好 https://www.cnblogs.com/murongxiaopifu/p/4842375.html 。。。本菜鸡实在不知道如何归纳总结了~
概括一下就是,在实际编程中,可能需要让值类型的变量的值既不是负数也不是0,而是真正不存在。在这种情况下,可以使用可空类型来对值类型的空值进行表示。
何时使用值类型何时使用引用类型
值类型有时可以提供更好的性能,而引用类型则是我们习惯用的。那么如何权衡一个类应该为哪个类型呢?
根据参考资料[1][3]两位大佬的说法,只有当一个类型满足以下所有条件,我们才考虑是否将该类型声明为值类型。
- 类型不需要从其他类型继承,也不派生出其他任何类型
- 该类型的主要职责在于数据存储吗?
- 该类型的公有接口都是由访问其数据成员的属性定义的吗?
在满足上述条件的情况下,还必须满足以下任意条件:
- 类型的实例较小
- 类型的实例较大且不作为方法参数传递
这是因为值类型在方法中充当方法参数传递时,是将值类型中所有字段进行复制的,这会对性能造成影响。