Java学习第二十五天<方法重载><可变参数><作用域基本使用>

方法重载

  1. 方法名必须相同

  2. 形参列表(类型,个数,顺序至少一样)必须不同,否则重定义

  3. 返回类型无要求

package chapter06.D6方法重载;
​
public class OverLoadExercise {
    public static void main(String[] args) {
        Methods method = new Methods();
        method.m(10);//100
        method.m(10,20);
        method.m("征途");
    }
}
class Methods{
    public void m (int n){
        System.out.println("平方="+(n*n));
    }
    public void m (int n1,int n2){
        System.out.println("相乘="+(n1*n2));
    }
    public void m (String str){
        System.out.println("传入的str="+str);
    }
}

package chapter06.D6方法重载;
​
public class OverloadExercise2 {
    public static void main(String[] args) {
        Methods2 methods2 = new Methods2();
        System.out.println(methods2.max(10,24));
        System.out.println(methods2.max(10,24,21.4));//自动转化
    }
}
class Methods2{
    public int max(int n1,int n2){
        return n1>n2?n1:n2;
    }
    public double max(double n1,double n2){
        return n1>n2?n1:n2;
    }
    public double max(double n1,double n2,double n3){
       double max1=n1>n2?n1:n2;
        return max1>n3?max1:n3;
    }
}

可变参数

package chapter06.D7可变参数;
​
public class VarParameter {
    public static void main(String[] args) {
        Method m = new Method();
        System.out.println(m.sum(1,5,6));
​
    }
}
class Method{
    public int sum(int...nums){//可变参数,可接受多个int nums当做数组来使用
       /* System.out.println("接收的参数个数="+ nums.length);
       return 25;//return几都行
​
        */
        int res=0;
        for (int i = 0; i < nums.length; i++) {
            res+=nums[i];
        }
        return res;
    }
}

package chapter06.D7可变参数;
​
public class VarParameterDetail {
    public static void main(String[] args) {
        int[]arr={1,2,3};
        T t1 = new T();
        t1.f1(arr);
​
    }
}
class T{
    public void f1(int...nums){//可变参数本质就是数组
        System.out.println("长度="+ nums.length);
    }
    public void f2(String str,double...nums){//可变参数可以和普通类型参数一起放在形参列表,但可变参数要在后,并只能出现一次
        System.out.println("长度="+ nums.length);
    }
}

package chapter06.D7可变参数;
​
public class VarParameterExercise {
    public static void main(String[] args) {
        Method2 hm = new Method2();
        System.out.println(hm.showScore("milan",90.1,80.0));
        System.out.println(hm.showScore("terry",90.1,80.0,60.2,75.6));
​
    }
}
class Method2{
    public String showScore(String name,double...scores){
        double totalScore=0;
        for (int i = 0; i <scores.length ; i++) {
            totalScore +=scores[i];
        }
        return name+" 有 "+scores.length+"门课的成绩总分为="+totalScore;
    }
}

作用域基本使用

package chapter06.D8作用域基本使用;
​
public class VarScope {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.cry();
        cat.eat();
    }
​
}
class Cat{
    int age=10;//全局变量(属性,可赋值,不赋值为默认值),作用域为Cat整个类体
    int salary;
    {
        int num=100;//局部变量,无默认值,作用在代码块中
    }
​
    public void cry(){
        int n=10 ;//局部变量,必须赋值,作用域在cry方法中
        String name="jack";//局部变量
        System.out.println("在cry中使用属性 age="+age);
        System.out.println("cry局部变量 n="+n);
    }
   public void eat(){
        System.out.println("在eat中使用属性 age="+age);//name,num就不能用
       System.out.println("在eat中使用属性 salary="+salary);
    }
}

package chapter06.D8作用域基本使用;
​
public class VarScopeDetails {
    public static void main(String[] args) {
        Person p1 = new Person();
        p1.say();//当执行say方法时 say方法的局部变量如name会创建,say执行完后name局部变量就销毁,但属性(全局变量)还可用
        System.out.println(p1.name);
        T t = new T();
        t.test();
        t.test2(p1);
​
​
    }
}
class Person{
    public int age=20;//属性可以加修饰符 protected private
    String name="jack";
    public void say(){
        //细节 属性和局部变量可以重名,访问时遵循就近原则
        String name = "king";//局部变量不能加修饰符
        System.out.println("say()name="+name);//king
    }
    public void hi(){
        String address="北京";
        String name="上海";
​
    }
}
class T{
    public void test(){
        Person p1 = new Person();
        System.out.println(p1.name);//new别的类以后可以使用别的类属性
    }
    public void test2(Person p){
        System.out.println(p.name);//也可传别的类的对象来使用属性
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值