1. 数组的引用传递
public class TestArray {
public static void changeAry1(int[] ary){
int[] ary1 = {9,9,9};
ary = ary1;
}
public static void changeAry2(int[] ary){
ary[0] = 100;
}
public static void main(String[] args) {
int[] ary = {1,2,3};
System.out.println(Arrays.toString(ary));
changeAry1(ary);
System.out.println(Arrays.toString(ary));
changeAry2(ary);
System.out.println(Arrays.toString(ary));
}
}
2. 对象的引用传递
public class TestObject {
public static void change1(Person p){
p = new TestObject().new Person();
p.age= 100;
p.name = "Lily";
}
public static void change2(Person p){
Person pNew = new TestObject().new Person();
pNew.age= 200;
pNew.name = "Mary";
p = pNew;
}
public static void change3(Person p){
p.age= 200;
p.name = "Tomy";
}
public static void main(String[] args) {
Person p = new TestObject().new Person();
p.age = 50;
p.name="John";
change1(p);
System.out.println(p);
change2(p);
System.out.println(p);
change3(p);
System.out.println(p);
}
class Person{
private int age;
private String name;
public String toString(){
return this.age+","+this.name;
}
}
}
3. 再写一个jdk自带类的引用传递
public class TestOtherObject {
public static void change1(List list){
list = null;
}
public static void change2(List list){
list.add(null);
}
public static void main(String[] args) {
List list = new ArrayList();
change1(list);
System.out.println(list.size());
change2(list);
System.out.println(list.size());
}
}
4. 字符串也是引用类型,也是引用传递
public class TestString {
public static void changeStr1(String str){
String newValue = "changeValue";
str = newValue;
// 或者直接str = "changeValue"; 也是一样
}
public static String changeStr2(String str){
str = "changeValue";
return str;
} public static void main(String[] args) {
String str = "hello";
System.out.println(str);
changeStr1(str);
System.out.println(str);
str = changeStr2(str);
System.out.println(str);
}
}

如何理解java的引用传递的更多相关文章

  1. Java Object 引用传递和值传递

    Java Object 引用传递和值传递 @author ixenos Java没有引用传递: 除了在将参数传递给方法(或函数)的时候是"值传递",传递对象引用的副本,在任何用&q ...

  2. 如何理解Java的值传递

    结论 为了加深印象,先把结论放在文章开头. ++Java中只有值传递++. 形参与实参 在理解Java的值传递 实参Argument 实际参数,主调用函数传递给调用函数的参数 形参Parameter ...

  3. Java参数引用传递之例外:null

    今天写链表的时候写了一个函数,实参是一个空链表,应该是按引用传参,但是在函数内修改了链表,外部的链表没有变化. 原来是null作为参数传递的时候,就不是引用传参了. 引自:http://blog.cs ...

  4. Java没有引用传递机制,C#有。

    Java没有引用传递机制,C#有: public class Obj { private Integer myValue; public Integer getMyValue() { return m ...

  5. 堆栈详解 + 彻底理解Java的值传递和引用传递

    本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...

  6. java中 引用传递、值传递的理解(数组,自定义类,基本数据类型,String类)

    代码部分: public static void main(String[] args) { testInt(); testString(); testArray(); testX(); } publ ...

  7. Java中引用传递

    //Java中的引用传递 class Ref1{ int temp = 10 ; String Str = "hello"; } public class HelloWorld { ...

  8. 有关java的引用传递,直接操作对象本身。直接删除BE的value中某值

    HashSet<String> refRegions = BE.get(regionName);    HashSet<String> values = new HashSet ...

  9. 理解Java的引用对象

    SoftReferenceWeakReference 的特性基本一致, 最大的区别在于 SoftReference会尽可能长的保留引用,不会在GC时就回收对象,而是直到JVM 内存不足时才会被回收(虚 ...

随机推荐

  1. VS2005--设置Release模式下调试

    今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug ...

  2. ubuntu setup adb tool

    sudo add-apt-repository ppa:nilarimogard/webupd8sudo apt-get updatesudo apt-get install android-tool ...

  3. vbscript语句

    'vbscript语句Call'[call] name [argumentlist]'把控制转移到函数或子程序.当调用函数或子程序时,Call是可写可不写的.但是如果你用了Call,那么argumen ...

  4. 扫描局域网内的ip和主机名

    1. 目的 今天发现我配置的一台电脑ip被人占用了,所以准备写个程序扫描一下局域网内所有正在使用的ip和主机名 2. 实现--直接上代码 import time import threading im ...

  5. fpSpread1 简单用法

    //如果汇总的话直接可在模板里面填写公式,不过要有三行空行才行 比如SUM(A1,A2,A3) fpSpread1.Sheets[0].RowCount = 30; fpSpread1.Sheets[ ...

  6. 一个很好的通用 excel 导出工具类

    此类用主要 jxl +注解+流 实现扩展性很强,jxl性能会比poi好一点,值得我们学习. package oa.common.utils; import java.io.OutputStream; ...

  7. ios学习基础篇一

    搜集的不错的oc学习资料 大概总结: http://my.oschina.net/luoguankun/blog/208526 详细教程: http://www.w3cschool.cc/ios/io ...

  8. swift(2)元祖(Tuple)

    let somePoint = (, ) switch somePoint { , ): // 位于远点 println("(0, 0) is at the origin") ): ...

  9. HDU 5889 (最短路+网络流)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  10. ubuntu系统使用SSH免密码登陆

    ubuntu系统使用SSH免密码登陆 | 浏览:5160 | 更新:2014-02-13 19:15 1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 我们通常使用U ...