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. shell查看进程

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

  2. BigDecimal加减乘除运算

    java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val)Translates a doubl ...

  3. Got Stucked in C++ Static Library Loading.. for some time

    I used to load library using 1 single .dll file, so when I happen to do method calling between 2 pro ...

  4. java 对象流

    TV.java import java.io.*; public class TV implements Serializable{ String name; int price; public vo ...

  5. java 类与对象

    class XiyoujiRenwu { float height,weight; String head, ear; void speak(String s) { System.out.printl ...

  6. 学习笔记——建造者模式Builder

    构造者模式.外部场景如果需要一个汽车类,它不需要关心如何构造,它只需要告诉Director需要什么,就可以从Director获得. 如:CDirector(IBuilder* aBuilder); 场 ...

  7. html dom模型一

    DOM 节点 包含的节点内容: 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 ...

  8. linux下执行scrapy的爬虫定时任务

    刚开始执行scrapy crawl zentaos可以完成扫描 但是通过linux的crontab任务,只执行了连接mongodb的操作,并创建了索引 也就是说scrapy crawl zentaos ...

  9. asp 自我定时删除

    <% if now()>"2008-9-15" thenset myfso=server.CreateObject("scripting.filesystem ...

  10. GIT问题,error:src refspec master does not match any

    将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时可能会出现如下错误error:src refspec master does not match any原因: 本地版本库为空, 空目录不 ...