第八章、JavaSE专题之成员方法参数及重载&局部变量

1、传参机制

  • 形参:方法的参数定义;实参:方法的参数传递;
修饰符 返回值类型 方法名称(参数类型 参数名称;...){
	方法体
	return 返回值;
}
  • 范例:
public class hello{
    public static void main(String[] args) {
        int n1 = 1;
        int n2 = 2;
        AA a = new AA();
        System.out.println("传参1");
        a.add(1,2);
        System.out.println("传参2");
        System.out.println(a.add(1,2));
        System.out.println("传参3");
        System.out.println(a.add(n1,n2));

    }
}

class AA {
    public int add(int x, int y){
        int z;
        z = x + y;
       return z;
    };
}
  • 调用方式

(1)单独调用:没有打印输出

add(1,2);

(2)打印调用:结果打印输出

System.out.println(add(1,2));

(3)赋值调用

int x = 1;
int y = 2;
System.out.println(add(x,y));
  • 运行结果

在这里插入图片描述

  • 附加1:累加练习题
public static int getSum(){
    int result = 0;
    for (int k=1;k<=100;k++){
        result += k;
    }
    return result;
}

getSum();
  • 附加2:比较练习题
public static int getmax(int x,int y){
        if (x>y){
            return x;
        }
        else if(x<y){
            return y;
        }
        else{
            return x;
        }
    }

System.out.println(getmax(1,2));
  • 附加3:打印指定字符串
public static void printCount(int num){
    for (int i=1;i<=num;i++){
        System.out.println("hello"+(i+1));
    }
}

printCount(2);

2、可变参数

  • 含义:传递参数的个数不定
  • 使用细节
1、可变参数实参可以为0个;
2、可变参数实参可为数组;
3、可变参数可以和普通类型参数一起放在形参列表,但必须保证可变参数放在最后
4、一个形参列表:普通类型可以有多个,可变参数只能有一个
  • 范例
public class hello{
    public static void main(String[] args) {

        AA a = new AA();
        System.out.println("两个参数add方法运行结果:"+a.add(1,2));
        System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));
        System.out.println("四个参数add方法运行结果:"+a.add(1,2,3,4));

    }
}
class AA {
    public int add(int... n){
        int res = 0;
        System.out.println("可变参数个数:"+n.length);
        for (int i=0;i<n.length;i++){
            res += 1;
        }
        return res;
    };
}
  • 运行结果

在这里插入图片描述

3、属性&局部变量

(1)局部变量和全局变量的区别
①局部变量和全局变量:
局部变量:一般是指在成员方法(及代码块)中定义的变量,即类属性之外的变量
全局变量:类的属性
②赋值:
全局变量可以不赋值,有默认值
局部变量必须赋值,没有默认值
③作用域:
全局变量:作用域为整个类体;
局部变量:作用域为方法体中;

  • 范例
public class hello {
    public static void main(String[] args) {
        dog dog1 = new dog();
        System.out.println("全局变量name:"+dog1.name);
        System.out.println("全局变量age:"+dog1.age);
        System.out.println("全局变量sal:"+dog1.sal);
        dog1.cry();
    }
}

class dog {
    //全局变量:即属性,作用域为整个类体
    //属性在定义时,可以不赋值,有默认值
    String name = "小花";
    int age;
    double sal;

    public void cry(){
        //1、局部变量一般实在成员方法中定义的变量
        //2、n和name就是局部变量
        //3、n和name作用域在cry方法中
        int n = 10;
        double d = 1.2;
        System.out.println("局部变量n:"+n);
        System.out.println("全局变量name:"+name);
        System.out.println("局部变量:"+d);
    }
}
  • 运行结果

在这里插入图片描述

(2)作用域注意事项

  • 作用域

属性和局部变量可以重名,访问时遵循就近原则
②在同一个作用域中,比如一个成员方法中,两个局部变量不能重名
③生命周期
属性的生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡;
局部变量的生命周期较短,伴随着代码块的执行而创建,伴随着代码块的死亡而死亡;
④作用域范围不同
全局变量:可以被本类使用,或者其他类使用(通过对象调用),所以可以加修饰符;
局部变量:只能在本类中对应的方法中使用,不可以加修饰符;

⑤修饰符不同

​ 全局变量:可以加修饰符

​ 局部变量:不可以加修饰符

  • 范例
public class hello {
    public static void main(String[] args) {
        dog dog1 = new dog();
        System.out.println("全局变量name:"+dog1.name);
        dog1.cry();
    }
}

class dog {
    String name = "小花";

    public void cry(){
        String name = "小白";
        System.out.println("局部变量name:"+name);
    }
}
  • 运行结果

在这里插入图片描述

4、成员方法重载

4.1、重载定义

  • 重载:在同一个类中,方法同名,但是形参列表不同
  • 范例
public class hello{
    public static void main(String[] args) {

        AA a = new AA();
        System.out.println("两个参数add方法运行结果:"+a.add(1,2));
        System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));

    }
}

class AA {
    public int add(int x, int y){
        int z;
        z = x + y;
       return z;
    };
    public int add(int x,int y,int z){
        int num;
        num = x + y + z;
        return num;
    };
}
  • 运行结果

在这里插入图片描述

4.2、重载使用细节
  • 重载使用细节

    • ①方法名:必须相同
    • ②形参列表:必须不同(形参类型或个数,至少有一样不同,参数名无要求)
  • 范例

public class hello{
    public static void main(String[] args) {

        AA a = new AA();
        System.out.println("两个参数add方法运行结果:"+a.add(1,2));
        System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));
        System.out.println("两个参数类型为String的运行结果:"+a.add("hello","word"));

    }
}
class AA {
    public int add(int x, int y){
        int z;
        z = x + y;
       return z;
    };
    // 1、参数个数不同
    public int add(int x,int y,int z){
        int num;
        num = x + y + z;
        return num;
    };
    // 2、参数类型不同
    public String add(String x, String y){
        String z;
        z = x + y;
        return z;
    };
}
  • 运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随缘清风殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值