在线客服
扫描二维码
下载博学谷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参数传递方式问题的全部解答,还有大家都明白了吗?不明白的话可以就这些问题问一下博学谷的线上老师。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础怎么学Java?小白学习Java的路线
如今,Java作为最流行的编程语言,吸引着越来越多的人学习。而这些初学者中不乏有零基础的小白,大家在学习的一开始,就难免面临这样的问题:零基础怎么学Java?为了解决大家的困扰,小编在这里从书籍,视频,项目和基础知识,来介绍小白学习Java的路线。
7205
2019-07-29 10:47:00
零基础自学Java需要从什么地方开始?
零基础自学Java需要从什么地方开始?事实上,对于完全零基础的学习者来说,自学Java是不太现实的,毕竟编程语言的自学还是很大的难度。如果大家实在不想去线下的培训班,最好还是报一个在线教育的课程进行自学。只有具备了合适的学习方案和老师的指导,才能少走很多弯路,更加高效的学习。
5505
2019-10-11 18:28:50
零基础去报Java培训班能学会吗?
通常理解能力没有问题都能学得会,培训机构的Java课程大纲不断更新与企业需求相匹配,零基础学习需要6个月左右,Java培训班有讲师系统授课,学院按照课程安排从基础知识,由浅入深学习学完可以具备Java相关岗位的技能。
4311
2021-03-31 14:34:07
Spring框架实现依赖注入操作步骤解析
Dependency Injection是spring框架核心 ioc 的具体实现。程序在编写时通过控制反转把对象的创建交给了spring,但是代码中不可能出现没有依赖的情况。ioc 解耦只是降低他们的依赖关系但不会消除,坐等框架把持久层对象传入业务层而不用我们自己去获取。
5110
2021-05-24 11:31:52
Java入门简单小游戏有哪些?
适合新手练习的小游戏有超级玛丽、愤怒的小鸟、飞机大战、五子棋、彩虹雨、聊天室、华容道、坦克大战、扫雷等。还有贪吃蛇,由Java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手锻炼自己的编程能力。
7033
2021-05-28 10:48:45
