Java函数、参数及传参方式详解

函数

一、函数的概念:

  • 函数是定义在类中的一段独立的代码块,用来实现某个功能。Java中,函数又被称为方法。方法是用来定义类的功能和作用的,也是用来给类进行赋值和引用。在java中,类最终呈现的功能由方法决定。
  • 函数的主要作用是为了提高代码的复用性。
  • 函数都是在栈内存中运行;运行的函数处在栈顶。
    二、函数格式
修饰符    返回值类型    函数名  (  [    参数类型1 参数名1,参数类型2 参数名2....    ]{
                   //   [    ]    里面表示可选项,即参数不是必须的                   
                   执行语句...                   
                   return  返回值;    
                   //返回值的类型必须与返回值类型一致                    
                   }

注释:

  • 修饰符:可以是访问修饰符,也可以说是函数修饰符(abstract、final、 static、synchronized),还可以是两者的组合。
  • 返回值类型:用于限定函数返回值的数据类型。
  • 参数类型:用于限定调用函数时传递的数据类型。
  • 参数名:是一个变量,用来接收调用方法时传递的数据。
  • return:用来接收方法以及返回函数指定类型的值。
  • 返回值:这个值会返回给函数的调用者。
Java中的参数传递方式

Java中没有真正的引用传递,只有值传递!传引用参数指的还是原来的那个引用,但是Java里面参数类型是对象时是复制了原来的引用到一块新的内存,两者无关。

**1、**按值传递指的是在方法调用时,传递的参数是按值的拷贝传递。

 public class TempTest {
        private void test1(int a){
        // 做点事情
        }
        public static void main(String[] args) {
            TempTest t = new TempTest();
            int a = 3;
            t.test1(a);// 这里传递的参数a就是按值传递
        }
    }

:按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了。

**2、**引用传递指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。

 public class TempTest {
        private void test1(A a){
        }
        public static void main(String[] args) {
            TempTest t = new TempTest();
            A a = new A();
            t.test1(a); //这里传递的参数a就是按引用传递
        }
    }
    class A{
        public int age = 0;
    }

:传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
说明
(1) “在Java里面参数传递都是按值传递” 这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。
(2) 在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java参数”;

Java参数讲解

一、函数使用
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。
实参出现在主函数中,进入被调函数后,实参变量也不能使用。
值参只传递数值,在过程(函数)中对之所进行的改动,不会造成原始变量值的改变. 与之相对的是地址参数,传的是变量地址,所以在函数中的任何改动都会影响到主函数的实际参数

二、调用
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
调用者里面的参数是实参,被调用者里面的参数是形参

三、举例

  1. 比如你定义一个函数public static int add(int a,int b),这里的a和b就是形参。
  2. 当你进行函数调用的时候,System.out.println(1,2),这里的1和2就是实参。
  3. 简单来说就是进行函数调用的时候需要实参从主函数中传给被调用函数中的形参,这样函数才可以执行,实参和形参起到一个桥梁的作用。
    在这里插入图片描述
    在这里插入图片描述

四、扩展延伸

  • 形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
  • 没有形参的函数在形参表的位置应该写void main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

五、两者关系
在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值