java方法的参数按值传递
来源:互联网 发布:java行为模式 编辑:程序博客网 时间:2024/06/06 18:52
java方法的参数按值传递,这种方式的重要后果是方法无法改变调用端变量。
这句话不好理解,但我们只要记住一句话:调用需要参数的方法时,相当于参数名在赋值语句左侧,参数值在赋值语句右侧。
可以分为两种情况解释:
1.当方法参数是原始数据类型(int等等)时
public class Test{public static void main(String args[]){int i = 0;add(i);System.out.println("i:"+i);}public static void add(int j){j++;}}输出为:“i=0”,可以看到,i并没有被改变
因为根据上面标红字体那句话,以上代码相当于
public class Test{public static void main(String args[]){int i = 0;int j = i;//根据红色字体的话,这两句相当于上面的add()方法j++;System.out.println("i:"+i);System.out.println("j:"+j);}}输出为:“i=0,j=1”
这就是为什么说:方法无法改变调用端变量,因为根本就是两个独立的变量啊,我在方法中改变的是我方法自己的变量。
2.当方法参数是引用数据类型(String等等或自定义类)时
public class Test{public static void main(String args[]){A a = new A();System.out.println("a.count:" + a.count);add(a);System.out.println("a.count:" + a.count);}public static void add(A a2){a2.count++;}}class A{int count = 0;}
输出为:“a.count=0,a.count=1”,奇怪了,怎么又可以改变了!
因为根据上面标红字体那句话,以上代码相当于
public class Test{public static void main(String args[]){A a = new A();System.out.println("a.count:" + a.count);A a2 = a;//根据红色字体的话,这两句相当于上面的add()方法a2.count++;System.out.println("a.count:" + a.count);System.out.println("a2.count:" + a2.count);}}class A{int count = 0;}
输出为:“a.count=0,a.count=1,a2.count=1”,怎么两个的count都改变了?
因为此时这两个独立的变量(实际上是引用)都指向的是同一个对象,而改变的是那个对象。
方法无法改变调用端变量,这句话依然成立,因为方法确实无法改变那个变量(比如将它指向另一个A对象),改变的只是它指向的对象。
总而言之,我们只要记住本文开头红色字体那句话,就不会犯迷糊了。
0 0
- java方法的参数按值传递
- Java方法参数的传递机制,值传递?引用传递?
- java方法参数传递方式--按值传递、引用传递
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- Java的方法传递参数的本质---值传递
- 对Java方法参数按值传递的理解
- 对Java方法参数按值传递的理解
- java 方法的参数传递
- Java方法的参数传递
- Java--方法参数的传递
- Java方法的参数传递
- Java方法的参数传递
- JAVA的方法参数传递
- java方法参数的传递
- Java 方法参数的值传递和引用传递
- java方法中参数的传递机制(值传递)
- Java的方法的参数传递,值传递和引用传递还有String字符串传递
- Java 方法参数 值传递
- Android学习 - Shell命令(正则式简介)
- 修改xml中某节点的值
- 仿struts2模式的servletOrFilter实现
- ajax 请求php 报错404 但脚本能够正常输出数据 问题的解决方法
- 游承超:为什么要用手机弧度钢化玻璃膜?(6P)
- java方法的参数按值传递
- C++中继承关系简介
- [转载]JAVA号码工具类:实现手机固话号码判断与区号截取
- 漫谈SOA(面向服务架构)
- 第205期读书沙龙收获
- Comparable使用
- [Leetcode 33, Hard] Search in Rotated Sorted Array
- Python中列表准换成元组
- IOS开发--经常会用到的方法和常识