国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一個絕對害了不少人的Java技術問題!

2019-11-18 13:18:28
字體:
來源:轉載
供稿:網友

  在java中方法參數的傳遞,對象是傳遞引用,基本數據類型是傳遞值。而且一直一來都似乎沒有人提出過疑問。
  直到最近,我在為公司基本Java開發人員編寫考試試卷的時候,我才發現,這錯了!在方法中,Java語言中對象傳遞的是地址,而不是引用,這兩個概念是有非常大的差別的,我相信熟悉c++的人都應該知道。
  例如下面:假設對象Test有name的屬性。
  public void call(Test t) {
  Test t2 = new Test();
  t2.setName("cba');
  t.setName("abc");
  t = t2 ;
  }
  
  public static void main(String[] arg) {
  Test obj = new Test();
  call (obj) ;
  System.out.  }
  這個時候,你們可以發現,打印出來的是"abc" ,而不是"cba",原因是這樣的,在這次調用中,等于聲明了兩個變量obj , t,它們指向的是同一個地址,調用call方法,只是將obj指向的地址傳遞給了t,而obj本身并沒有傳遞過去(也就是沒有傳遞引用),當你重新賦值的時候(也就是將對象引用指向其他存儲空間),等于只影響了t,而沒有影響obj。
  這樣的傳遞方式只能稱之為址傳遞,或者是引用對象傳遞,而不嫩說是傳遞引用或者引用傳遞。
  我不知道這究竟屬于
翻譯的錯誤,還是我們理解的錯誤。但是這樣的問題在c++中是有明顯的區分的(通過*與&)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴海县| 绥化市| 井冈山市| 大洼县| 裕民县| 延长县| 襄垣县| 庐江县| 南木林县| 克山县| 德格县| 玉门市| 兴化市| 浪卡子县| 宁阳县| 丹阳市| 定西市| 毕节市| 永新县| 泗洪县| 博兴县| 安宁市| 屏南县| 洛隆县| 石楼县| 信丰县| 聊城市| 葫芦岛市| 岑巩县| 和田县| 安平县| 辽源市| 广南县| 博罗县| 宜都市| 潞城市| 忻州市| 高唐县| 英山县| 五家渠市| 张家口市|