Java之方法与方法重载

Java之方法与方法重载

一、方法的参数传递

定义带参方法的结构:

访问修饰符 返回值类型 方法名([参数列表]{
代码;
【return 具体的返回值;】
}

调用带参方法:

对象名.方法名(参数1, 参数2,……,参数n)

实例代码:

package demo;

/**
 * @Author lichangxin
 * @date 2020-07-20
 * @Des
 */

public class TouYingYi {
    void tyy(String computer,boolean isRun){
        if (isRun){
            System.out.println("投影仪接入了"+computer);
        }
    }
    String tyyRe(String computer,boolean isRun){
        if (isRun){
            return "投影仪接入了"+computer;
        }else {
            return "开关未打开";
        }
    }

    public static void main(String[] args) {
        TouYingYi tyy=new TouYingYi();
        tyy.tyy("lcx的电脑",true);
        String rst=tyy.tyyRe("老师的电脑",false);
        System.out.println(rst);
    }
}

常见的错误:
1.调用方法时不能指定实参类型!

//方法定义
public void addName(String name){ 
	//方法体
}

//方法调用
对象名.addName(String  "张三")

2.形参和实参数据类型不一致!数量也要一致!

//方法定义
public boolean searchName(int start ,int end ,String name){
	//方法体
}

//方法调用
String s="开始";
int e=3;
String name="张三";
boolean flag=对象名. searchName(s ,e ,name);

基本数据类型和引用数据类型数据在传参时区别?
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
例如:

public class Test {
         public void calc1(int num){
                  num=num+1;
          }
          public void calc2(Student student){
                  student.age=student.age+1;
          }
}
//测试类
Test test=new Test();
int n=8;
test.calc1(n);
Student stu=new Student();
stu.age=18;
test.calc2(stu);
System.out.println(n+"---"+stu.age);

结果为:

8---19

总结
参数:
基本数据类型做参数时,传递的值,不能出方法的范围
引用数据类型做参数时,传递的是地址,可以影响方法外部
特殊:String做参数时,等同于基本数据类型(不可改变)

二、构造方法

访问修饰符   构造方法名 ( ) { 
       //初始化代码
}

默认每个类都有一个无参构造
如果该类有了有参构造,默认的无参构造不再提供,此时如果还想用无参构造,则需要显示的定义无参构造
代码实例:

public class Dog {
    String name;
    int health;
    int love;
    String strain;
    //默认的无参构造方法
    //一旦有了有参构造,默认的无参构造不在生效
    //就需要显示的写出无参构造


    //有参构造
    public Dog(String name,int health,int love,String strain) {
        //this关键字,指代本类对象
        this.name=name;
        this.health=health;
        this.love=love;
        this.strain=strain;
    }
    void print(){//
        System.out.println("我叫"+name+"品种"+
                strain+health+love);
    }
}
public class TestDog {
    public static void main(String[] args) {
        //构造方法赋值
        Dog dog=new Dog("阿骨打",100,10,"汉");
        dog.print();
    }
}

方法重载:
在同一个类中,方法名相同,参数列表不同(不包含参数名)
在这里插入图片描述
上图即是相同的构造
ps:与访问修饰符和返回值类型无关
同一个类中
方法名相同
参数个数或类型不同
与返回值、访问修饰符无关
this()调用构造方法时,必须在第一条

三、成员变量与局部变量

变量声明的位置决定变量作用域
变量作用域确定可在程序中按变量名访问该变量的区域

方法在不调用的时候没有生成,成员变量先产生

局部变量没有初始值
在这里插入图片描述
成员变量和局部变量的区别:

作用域不同

局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的

初始值不同

Java会给成员变量一个初始值
Java不会给局部变量赋予初始值

注意:在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量;
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值