Re: [問題] 對java的一些疑問...

看板java作者 (小安)時間16年前 (2010/02/28 23:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/12 (看更多)
※ 引述《WPC001 (突然覺得自己是孤獨的...)》之銘言: : 最近因為要接手弄一些java的東西, 所以開始看了java語言的前幾章 這些都是討論蠻多次的東西了, : 1. Java所有內建的型別都是物件? : (包含int / double / string / array 以及自訂的class產生的物件) : --> a. 如果不是, 那每個內建型別卻可以用Object類別表示, 十分不合理 : 而且也都固定支援ToString或是一些"方法", 這是物件才有的行為 : 所以個人認為 : b. 如果是, 那繼續看問題2 "不是" 在 Java 5.0 以前,int, double, byte, char, ...等, 都是不能 assign 給 Object 的, 必須要自己建立 Wrap type,例如: Integer, Double, Byte ... 而從 5.0 開始,多了 auto-boxing 和 auto-unboxing, 自動幫你在 wrap type 和 primitive type 間轉換, 所以 "看起來" 好像可以把 int assign 給 Object reference。 : 2. java是call by value, 但書上說, 針對類別產生的物件, 是call by address : 這讓我覺得這個語言缺乏一致性... : 針對內建的型別(類別), 是call by value (copy), 而自訂的類別是call by address : 當然這可以是"特例", 但就覺得缺乏美感... XD : 3. java不支援operator overloading, 但string的"+", 卻又很特殊... : (相比C++, 其實我覺得有些不自然... XD) : 4. java是否支援implicit casting? 為何System.out.println(3.0 - str1 + 3 + "5") : 總是能優先轉成String? 呃...有沒有 implicit cast 書上總有寫吧 而且上面的例子也不能 compile,所以我就假設第一個 - 其實是 + 好了。 首先,String Concatenation 和 Additive 是兩個不同的運算子, 只是都用 + 這符號罷了, 然後,這兩個運算子有相同的 priority, ( http://www.uni-bonn.de/~manfear/javaoperators.php ) 並且都是左結合率。 所以 str1+num1+num2: 兩次都是 string concatenation 而 num1+num2+str1: 第一次是 additive (並沒有像你說的,總是優先轉成 string) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.160.117 ※ 編輯: tkcn 來自: 220.132.160.117 (02/28 23:49)
文章代碼(AID): #1BYe-tED (java)
討論串 (同標題文章)
文章代碼(AID): #1BYe-tED (java)