• java方法参数传递面试题


    传值还是传引用是Java中很基础的一个问题,也是笔试的时候经常被考察的一个问题,总结一下。

    题目1: 写出以下程序的输出内容。

    public class Test {
    
    public static void changeValue(int value){
    value = 0;
    }
    
    public static void main(String[] args) {
    int value = 2010;
    changeValue(value);
    System.out.println(value);
    }
    }

    求输出结果。

    答案:

    2010

    这个题目考察了java方法的参数传递问题。java中方法的参数传递为值传递,不管这个参数是基本类型还是引用类型,我们传递过去的都是该值的一个副本,这个副本作为方法的局部变量保存在栈(stack)中。

    对于上面的 changeValue() 方法,传递进来的是变量 value 的一个副本,在 changeValue() 方法中修改的只是该方法的一个局部变量,不会影响作为参数传进来的那个变量,两者井水不犯河水。

    题目2: 写出以下程序的输出内容。

    public class Test {
    
    public static void changList(List list){
    list.add("bbb");
    }
    
    public static void main(String[] args) {
    List list = new ArrayList();
    list.add("aaa");
    changList(list);
    System.out.println(list.size());
    }
    
    }

    答案:

    2

    说明:
    main()方法在调用changeList()方法的时候,changList()方法中的list变量是main()方法list变量的副本,这两个list变量都指向heap中的同一ArrayList对象,因此操作的也是同一对象。

    题目3:写出以下程序的输出内容。

    public class Test {
    
    public static void changString(String str){
    str = str + "bbb";
    }
    
    public static void main(String[] args) {
    String str = "aaa";
    changeString(str);
    System.out.println(str);
    }
    
    }

    答案:

    aaa

    说明:
    changString()方法仅仅使本地变量str指向了一个全新的字符串对象”aaabbb”,对main()方法中的str变量没有任何影响。

    对java方法参数传递的总结:

    基础数据类型(int,char,……)传值,对象类型(Object,数组,容器……)传引用。

    有说java方法参数都是传值的,理解方式不同而已。引用本身也是值(对象地址)。

    传值方式,传递的是值的副本。方法中对副本的修改,不会影响到调用方。

    传引用方式,传递的是引用的副本。此时,形参和实参指向同一个内存地址。对引用副本所指向的对象的修改,如修改对象属性、容器内容等,会影响到调用方。对引用副本本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。

    只要知道传引用时,也是传递的引用的副本,就比较容易理解了。

  • 相关阅读:
    HDU 3436 Queuejumpers
    POJ 3580 SuperMemo
    HDU 2871 Memory Control
    Android 实现显示文字的Gallery
    Android 使用地图
    Android 深入的研究一下蓝牙
    手机录制视频demo
    用android来实现图片的绘制以及旋转缩放案例分析
    TextView 自动滚动(跑马灯)
    Android腾讯微博客户端开发一:在下方的Tab的实现
  • 原文地址:https://www.cnblogs.com/liukedong/p/6985650.html
Copyright © 2020-2023  润新知