历史的潮流不断告诉我们,没有什么可以一步到位,如果是,那大概率是发生了极大的事件,比如小行星撞地球。
编程语言的面向对象级别
- C++比较折中,因为它需要尽可能兼容C语言。C++既允许值类型对象,也允许纯对象类型,放入堆栈还是堆,根据程序员的选择。这提供了极大的自由度,控制感非常舒服。
- Java不允许对象类型的对象放在栈中,即所有非基本类型的对象一般都分配在堆上。但如果一个对象不会被外部访问(即对象的作用域仅限于方法内部),并且可以被拆解为独立的标量,那么JVM可以将其替换为局部变量,从而避免在堆上分配对象。这叫做“标量替换”。