Java(值传递)

来源:互联网 发布:网络安全技术与实践 编辑:程序博客网 时间:2024/05/01 11:57
package params;public class Test {//对于基本数据类型是把变量的值传给了函数,并不影响方法外部变量的内容public void changeInt(int a){a = 3;}/* * 对于引用类型传递的堆中对象的真实地址,所以方法中的参数同样指向堆中该对象的地址,在方法中改变地址中的内容同样影响方法外部的内容 * 所以在Java中的值传递,不管是基本类型还是引用类型,一律是值传递 pass by value * 如果是基本类型传递的值就是基本类型的值本身,而引用类型传递的值是内存中的地址 */public void changePoint(Point point){point.x = 5;point.y = 6;}/* * 此时传递字符串的值是把StringPool中的对象地址传递给方法参数,方法外和方法内的两个引用指向同一个对象(StringPool中的对象地址) * 但是,在方法内的str改变时,因为字符串是常量,一旦赋值就不能更改,所以方法中的str有重新在StringPool中新建了内容为"abc"的对象并指向它 * 但是方法外部的str始终指向原来的对象,即内容依然是"xyz" */public void changeStr(String str){str = "abc";}public static void main(String[] args) {int a = 1;Test test = new Test();test.changeInt(a);System.out.println(a);//1Point point = new Point(1,2);test.changePoint(point);System.out.println(point.x);//5System.out.println(point.y);//6String str = "xyz";test.changeStr(str);System.out.println(str);//xyz}}class Point{int x;int y;public Point(int x,int y) {this.x = x;this.y = y;}}

0 0
原创粉丝点击