虽然现在使用java的时候进行参数传递,已经很不经意了。但最近的学习中,突然想起了参数传递的问题。是值还是引用,以前学习的记忆中是值传递,不过还是实例验证一下最好:
package com.ethan.test;
public class People {
private Integer i = 1;
public Integer getI() {
return i;
}
public void setI(Integer i) {
this.i = i;
}
}
package com.ethan.test;
import org.junit.Test;
public class ValuePass {
//按值传递,数据拷贝,不影响
// private String s = "1";
private String s = new String("1");
public void change(String s) {
s = "2";
System.err.println(s);
}
public void change2(People p) {
p.setI(1);
System.err.println(p.getI());
}
/*
* 输出:2 1
* 说明是值传递,数据的拷贝,原来的数据不受影响
*/
@Test
public void test1() {
change(s);
System.err.println(s);
}
/*
* 输出:1 1
* 说明是 传递的是引用所指向的对象实例 的内存地址
* p 只是相当于一个引用指针,指向了内存中的实例空间。
* 如果p=null,则意味 这个指向断开了,但对象实例不一定回收销毁,如果
* 此时还有一个People类型 变量p2 指向它
*/
@Test
public void test2() {
People p = new People();
p.setI(2);
change2(p);
System.err.println(p.getI());
}
}
虽然这个问题很小,但对于java中的引用“指针”,对象的回收有了更好的理解。
最后提一下 代码的安全性拷贝:比如一个方法接收的参数是一个对象类型,那么就存在风险了。因为传入的对象,可以通过其他的引用,轻易就能改变它。
所谓安全性拷贝 分为 浅拷贝和深拷贝。现在只说一下浅拷贝:在方法块里边,再new一个相同类型的对象实例,设置参数对象的值,这样一来就实现了数据拷贝,操作的将是一个新的对象。
分享到:
相关推荐
Java中传递对象时传递的并不是对象中的内容, 而是对象的地址。
这里详细的说明了,java参数传递的过程,引用传递,值传递
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
Java:按值传递还是按引用传递详细解说
58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...
关于Java参数传递的PPT,详细介绍参数传递的类型。彻底理解Java只有唯一传递方式——值传递。
java参数的传递与返回值 江苏省无锡市
这个在Java里面是经常被提起的问题,也有一些争论,似乎最后还有一个所谓的结论:“在Java里面参数传递都是按值传递”。事实上,这很容易让人迷惑,下面先分别看看什么是按值传递,什么是按引用传递,只要能正确理解...
12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值...
java 值传递和引用传递的比较区别,包括代码及详解
java 通过html值传递,绘制圆圈,适合初学者
Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递
Java语言中参数值传递和引用传递比较
我们先看一下值传递和引用传递的概念和区别 值传递:是指在调用函数时将实际参数复制一份传递到函数中,...我们通过例子理解一下Java的值传递: public static void main(String[] args) { int a = 10; int b = 20;
java参数传递时到底是值传递还是引用传递分享.pdf
java参数传递 java 参数
不管是按值传递还是按引用传递,都是把栈中的数据备份了一份给参数变量,只不过值类型备份的是具体的数值,而引用类型备份的是内存地址
java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo
62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....