资讯专栏INFORMATION COLUMN

java中到底是值传递还是引用传递?

xiongzenghui / 1377人阅读

摘要:首先说结论,中只有值传递,没有引用传递对于普通类型的变量比如,,,。比如说,如果是引用传递,那么下面这段代码就会出错空指针显然避免了这个问题,因此使用了值传递而不是引用传递。

首先说结论,java中只有值传递,没有引用传递!!!

对于普通类型的变量比如,int,char,float。不用说都知道是值传递。
那么对于类类型的变量呢?为什么也是值传递?
类类型的变量本身就是个引用,那么传递的不是引用吗?
比如说:

class A
{
int aa;
}

void fun(A a)
{
 a = null;
}

A a = new A();

fun(a);
System.out.println(a == null);

fun函数传递的是引用?还是值?
答案是引用的值,那么传递的还是值。
因此最后输出是false。
为什么这么设计?因为java的设计理念就是安全,就是可靠。
如果传递的是引用,那么在函数中就能够改变引用的指向,那么
很有可能造成程序不安全。比如说,如果是引用传递,那么下面这段代码就会出错(空指针):

void fun(A a)
{
 a = null;
}

A a = new A();

fun(a);
System.out.println(a.aa);

java显然避免了这个问题,因此使用了值传递而不是引用传递。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73931.html

相关文章

  • [Java] 变量里存的到底是什么

    摘要:,变量里存的是什么在规范中,对于有这么一句话一个可以是一个类的实例或者是一个数组一个数组其实是一个,不过这是另一个话题了。由于的设计是不可变的,在一个实例上的任何增删操作都会产生一个新的实例,效果与重新为变量设定新的引用值是一样的。 考虑下面这个例子: Long l1 = 1L; Long l2 = 2L; Long l3 = 3L; long l4 = 3L; Long l5 = 1...

    gaara 评论0 收藏0
  • 最最最常见的Java基础知识面试题总结

    摘要:地址面试必备最最最常见的面试题总结第一周一中的值传递和引用传递非常重要首先要明确的是对象传递数组类接口是引用传递,原始类型数据整型浮点型字符型布尔型传递是值传递。这个哈希码的作用是确定该对象在哈希表中的索引位置。 showImg(https://segmentfault.com/img/remote/1460000015923339?w=922&h=519); 这里会分享一些出现频率极...

    syoya 评论0 收藏0
  • 【2】JavaScript 基础深入——数据、变量、内存

    摘要:个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一个变量依然指向前一个对象。 JavaScript 基础深入——数据、变量、内存 什么是数据? 存储在内存中代表特定信息的,本质上是0100101..... 数据的特点:可传递、可运算 一切皆数据 内存中所有操作的目标:数据 算术运算 逻辑运算 赋值运算 运行函数 什么是内存? 内存条通电后产生的可储存数据的空...

    rubyshen 评论0 收藏0
  • Java向上转型及内存分析

    摘要:但有时候,当我们的代码只需要与父类打交道时,可以使用向上转型,来使我们的代码不依赖具体子类,比如以下代码,方法可以接受类的任意子类内存分析我们来分析以下转型代码在内存中的表示 学习设计模式的时候,发现很多模式都用到了向上转型(eg. 工厂方法)。而我对向上转型(upcasting)的机制并不十分熟悉。这篇文章将深入分析向上转型的机制、内存分析。 概念 先从几个基本概念开始: 1. Ja...

    Zachary 评论0 收藏0
  • 这题不会!别说你懂值传递引用传递

    摘要:阅读原文这题不会别说你懂值传递与引用传递即使工作过一阶段的人也不一定能够理解是值传递还是引用传递。概念值传递方法调用时,实参的数值被复制到另一个变量,然后传递复制的副本。 阅读原文:这题不会!别说你懂值传递与引用传递 即使工作过一阶段的人也不一定能够理解Java是值传递还是引用传递。若不信,那么来看看下面这道题。 题目 请先写出你的答案,然后对比下输出结果。 public class ...

    QLQ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<