java中的方法使用及调用

方法

方法的作用:

解决代码重复的问题,对某个特定的代码进行封装
1.谁能用
2.返回的是什么,返回值的类型
3.方法的名称,通过什么来调用
4.该功能需要什么东西,形式参数*/

方法定义:

​ 1.public static,修饰符,谁都可以用
​ 2.void,没有返回,int,返回值是int
​ 3.main,方法名,标识符.和变量的规范一样,首字母小写
​ 4.(String[] args),形参列表
​ public static void main(String[] args){}
​ 语法:[修饰符] 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,参数类型 参数n){
​ // 方法体(方法的功能性代码)
​ return 返回值;
​ }

举例:

ublic static int getSum(int x,int y){
    //定义一个方法,并且向里面传入形参
    //如果是void表示不需要返回值,不能接收,没有return
    //如果不是void表示需要返回值,定义变量去接收,有return
    int sum=x+y;//定义一个变量来接收返回值
    return sum;
}
public static void main(String[] args){
    System.out.println(getSum(2,3));//传入实参,,使用getSum方法传入参数,返回结果5
}

注意:

1.方法定义在类中

2.一个类有多个方法

3.方法和方法是平行关系,不能再一个类中定义另一个类,且定义没有先后顺序

方法的调用

语法:

语法格式:返回值类型 变量 = 方法所在类名.方法名(实际参数);

int  result = MethodDemo.getSum(2 , 3);
System.out.println(result);		//输出5
    //需求3:定义一个方法,传入一个int数组,返回指定元素在数组中第一次出现的索引
    //返回值的类型:int
    //形参:int[] arr,int key
    public static int indexOf(int[] arr, int ele) {//定义行数和字符串
        for (int i = 0; i < arr.length; i++) {
            if (ele == arr[i]) {
                return i;//返回数据到调回的地方,同时结束当前方法
            }
        }
        return -1;//没找到时返回-1(索引时>=0)
    }

    public static void main(String[] args) {
        int index = indexOf(new int[]{1, 5, 6, 8, 7, 9}, 7);
        System.out.println(index);
    }

**return返回值注意事项:**一个方法如果需要返回值,应该在任何情况都需要返回,否则报错,不需要使用返回

**判断何时使用return:**如果调用这个方法后,所得到的结果需要使用方法中产生的数据,就需要return,

**实际参数注意事项:**所传入的数据类型应该和方法中定义的数据类型一致,顺序相同

方法的可变参数(使用较少)

是一种语法糖,只有当数据个数不定的时候使用
方法的可变参数其底层是就是一个一维数组类型

在方法中的语法格式为:public static double getTotalprice(数据类型 变量名称,数据类型**(这里没有[])**…变量)

  • 可变参数必须作为方法的最后一个参数,避免多个参数的歧义性

  • 推论:方法最多只有一个可变参数

  • 调用元素时,可以将数组中的元素直接传递,仅限于数组类型

    示例:

    //定义一个方法,传入两个参数,一个double数组表示多个货品的价格,一个double类型的折扣,返回货品总价格(使用可变参数)
    public static double getTotalprice( double cutoff,double... prices) {//数组放在在后面使用,
        double sum = 0.0;
        for (double price : prices) {
            sum += price;
        }
        return sum * cutoff;
    }
    
    public static void main(String[] args) {
        double totalprice = getTotalprice(0.6,12.35, 54.54, 65.58, 87.58, 36.21);//传入实参
        System.out.println(totalprice);
    }
    

方法重载

方法重载的判断原则:两同一不同

两同:多个方法同一个类中,方法名称相同

一不同:参数列表不同(分为:参数类型不同,参数个数不同,参数顺序不同)

方法重载的作用::屏蔽了同一功能的方法由于参数不同所造成方法名称不同。

**注意:**方法重载和方法的返回值类型无关,只是一般要求返回值类型相同。

示例

public static int getSum(int x,int  y){
    return x+y;
    }
    //根据传入参数可以区分
public static double getSum(byte x,int  y){
    return x+y;
}
public static double getSum(double y,int  x){
    return y+x;
}
public static int getSum(int x,int  y,int z){
    return x+y+z;
}

方法参数的值传递机制

含义:方法在调用时把实参的值复制一份给形参的过程

(1)基本类型参数

传递规则:只传递参数类型的值,只会改变被调用方法中的值,不会影响主方法里面的值

示例:

static void change(int x) {//将a的值赋值给x
    System.out.println("change before,x=" + x);//10
    x = 100;// 修改x变量的值=10
    System.out.println("change after,x=" + x);//100
}

    public static void main(String[] args) {
        int a = 10;
        System.out.println("main before,a=" + a);//10
        change(a);
        System.out.println("main after,a=" + a);//10
(2)引用类型参数

传递规则:传递参数所引用的堆空间地址值,即数组原有的地址

其会改变原有数组中的值,因为是地址中的数值被改变了

示例;

static void change(int[] arr) {
    System.out.println("change before,arr[0]=" + arr[0]);//10
    arr[0] = 30;//修改数组中第一个元素的值,该数组的地址没有变,里面只改变了索引0的值
    System.out.println("change after,x[0]=" + arr[0]);//30
}

public static void main(String[] args) {
    int[] a = new int[] { 10, 90 };
    System.out.println("main before,a[0]=" + a[0]);//10
    change(a);//arr[0]中地址的值已经发生了改变,被替换成了30
    System.out.println("main after,a[0]=" + a[0]);//30
}
nt[] a = new int[] { 10, 90 };
    System.out.println("main before,a[0]=" + a[0]);//10
    change(a);//arr[0]中地址的值已经发生了改变,被替换成了30
    System.out.println("main after,a[0]=" + a[0]);//30
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值