在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
我们都知道,按值传递和引用传递是Java的两种方法参数传递方式。本文将针对按值传递和引用传递分别是什么,没有改变对象的值的原因等一系列问题,进行解答。
问题一:按值传递是什么?
参数类型是int,long等基本数据类型(八大基本数据类型),参数传递的过程采用值拷贝的方式。
代码片段:
public class Test {
public static void main(String[] args) {
int a = 5;
fun(a);
System.out.println(a);// 输出结果为5
}
private static void fun(int a) {
a += 1;
}
}
问题二:引用传递是什么?
参数类型为引用类型,参数传递的过程采用拷贝引用的方式。
代码片段:
public class Test {
public static void main(String[] args) {
A a = new A(5);
fun(a);
System.out.println(a.a);// 输出结果为6
}
private static void fun(A a) {
a.a += 1;
}
static class A {
public int a;
public A(int a) {
this.a = a;
}
}
}
问题三:明明是引用传递,为什么没有改变对象的值呢?
代码片段:
public class Test {
public static void main(String[] args) {
Integer a = 5;
fun(a);
System.out.println(a);// 输出结果为5
}
private static void fun(Integer a) {
a += 1;
}
}
因为这里其实使用了基本数据类型封装类的自动装箱功能。
Integer a = 5,编译后实际为Integer a = Integer.valueOf(5),查看Integer的源码,并没有改变原对象的值,只是将其引用指向了另一个对象。
以上就是关于Java参数传递方式问题的全部解答,还有大家都明白了吗?不明白的话可以就这些问题问一下博学谷的线上老师。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Docker开发教程学习资源
Docker开发教程学习资源,需要学习Docker概览、Docker版本与安装介绍、Docker核心技术之镜像、Docker核心技术之容器、Docker核心技术之容器与镜像、Docker核心技术之数据卷、Docker核心技术之仓库、Docker核心技术之Dockerfile、Docker核心技术之Docker-Compose。
4918
2019-11-11 19:14:44
2019年Spring Boot面试题集合附答案
相信所有Java开发者都认同,在微服务中,Spring Boot是最好的Java框架。Spring Boot自身最大的优势就是简化配置,可以说它真正实现了自动化配置。因此大家要想做好Java开发,给大家的建议就是成为Spring Boot的高手。本文为大家整理了2019年最新的Spring Boot面试题和答案,如果大家能够好好做一做这份面试题集合,相信面试一定手到擒来。
6948
2019-12-20 18:05:36
Lombok安装和使用介绍
在Java开发的过程中,当我们想减少重复工作提高生产效率的时候,不妨考虑一下Lombok。本文将手把手带大家下载安装Lombok,要知道使用lombok必须先安装,不然IDE则无法解析。除此之外,本文还将向大家详细介绍Lombok的定义和使用。希望帮助大家更好的掌握Lombok,提高Java开发工作的效率。
4720
2020-03-31 17:51:52
Java学习如何提升学习效率?
Java学习如何提升学习效率?刚刚接触Java的同学估计有满脑子的困惑,Java的体系结构异常庞大,很多刚接触的朋友学着学着就不知道自己的路线是什么,不知道如何进行学习路线规划,也不知道学习什么内容可以找到相关的工作等。
4966
2020-06-17 14:58:23
Java学习看什么书比较好?
虽然视频学习资料是许多人入门或提升编程的首选,但是书籍材料对学习者来讲,也是必须要看的。尤其对于处在不同能力阶段的人来讲,选择适合自己学习的书尤为重要。那么,Java学习看什么书比较好呢?下面本文会按照基础入门和进阶提升两个方面,推荐适合各个能力阶段学习的书籍。
4716
2020-07-10 10:40:20