【Practical Java】實踐1:引數以by value方式而非by reference方式傳遞
一個普遍存在的誤解是:java 中的引數以by reference 方式傳遞。這不是真的,引數其實是以by value 方式傳遞。這個誤解源於[所有java objects 都是objects references]事實(關於object references 的詳細資訊,請見實踐8)。如果你未能準確理解其中奧妙,則可能導致一些料想不到的後果。舉個例子:
package fp;
import java.awt.Point;
public class Test
{
public static void modifyPoint(Point pt,int j)
{
pt.setLocation(5, 5);//1
j = 15;
System.out.println("During modifyPoint "+"pt ="+pt+"and j ="+j);
}
public static void main(String args[])
{
Point p = new Point(0,0);//2
int i = 10;
System.out.println("Before modifyPoint "+"p ="+p+"and i ="+i);
modifyPoint(p,i);//3
System.out.println("Before modifyPoint "+"p ="+p+"and i ="+i);
}
}
程式的輸出:
Before modifyPoint p =java.awt.Point[x=0,y=0]and i =10
During modifyPoint pt =java.awt.Point[x=5,y=5]and j =15
Before modifyPoint p =java.awt.Point[x=5,y=5]and i =10
感悟:p類似於c中的指標。
相關文章
- java 傳遞引數的兩種方式Java
- C++引數的傳遞方式C++
- 引數傳遞方式必須是const引用傳遞
- C/C++中的引數傳遞方式C++
- MyBatis 使用foreach與其他方式的時候引數傳遞方式MyBatis
- ABAP 方法呼叫的引數傳遞裡,透過引用傳遞的方式,能修改原始引數值嗎?
- Mybatis傳遞多個引數的4種方式(乾貨)MyBatis
- 引數傳遞中編碼問題(Get/Post 方式)(一)
- 引數傳遞中編碼問題(Get/Post 方式)(二)
- JSP向後臺傳遞引數的四種方式JS
- 將url傳遞的引數值以json格式物件方式返回程式碼例項JSON物件
- 使用python指令碼傳遞引數:(三種方式可收藏)Python指令碼
- java 中引數的傳遞Java
- Js傳遞陣列引數到後臺controller的方式JS陣列Controller
- Vue + Spring Boot——axios使用GET以引數的方式傳遞物件到SpringMVC解決方案VueSpring BootiOS物件SpringMVC
- php函式之如何用預設引數和可變長度引數方式傳遞?PHP函式
- PLSQL Language Reference-PL/SQL子程式-子程式引數-子程式引數傳遞方法SQL
- iframe利用get方式傳遞中文引數會出現亂碼解決方案
- Java引數傳遞是傳值還是傳引用?Java
- Java中方法引數傳遞詳析Java
- Java方法04:命令列傳遞引數、可變引數Java命令列
- 以post方式傳參方式開啟新視窗
- iOS專案開發實戰——使用三種方式實現頁面跳轉與引數傳遞(一)iOS
- iOS專案開發實戰——使用三種方式實現頁面跳轉與引數傳遞(二)iOS
- iOS專案開發實戰——使用三種方式實現頁面跳轉與引數傳遞(三)iOS
- Mybatis引數傳遞MyBatis
- JNI傳遞引數
- RUBY-FLEX實踐—利用swfobject實現Rails與Flex傳遞引數FlexObjectAI
- 何時以引用方式傳參
- React事件傳遞引數React事件
- 路由元件傳遞引數路由元件
- JS的方法引數傳遞(按值傳遞)JS
- C#引數傳遞之值引數C#
- 『無為則無心』Python函式 — 26、Python函式引數的傳遞方式Python函式
- 最佳實踐1:儘量以對瀏覽器友好的方式設計REST API瀏覽器RESTAPI
- 雜湊競猜遊戲的傳遞方式遊戲
- 以Raw的方式傳送POST請求
- 以事務方式傳送 Kafka 訊息Kafka