8种基本引用类型

  四种整数类型(byte、short、int、long)

  两种浮点数类型(float、double)

  一种字符类型(char)

  一种布尔类型(boolean)

  以及如String, final类型的数据类型时。

在方法调用时,属于值传递,在方法中改变了值之后,原始值不会改变。

除了以上之外的数据类型,如自定义的对象,Map,List之类的引用,都是地址引用。

如下demo:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* @author liyuechao *
* @since:2017年8月10日 下午5:12:07
*/
public class Test {
public static void main(String[] args) {
List<A> list = new ArrayList<>();
A a = new A();
a.setName("a");
A b = new A();
b.setName("b");
list.add(a);
list.add(b);
Map<String, List<A>> map = new HashMap();
map.put("ha", list);
     // null的时候不会改变,因为没有具体的指向地址
map.put("he", null);
List<A> lista = map.get("ha");
List<A> listc = map.get("ha"); List<A> listd = map.get("he"); for (A a2 : lista) {
modi(a2);
}
setValue(listd); List<A> listb = map.get("ha"); for (A a2 : listb) {
System.out.println(a2.getName());
} for (A a2 : listc) {
System.out.println(a2.getName());
}
for (A a2 : listd) {
System.out.println(a2.getName());
}
} public static void modi(A a) {
a.setName("x");
} public static void setValue(List<A> list) {
if (list == null)
list = new ArrayList<>();
A a = new A();
a.setName("y");
list.add(a);
} } /**
* @author liyuechao *
* @since:2017年8月10日 下午5:12:31
*/
public class A
{
private String name; public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}

运行结果:

java 关于值引用、地址引用的问题的更多相关文章

  1. Java是值传递还是引用传递?

    Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...

  2. 数据存储在哪里? Java是值传递还是引用传递?

    寄存器 : 最快的存储区,位于处理器中,寄存器会按需求自行分配空间,java不能控制寄存器,所以在程序中感觉不到它的存在 栈(stack) : 位于RAM(内存)中,速度仅次于寄存器,存储对象的引用( ...

  3. java是值传递还是引用传递

    首先写一个简便的Employee,以便测试使用. class Employee { private String name; public Employee(String name) { this.n ...

  4. java中值传递和引用传递

    最近工作中使用到了值传递和引用传递,但是有点懵,现在看了下面的文章后清晰多了.一下是文章(网摘) 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: public clas ...

  5. java的值传递和引用传递

    昨天博主在对于值传递和引用传递这里栽了一个大坑啊,导致一下午时间都浪费在这里,我们先说下值传递和引用传递java官方解释: 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对 ...

  6. Does Java pass by reference or pass by value?(Java是值传递还是引用传递) - 总结

    这个话题一直是Java程序员的一个热议话题,争论不断,但是不论是你百度搜也好还是去看官方的文档中所标明的也好,得到的都只有一个结论:Java只有值传递. 在这里就不贴代码细致解释了,让我们来看看一些论 ...

  7. Java中值传递和引用传递的区别

    在Java中参数的传递主要有两种:值传递和参数传递: 下面是对两种传递方式在内存上的分析: 一:值传递 解释:实参传递给形参的是值  形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参 ...

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

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

  9. 关于java是值传递还是引用传递

    一.概念 实际上对这两种传递方式,知乎上有个回答说得很好: 值传递和引用传递,属于函数调用时参数的求值策略(Evaluation Strategy),这是对调用函数时,求值和传值的方式的描述,而非传递 ...

  10. 【java】值传递和引用传递---对象作为方法的参数传入属于哪种传递

    首先 这篇作为一个永久性的问题,欢迎大家讨论 其次,个人结论如下几条: ①Java有且只有一种传递,即 值传递 ②作为方法的参数传入,都是对原本的实参进行了copy ③只不过[实参]若是[基本数据类型 ...

随机推荐

  1. java面向对象的有序数组和无序数组的比较

    package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public ...

  2. 六周psp

    本周psp 本周进度条 代码累积折线图 博文字数累积折线图 饼状图

  3. 20172311-ASL测试 2018-1938872补充博客

    20172311-ASL测试 2018-1938872补充博客 课程:<程序设计与数据结构> 班级: 1723 姓名: 赵晓海 学号: 20172311 实验教师:王志强老师 测试日期:2 ...

  4. vmvare fusion 8

    http://jingyan.baidu.com/article/54b6b9c0f8830f2d583b47ce.html 补充:vmware tools  在上面,直接点击安装

  5. linux +redis 安装 +mongo 安装

    Linux 下redis安装 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wget http://download.redis.io/releases/redis-2.8.17.tar ...

  6. ASP.NET Zero--2.如何启动

    1.直接启动 VS中直接启动 2.IIS站点 IIS中配置一个站点来启动(推荐) 3.登录 系统默认创建2个用户 默认用户名:admin 密码:123qwe 租户:Default  默认用户名:adm ...

  7. python实现进制之间的转换

    十进制转36进制: #36位映射模板 loop = '0123456789abcdefghijklmnopqrstuvwxyz' # 测试用例输入 n = a = [] : a.append( loo ...

  8. 201621123037 《Java程序设计》第11周学习总结

    作业11-多线程 标签(空格分隔): Java 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程 ...

  9. maven Web项目中POM的配置信息

    什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.在Maven中,当谈到Project的时候, ...

  10. PHP 多维数组排序 array_multisort()

    用PHP自带array_multisort函数排序 <?php $data = array();    $data[] = array('volume' => 67, 'edition' ...