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. MySQL-测试卷一

    MySQL-测试卷一 一.单项选择题 1 下面不属于Msql数据库特点的是(  ) A. 免费使用  B.不能跨平台  C.开源软件  D.功能强大 2 定义表的一个字段, 要求能表示4位整数,2位小 ...

  2. lvs + keepalived + httpd 高可用集群(转)

    实验信息和拓扑:备注:Centos 6.5 selinux –disabled iptables off ServerName Ipaddress information LVSMaster 172. ...

  3. android把图片 视频 保存到相册

    //android把图片文件添加到相册 ContentResolver localContentResolver = getContentResolver(); ContentValues local ...

  4. 事件委托小demo(jq版)

    <style type="text/css"> * { margin:; padding:; } .box1 { width: 200px; height: 60px; ...

  5. json的学习笔记

    json比较简单,所以先从json开始学起. 一 json的名称: json的全称是javascript object notation,中文名称为js 对象表示法. json的定义:json是一种轻 ...

  6. 初识Ubuntu

    刚刚装好bantu 16.10就遇到了好多问题,记录一下 一.卸载一些用不到的软件. 1.su认证失败 sudo passwd //输入命令,然后修改密码即可 2.卸载libreoffice sudo ...

  7. cell reuse & disposebag

    For my project I've made base cell class TableViewCell: UITableViewCell { private(set) var disposeBa ...

  8. linux C++通过ntp协议获取网络时间

    转自:http://blog.csdn.net/ccjjyy/article/details/42871993 #include <stdio.h> #include <sys/ty ...

  9. [转]于Fragment和Activity之间onCreateOptionsMenu的问题

    Fragment和Activity一样,可以重写onCreateOptionsMenu方法来设定自己的菜单,其实这两个地方使用onCreateOptionsMenu的目的和效果都是完全一样的,但是由于 ...

  10. Unity3D项目优化(转)

    前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的 ...