d*******n 发帖数: 524 | 1 就像c++的template那样的。
感觉上好像不太可能,因为c++ 里面当你用一个class instance的名字的时候是pass
by value, 跟built-in type(比如int)是一样的,无非对一个变量读的memory block的
size不一样。
而java里面 int i的这个i是pass by value,但是 Apple apple的这个apple是
reference。
不过还是想问问我说的这事儿是不是就是mission impossible 了? |
b******y 发帖数: 9224 | 2 应该是。我想,java语言的design, 目前来说,还好是比较简单的。不像c++那样,太
过复杂。
有些东西,是不能够太自动化的。比如说,int[]的用法和Integer[]的用法。如果统一
了,语言本省就太复杂了。随之而来的就是virtual machine就不会那样efficient了(
猜测而已)
总之,虽然java是比较好用的,但,有些东西还是assume你知道的前提下。我觉得这应
该也没有啥不好的。作为程序员,应该知道啥时候用啥数据结构。如果都被java掩饰了
,那不就成了typeless language了,比如说,perl, php等。
你往里存个东西,它动态的给分配type(内部的机制来讲), 占的内存就大。不
efficient.
总之,现在懒了,其实,我始终觉得,最好的就是C语言。自由度大。又比较高级语言
。而且,感觉巨强大。程序员可以做很多的事情。java限制的有点死板。 |
F****n 发帖数: 3271 | 3 Java的类相当于Smalltalk加primitive types
这个primitive type可以说是反OO的,所以很多人认为Java没有Smalltalk elegant
好处是增加了一定灵活性,计算复杂的程序可以通过使用primitive type来提高性能
比如你看那些image processing的实现基本上都是数组。
【在 d*******n 的大作中提到】 : 就像c++的template那样的。 : 感觉上好像不太可能,因为c++ 里面当你用一个class instance的名字的时候是pass : by value, 跟built-in type(比如int)是一样的,无非对一个变量读的memory block的 : size不一样。 : 而java里面 int i的这个i是pass by value,但是 Apple apple的这个apple是 : reference。 : 不过还是想问问我说的这事儿是不是就是mission impossible 了?
|
F****n 发帖数: 3271 | 4 BTW, 如果实在需要(比如统一接口),可以直接用Object,
int[] 不是 Object[]但是是Object
【在 F****n 的大作中提到】 : Java的类相当于Smalltalk加primitive types : 这个primitive type可以说是反OO的,所以很多人认为Java没有Smalltalk elegant : 好处是增加了一定灵活性,计算复杂的程序可以通过使用primitive type来提高性能 : 比如你看那些image processing的实现基本上都是数组。
|