形式参数和实际参数的区别

int max(int a, int b)
{
 函数体...;
 a...;
 b...;
}
此处的a,b就是形式参数,形参的作用域只在函数max内有效,max外不识别,在函数运行的时候并不给形式参数分配内存;
当我们在其他函数中(如main函数)调用max函数时,如 result = max(x, y);
此处的x,y就是实际参数,运行的时候将x的值传递给a,y的值传递给b,系统需要给x,y分配内存地址,其作用域范围为调用函数中。

 

 

 

 

注:也就是说:形式参数就是 方法中的抽象的 公用的参数,实际参数就是具体赋值的参数

 

 

延伸:形式参数:
 *         基本类型:形式参数的改变不影响实际参数
 *         引用类型:形式参数的改变直接影响实际参数
 * 
 * 注意:
 *         String作为参数传递,效果和基本类型作为参数传递是一样的。

 

 

eg:package cn.itcast_08;

/*
 * 面试题:
 * 1:String,StringBuffer,StringBuilder的区别?
 * A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
 * B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高
 * 
 * 2:StringBuffer和数组的区别?
 * 二者都可以看出是一个容器,装其他的数据。
 * 但是呢,StringBuffer的数据最终是一个字符串数据。
 * 而数组可以放置多种数据,但必须是同一种数据类型的。
 * 
 * 3:形式参数问题
 * String作为参数传递
 * StringBuffer作为参数传递 
 * 
 * 形式参数:
 *         基本类型:形式参数的改变不影响实际参数
 *         引用类型:形式参数的改变直接影响实际参数
 * 
 * 注意:
 *         String作为参数传递,效果和基本类型作为参数传递是一样的。
 */
public class StringBufferDemo {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "world";
        System.out.println(s1 + "---" + s2);// hello---world
        change(s1, s2);
        System.out.println(s1 + "---" + s2);// hello---world

        StringBuffer sb1 = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        System.out.println(sb1 + "---" + sb2);// hello---world
        change(sb1, sb2);
        System.out.println(sb1 + "---" + sb2);// hello---worldworld

    }

    public static void change(StringBuffer sb1, StringBuffer sb2) {
        sb1 = sb2;
        sb2.append(sb1);
    }

    public static void change(String s1, String s2) {
        s1 = s2;
        s2 = s1 + s2;
    }
}
转载出处:https://blog.csdn.net/u012102536/article/details/53171809

posted @ 2018-06-21 20:05  一框一吉后三告  阅读(912)  评论(0编辑  收藏  举报