最 近 遇到java 值传递和引用传递问题 ,做 了 一 个 小 小 的 测试,分享 一 下,先 看 代码:
package com.test.pass;
public class TestPass {
/**
* @param args
*/
public static void main(String[] args) {
int p1 = 9;
int p2 = 10;
TestPass t = new TestPass();
t.add(p1, p2);
System.out.println("p1 = "+p1);
System.out.println("p2 = "+p2);
//pass by value
TestBO bo = new TestBO(10,20);
t.add(bo);
System.out.println("bo.m = "+bo.getM());
System.out.println("bo.n = "+bo.getN());
//pass by reference
int[] ps = new int[2];
ps[0] = 1 ;
ps[1] = 2 ;
t.add(ps);
System.out.println("ps0 = "+ps[0]);
System.out.println("ps1 = "+ps[1]);
//pass by reference
String sp = "Hello";
t.testStr(sp);
System.out.println("sp1 = "+sp);
t.testStr2(sp);
System.out.println("sp2 = "+sp);
//pass by value
}
public void add(int a,int b){
a = 2;
b = 3;
System.out.println("a = "+a);
System.out.println("b = "+b);
}
public void add(TestBO bo){
bo.setM(2);
bo.setN(3);
System.out.println("a = "+bo.getM());
System.out.println("b = "+bo.getN());
}
public void add(int[] as){
as[0] = 10 ;
as[1] = 20 ;
System.out.println("as[0] = "+as[0]);
System.out.println("as[1] = "+as[1]);
}
public void testStr(String str){
str = "world";//equals String str = new String("world");
System.out.println("str1 = "+str);
}
public void testStr2(String str){
System.out.println("str2 = "+str.concat(" World!"));
System.out.println("str22 = "+str);
}
}
class TestBO{
private int m;
private int n;
public TestBO(int m,int n){
this.m = m;
this.n = n;
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
}
总结:
Java中进行方法调用的时候传递参数时,遵循值传递的原则:
1)基本数据类型(byte,short ,int ,long, float ,double,boolean,char),传递的是数据的拷贝
2)引用数据类型,传递的是传递的引用地址的拷贝,而不是该对象本身
但是要注意一下String类 ,有点特别,上面代码可以看出不像引用传递,而是值传递特征,其实不然,str = "world" 相当于 str = new String("world");
分享到:
相关推荐
java 值传递和引用传递的比较区别,包括代码及详解
Java:按值传递还是按引用传递详细解说
不管是按值传递还是按引用传递,都是把栈中的数据备份了一份给参数变量,只不过值类型备份的是具体的数值,而引用类型备份的是内存地址
Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
java学习java语言的值传递和引用传递
本人经过长时间收集的最经典、最有说服力、最易懂的关于值传递和引用传递的详解资料~包看包会~发出去真有些不舍得~
这个在Java里面是经常被提起的问题,也有一些争论,似乎最后还有一个所谓的结论...事实上,这很容易让人迷惑,下面先分别看看什么是按值传递,什么是按引用传递,只要能正确理解,至于称作按什么传递就不是个大问题了。
当一个变量为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。 值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值 引用传递的特点:方法内部对传...
Java语言中参数值传递和引用传递比较
主要介绍了 Java 值传递和引用传递详解及实例代码的相关资料,需要的朋友可以参考下
Java的按值传递和按引用传递分析 Java的按值传递和按引用传递分析.pdf
Java中的值传递和引用传递的区别.doc
java中的值传递和引用传递[汇编].pdf
java参数传递时到底是值传递还是引用传递分享.pdf
Java的按值传递和按引用传递分析.rar
java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用
java参数传递时到底是值传递还是引用传递[归类].pdf
我们先看一下值传递和引用传递的概念和区别 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递:是指在调用函数时将实际参数的地址直接...
主要介绍了详解java的值传递、地址传递、引用传递的相关资料,需要的朋友可以参考下