java中的参数传递(值传递等)
来源:互联网 发布:linux不记历史命令 编辑:程序博客网 时间:2024/06/08 04:36
java中参数的传递规则,经常会让初学者一头雾水,这里分析一下java中的两种基本传递方式。
不想看过程的,可以直接看文章末尾结论。
(在看参数传递规则之前,一定要保证自己已经充分理解了形参和实参的概念,否则在下边的学习,可能会更加懵圈。)
1.基本数据类型的传递规则。
首先看一段代码:
public class CompareTwo {public static void main(String[] args) {int a = 10;int b = 20;temp(a,b);System.out.println("output in main method: "+a);System.out.println("output in main method: "+b);}public static void temp(int a,int b){int temp = a;a = b;b = temp;System.out.println("output in temp method: "+a);System.out.println("output in temp method: "+b);}}
运行结果:
output in temp method: 20output in temp method: 10output in main method: 10output in main method: 20
从上边代码和运行结果可以看出,在方法中参数a和b发生了交换,但是事实上,这两个变量都没有发生变化。这是为什么呢?
这里就需要知道基本数据类型作为参数时候的传递规则了。当基本数据类型作为参数的时候,其实只是传递过去了自己的值的副本,也就是说,无论你在方法中如何操作,操作的都是他本身值的副本,所以不管你是如何操作的,最终都不会影响到基本数据类型他的真身。
这里可能就会有人问,那怎样才能操作他的真身呢?其实很简单,本篇文章讲的只是说,基本数据类型作为方法的参数的时候传递的副本,所以要想直接操作他的真身,那就是直接操作这个基本数据类型,而不是将其作为方法的参数,在方法内部改变他。让基本数据类型作为方法的参数,然后在方法中操作这个参数,不可能对真身产生任何影响。
2.引用数据类型的传递规则
首先看一段代码
public class Compare {public static void main(String[] args) {int[] b={2,5,6};temp(b);System.out.println(b[0]);}public static void temp(int[] a){a[0] = 100;}}
运行结果:
100
因此可以看出引用数据类型作为方法的参数时,是地址传递,对参数的操作能够直接影响他的真实的值。
3.结论
基本数据类型作为参数时,传递的仅仅是自己的一个副本,因此在方法中对参数的操作,不能影响原来的值。
引用数据类型作为参数时,传递的是自己的引用地址,因此在方法中对参数的操作,能够影响原来的值。
阅读全文
1 0
- java中的参数传递(值传递等)
- Java中的值传递和引用传递(参数传递)
- java中的参数传递-值传递、引用传递
- java中的参数传递-值传递、引用传递
- c++中的参数传递(值传递和引用传递)
- java中的参数传递
- java中的参数传递
- Java中的参数传递
- java中的参数传递
- Java中的参数传递
- java中的参数传递
- java中的参数传递
- JAVA中的参数传递
- java中的参数传递
- Java 中的参数传递
- java中的参数传递
- Java中的参数传递
- java中的参数传递
- mysql底层
- 一、安装Windows系统需要系统镜像和软件的准备
- ajax+json进行数据传输请求(ssm框架)
- 直接进入spring下载页
- java 中==和equals区别详解
- java中的参数传递(值传递等)
- Bargaining Table
- centos7 二进制安装包安装 mysql5.6
- 微信小程序中设置全局变量
- numpy_operations(Numberical operations on arrays)
- 300.11文件的创建和移动
- Leetcode 152-MaximumProductSubarray 解题报告
- UVa1630 Folding 记忆化搜索
- 何为语法糖?