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不会给局部变量赋予初始值
注意:在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量;
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级