zoukankan      html  css  js  c++  java
  • 形式参数和实际参数的区别

    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

    中国男儿当自强不息,厚德载物。
  • 相关阅读:
    Northwind数据库下载地址
    MSSQL跨服务访问数据库
    MSSQL基于一致性的I/O错误,解决方法之一
    DataGridView单元格ComboBox控件添加事件
    线程安全类 跨线程修改窗体UI
    数据库字段名
    SELECT INTO 和 INSERT INTO SELECT
    链表
    因为数据库正在使用,所以无法获得对数据库的独占访问权
    代替游标的循环
  • 原文地址:https://www.cnblogs.com/zhznb/p/9210770.html
Copyright © 2011-2022 走看看