Scala的String映射到Java的String。所以引用将在堆中。
Scala的int,float映射到Java的Integer或原始int。什么时候引用包装类和基元类型?
如果是包装类,那么ref会在堆吗?如果它是原始的,那么ref会在堆栈吗?
单个变量如何切换?我读到scala使用它们进行优化。
答案 0 :(得分:2)
什么时候引用包装类和基元类型?
原始类型不能使用包装:例如:它被用作类型参数(Array
除外)或传递给采用Any
/ AnyRef
的方法。
您可以通过查看字节码来了解特定情况下使用的内容,请参阅例如https://www.toptal.com/scala/scala-bytecode-and-the-jvm
如果是包装类,那么ref会在堆吗?如果它是原始的,那么ref会在堆栈吗?
如果它是原始的,那么就没有参考。堆栈仅用于局部变量。对于Int
或Float
类型的局部变量,是,使用基本类型。