0
点赞
收藏
分享

微信扫一扫

第八章 JavaSE专题之成员方法&局部变量

橙子好吃吗 2022-02-07 阅读 116

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;
    };
}
  • 运行结果

在这里插入图片描述

举报

相关推荐

0 条评论