• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 Java参数传递方式问题 干货解答

发布时间:2019-08-08 17:55:02 浏览 6134 来源:博学谷资讯 作者:照照

    我们都知道,按值传递和引用传递是Java的两种方法参数传递方式。本文将针对按值传递和引用传递分别是什么,没有改变对象的值的原因等一系列问题,进行解答。

     

    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开发是什么意思?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码