值类型与不可变类型

看到一个叫王垠的人写了一篇文章,叫做《Java 有值类型吗?》。我发现他的思路和我之前的两个观点有点像。

C语言只有值类型

我以前经常说C语言参数只有一种传递方式,就是值传递。因为指针也是值呀,指针是一个字宽度的地址值,相当于一个整形long。指针传递其实就是把这个地址值拷贝一份而已。这个问题对Java也是一样的,因为Java的引用类型就相当于指针。

不可变类型与值类型

不可变类型与值类型,在逻辑上是一致的。因为之前发现不可变类型可以被编译器安全地优化为值类型。而值类型也完全可以看作是不可变类型,对值的修改其实是新建了一个不可变类型。

总结

其实这个问题是大家对“值”的概念定义的问题。嗯,殊途同归。

转载于:https://my.oschina.net/chunquedong/blog/735544

你可能感兴趣的:(值类型与不可变类型)