Re: [問題] 對java的一些疑問...
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 12 篇):