学习笔记-java按值传递
来源:互联网 发布:淘宝上的白酒是真的吗 编辑:程序博客网 时间:2024/05/17 05:07
代码示例
首先看下面的代码,类似如下的代码,编译通过,起初只是觉得很怪,代码的想做的是通过构造器给外部变量赋值。
public class MethodParaCallByValue { String name; public MethodParaCallByValue(String name) { name = this.name;//错误,即使是传递的是可变的对象参数仍然错误; }}
这里涉及的java知识点就是“java始终按值传递”。
java核心技术中的表述java中方法参数的传递始终使用“按值传递”,java中方法参数的使用情况:
1.一个方法不能修改基本数据类型的的参数;
2.一个方法可以改变对象参数的状态;
3.一个方法不能让对象参数应用一个新的对象;
回顾书中的例子:
double percent = 10; public static void tripleValue(double x){ x = 3*x; } tripleValue(percent);//执行后percent仍然为10;
public static void swap(Member x,Member y){ Member temp = x; x = y; y = temp; } swap(a,b);//无法达到交换的目的,交换的是swap方法内部x、y临时变量的指向,但方法执行完成后x、y丢弃。
简单说就是,被调用的方法中,方法得到的是所有参数值得一个拷贝,方法不可能修改一个基本数据类型参数的实际值和对象参数的指向;
为什么说“java始终是按值传递”
对于基本数据类型来说,按值传递是传递的实际值,这个很好理解;但对于对象类型来说,传递的就是对象变量的指向,怎么说是按值传递呢?
什么是按值调用,什么是按引用调用?(不知道到在哪里能找到准确的学术定义)
按值调用表示方法接受的是调用者提供的值;
按引用调用表示方法接受的是调用者提供的变量地址;
参照了百度百科解释如下:
按值传递参数时,是将实参变量的值复制一个到临时单元中,如果在调用过程中改变了形参的值,不会影响到变量本身,即实参变量保持调用前的值不变;
按地址(引用)传递时,把实参变量的地址传送给被调用地址,形参和实参共用内存同一地址,在被调用过程中,形参的值一旦改变,相应的实参也跟着改变;
看了值传递和引用传递的定义之后,比较好理解了,对java来说,对象参数调用的过程中传递是变量的指向,即变量的值;但按引用传递的是变量的地址,需要注意这里的表述是变量的地址,非变量指向的对象的地址;
0 0
- 学习笔记-java按值传递
- java学习笔记-java只有值传递
- JAVA学习笔记(七)- 值传递与引用传递
- 【Java学习笔记】值传递和引用传递
- Java学习笔记(17)-- 值传递与引用传递
- [学习笔记]Java的值传递和引用传递,引用传递转值传递
- Java学习笔记之三(按值传递和按引用传递)
- Java学习笔记----参数传递
- Java学习笔记之Java方法值传递
- Java学习-值传递
- java学习笔记:参数传递(2)
- java学习笔记15--引用传递
- java基础学习笔记第三天 this . static 的用法和值传递,引用传递
- 关于Java按值传递的学习
- Java学习之值传递
- Java学习之值传递
- Java 学习笔记 (2) -Java 对象 间的 传递 赋值
- Java学习笔记 --- Java中的参数传递问题
- Ubuntu14.04设置Terminator为默认Terminal
- Set,List,Map的区别
- erlang蒙特卡洛方法求Pi
- UIButton加视图/文字
- 算法学习之路(插入排序)
- 学习笔记-java按值传递
- java中的Checked Exception和Unchecked Exception的区别
- MFC--LIB
- 阿谀并不是没有优点
- 《C++ Primer》读书笔记-第一章 入门
- 2015中国和世界十大科技进展
- 快速找到python第三方库
- Unchecked Exception 和 Checked Exception 比较
- cuda 概况和安装