作者TonyQ (^^)
看板java
标题Re: [问题] 对java的一些疑问...
时间Sun Feb 28 23:37:06 2010
※ 引述《WPC001 (突然觉得自己是孤独的...)》之铭言:
: 最近因为要接手弄一些java的东西, 所以开始看了java语言的前几章
: 1. Java所有内建的型别都是物件?
: (包含int / double / string / array 以及自订的class产生的物件)
: --> a. 如果不是, 那每个内建型别却可以用Object类别表示, 十分不合理
: 而且也都固定支援ToString或是一些"方法", 这是物件才有的行为
: 所以个人认为
: b. 如果是, 那继续看问题2
其实讲「内建型别」太笼统了,
基本资料型态只有包括 int/long/short/byte/double/float/boolean/char 等。
String/Array/自订类别已经不算是基本资料型态了。
除基本资料型态以外的资料都是以物件形式构成。
而每一个基本资料型态有一个对应的包装物件(Wrapper)。
但是基本资料型态并不是物件,他也不支援任何方法。(operator不算)
int k=10;
k是一个基本资料型态。
Integer k=Integer.valueOf(10);
k是一个代表10的Integer物件。
两个意思不太一样。
: 2. java是call by value, 但书上说, 针对类别产生的物件, 是call by address
: 这让我觉得这个语言缺乏一致性...
: 针对内建的型别(类别), 是call by value (copy), 而自订的类别是call by address
: 当然这可以是"特例", 但就觉得缺乏美感... XD
唔?我是觉得讲美感这回事是蛮奢侈的一件事。XD
至少我是不觉得在这点上有什麽特别的影响啦。
就是个 feature , 没有任何反应.
: 3. java不支援operator overloading, 但string的"+", 却又很特殊...
: (相比C++, 其实我觉得有些不自然... XD)
同上 XD
: 4. java是否支援implicit casting? 为何System.out.println(3.0 - str1 + 3 + "5")
: 总是能优先转成String?
唔,我能想得到的只有两个例子。
一个是其中有一方是字串的加法会导致双方都变成字串,
(另一方会调用toString()
另一个就是不同型态的数值加法,会以最大的那个型态来作为加总的结果。
如byte+int , 最後的型态会是int.
又long+int 最後的型态是long 诸如此类.
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.218.161