Java的参数传递是值传递?
引用传递和值传递的区别。(不先说定义的都是在耍流氓!)
按值调用(call by value) : 在参数传递过程中,形参和实参占用了两个完全不同的内存空间。形参所存储的内容是实参存储内容的一份拷贝。
按引用调用:在参数传递的过程中,形参和实参完全是同一块内存空间,两者不分彼此。
咱们先看俩行代码:

如图,int是基本类型,66直接保存在变量count中。而对于引用类型来说,变量存的是实例对象的地址,如上图也画的0x10一样,它指向实例对象。一般称这种变量为"引用"。对于我们的String str = "MDove"来说,str就是这个引用,这个引用指向了"MDove"。
赋值符号对于基本类型和引用类型的不同之处。再看一段代码:

由上图,我们可以看出,对于基本类型来说,count = 666;是直接进行赋值。而str = "MDove is cool.";则是重新开辟了一块空间,然后将这块空间的地址赋值给str变量(引用)。
基本类型就是值传递,比如这样的:

因为是值传递,所以在fun(int coount)中,count只是真正变量的拷贝,因此count = 666;也是对拷贝进行赋值,因此执行完了fun方法,我们的count还是等于66。
那我们在换一个例子,把基本类型改为引用类型:

答案还是"MDove"(如果感觉有点懵,可以把前后的两个对象取出来 equal比较一下)
按我的理解方法参数都是引用类型了,那应该是引用传递,内部str赋值应该会影响外边才对啊!
其实上面这个例子也恰恰应征了这个问题,引用类型同样也是值传递。因此fun参数的str,依然是一个拷贝,因此此时的赋值对面来说没有任何意义。其中,IDE也帮我们证实了这个问题,让我们看一张截图:

如果是这种写法,就改变了变量的值了:

MDove:这样当然能改变值,对于引用变量来说,值传递,拷贝了它的引用,但是它的这份拷贝的引用所指向的真实地址是没变的。上述的操作画成图是这个样子:

所以 java是值传递,如果我解释的不清楚 请点击http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.html
Java的参数传递是值传递?的更多相关文章
- Java的参数传递是值传递还是引用传递
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是值传递.Java 语言的参数传递只有值传递.当一个对象实例作为一个参数被传递到方法中 ...
- Java的参数传递是值传递还是引用传递?
一.前言 首先先说结论,Java中方法参数传递方式是按值传递.如果参数是基本类型,传递的是基本类型的字面量值的拷贝.如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝. 接下来深入了解一 ...
- java参数传递之值传递
一 概述 1.什么是参数传递? 调用方法时向形参传递数据的过程叫做参数传递.在编程语言中有两种传递方式:值传递与引用传递.必须强调的是,这里提到的两种传递方式不是仅限于java使用到的传递方式,而是出 ...
- Java参数传递是值传递还是引用传递?
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是值传递.Java 语言的参数传递只有值传递.当一个实例对象作为参数被传递到方法中时,参 ...
- java 传参方式--值传递还是引用传递
java 传参方式--值传递还是引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递.写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用 ...
- Java中到底是值传递还是引用传递?
Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...
- Java中真的只有值传递么?
Java中真的只有值传递么? (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型 ...
- 面试题:Java中为什么只有值传递?
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 经典的问题 形参&实参 Java是 ...
- Java面向对象-方法的值传递和引用传递
Java面向对象-方法的值传递和引用传递 0 发布时间:『 2016-08-21 14:21』 博客类别:Java核心基础 阅读(197) 评论(0) Java面向对象-方法的值传递和引用传递 方 ...
随机推荐
- HNUSTOJ-1639 分糖果(几何)
1639: 分糖果 时间限制: 1 Sec 内存限制: 128 MB提交: 261 解决: 118[提交][状态][讨论版] 题目描述 为了实验室的发展,吴大大采购了一箱零食O(∩_∩)O~~ 在 ...
- HNUSTOJ-1695 跳格子(略感头疼)
1695: 跳格子 时间限制: 1 Sec 内存限制: 128 MB提交: 230 解决: 57[提交][状态][讨论版] 题目描述 逸夫楼的大厅的地面有10行10列的石砖,我们用坐标(x,y)来 ...
- Print out Android kernel log
adb shell "su -c 'cat /proc/kmsg'" | tee kernel.log adb shell cat /proc/last_kmsg > las ...
- 基于RSA的前后端登陆密码加密JAVA实现(转)
RSA加密算法简介 SA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法愈 ...
- angularJS(一):表达式、指令
简介 以 JavaScript 编写的库,是一个 JavaScript 框架 一.表达式 AngularJS 使用 表达式 把数据绑定到 HTML. 表达式写在双大括号内:{{ expression ...
- http协议是无状态协议,它的无状态指的是什么,如何解决这种情况
http是无状态的协议,也是不安全的协议, 它的无状态是指对于事务处理没有记忆能力,缺少状态意味着后续的操作需要前面的信息. 解决办法:1,通过cookie解决,2,通过session会话保存.
- 以当前时间作为GUID的方法
在C#中,系统提供了GUID类,用户可以通过该类来获得128位的唯一标识,但是该标识不具有可读性,很难把该GUID显示在界面上,以当前时间精确到毫秒来作为GUID是一个比较不错的做法,但是DateTi ...
- Python3找出List中最大_最小的N个数及索引
# -*- coding: utf-8 -*- import heapq nums = [1, 8, 2, 23, 7, -4, 18, 23, 24, 37, 2] # 最大的3个数的索引 max_ ...
- Codeforces 961 容斥叉积判共线 树状数组递增思想题
A B C D 给你N个点 问你能不能有两条直线穿过这N个点 首先假设这N个点是可以被两条直线穿过的 所以两条直线就把这N个点划分成两个集合 我们取1 2 3三个点这样必定会有两个点在一个集合内 ch ...
- Keepalived+Nginx+tomcat实现主备+负载
部署系统: Red Hat Enterprise Linux Server release 7.0 软件版本:apache-tomcat-7.0.92.tar.gzkeepalived-2.0.11. ...