关于JAVA 参数传递理解
来源:互联网 发布:stc15f2k单片机下载线 编辑:程序博客网 时间:2024/06/06 15:03
</pre><p>总结一下java参数传递几种情况给自己 有不对的地方 请指正 :)</p><p></p><p>------------- 情况1 --------------</p><pre name="code" class="java">public class Pass {
static void add(int n){
++n;
}
public static void main(String[] args){
int n = 1;
add(n);
System.out.println(n);
}
}
由于JAVA 是值传递 也就是说会传递参数的一份拷贝 所以虽然在add方法内部n的值变化了 但是变化的只是n
的副本, 打印出来的n的值还是1
--------------- 情况 2 -----------------
public class Pass {
int i;
Pass(){
i = 2;
}
void add(int n){
i += n;
}
public static void main(String[] args){
Pass p = new Pass();
p.add(2);
System.out.println(p.i);
}
}
这里 由于i作为Pass类的成员变量 当p调用add方法时,p引用指向的堆中的i 已经发生变化 这时候i的值为 4
---------------- 情况 3 ----------------
public class Pass {
int i;
Pass(){
i = 2;
}
public void setI(Pass p){
p.i++;
}
public static void main(String[] args){
Pass p = new Pass();
p.setI(p);
System.out.println(p.i);
}
}
这里setI参数 传地的是p的引用副本 都指向一块实际的内存区域。i的值会变化成3
-------------- 情况4 ------------------
public class Pass {
int i;
Pass(){
i = 2;
}
public void setI(Pass p){
Pass p2 = new Pass();
p = p2;
}
public static void main(String[] args){
Pass p = new Pass();
p.setI(p);
System.out.println(p.i);
}
}
这种情况下 在setI方法内新产生了一个Pass引用p2和一块儿新的内存区域 此时副本p指向p2 所以没有变化 将打印2
---------------- 情况5 -------------------
public class Pass {
public static void setArr(int[] arr){
arr[0] = 1;
}
public static void main(String[] args){
int[] arr = new int[10];
for(int i:arr){
i = 0;
}
setArr(arr);
System.out.println(arr[0]);
}
}
这种情况和上面情况差不多 也是传递的是数组引用的拷贝 这样会改变数组第一个值 会打印1
- 关于JAVA 参数传递理解
- JAVA关于参数传递
- 关于java参数传递
- 关于java中参数传递的简单理解
- 关于java中参数传递的理解和总结
- 深入理解Java参数传递
- 关于java中的参数传递
- 关于java参数的传递
- 关于java中的参数传递
- 关于html参数传递的一些理解
- 关于js 函数传递引用参数理解
- servlet 关于传递参数的理解
- 关于构造函数传递参数的理解
- 充分理解java中的参数传递~!
- 理解Java赋值和参数传递机制
- java中参数传递理解分析
- java参数传递的最终理解
- 理解JAVA里的所有参数传递都是值传递
- 让你的程序更优雅的sleep
- 【取对数+科学计数法】【HDU1060】 N^N
- poj2653-Pick-up sticks(线段相交问题)
- hdu-1247 简单map的应用。(字典树)
- python 在不同层级目录import 模块的方法
- 关于JAVA 参数传递理解
- java list概要
- C++类对象大小的计算(二)含有虚函数类大小计算
- js 上传照片预览
- Android ViewPager程序引导页的实现
- 如何打造舒适的Linux使用环境
- NAS DIY(2)配件清单
- C语言_数组应用
- CSS控制效果