方法及方法重载
1.掌握方法的语法定义
权限修饰符 特殊修饰符 返回值类型 方法名(参数列表){
// 方法体
// 如果有返回值类型(只要不是void),那么必须要加上关键字return
[return xxx]
}
方法的分类:
无论什么方法最终一定能够被归类到四类中根据返回值类型和是否有参数列表划分出来的
1.无参无返方法(没有参数(空的),也没有返回值类型void)(往往是很简单的想复用一段代码,没有什么参数接入和值得返回)
public void print(){
}
2.无参有返方法(没有参数(空的),有返回值类型,例如:Scaner,它的nextxxx()方法给你返 回一个结果,这个结果叫返回值)(往往不需要你关注具体的底层实现,只需要关注你想得到的结果)
piblic String print(){
return "xxxxx"
}
3.有参有返方法(有参数(参数类型)),没有返回值类型void(往往是需要你传如一个内容,然后我们帮你在方法内进行的相应的加工处理 这个加工处理不需要给你返回结果)
public void print(String str){
}
4.有参有返方法 有参数也有返回值(往往是你需要给他一些内容,他加工之后,还需要将加工后的结果返还)
public double plus(double num1,double num2){
return num1+num2;
}
方法注意事项:
1.方法声明上的参数列表是形式参数列表,是随便起的名
2.方法在调用时,如果方法声明上有要求传递参数,你就必须按照形式参数列表的类型一一对应传值,这时候你传的值叫做实际参数
3.方法在定义返回值后,如果没有拿变量接收,就收不到返回值
2.方法的参数(传递)
基本数据类型在作为方法的参数传递时,是将数据的值传递过去了,多者之间没有关系
引用数据类型在作为方法传递参数时,是将引用的数据地址传递过去了,多者之间传递的是同一块内存,所以其中一块变化,会导致多有引用得到的结果变化
如何使用带参数的方法
<访问修饰符(public)> 返回类型 <方法名>(<形式参数列表>){
// 方法的主体
}
package cn.FangFaJiFangFaChongZai.www;
public class ZhaZhiJi {
// 方法:榨汁
// 方法定义处,参数叫做形式参数,也叫形参(主要约束参数的类型的)
// 形参名字可以随便取,但是要符合驼峰命名法,同时要有意义
public String zhaZhi(int num,String fruit) {
String zhi = num+"杯"+fruit+"汁";
return zhi;
}
}
调用带参数的方法
对象名.方法名(参数1,参数2,... ...,参数n)
package cn.FangFaJiFangFaChongZai.www;
// 榨汁机测试类
import java.util.Scanner;
public class TestZhaZhiJi {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入你要放入的水果:");
String fruit = input.next();
System.out.print("你要几杯?");
int num = input.nextInt();
ZhaZhiJi one = new ZhaZhiJi();
// 方法调用处,参数叫做实际参数,也叫实参
// 实参名字可以随便取,但是遵循驼峰命名法,同时要有意义
// 实参和形参的类型必须一致,名字可以一致,也可以不一致
// 方法有没有返回值和方法有没有参数没有任何关系
// 方法参数可以有一个,也可以有多个,参数之间用“,”隔开
// 形参和实参数量一定要一致,数据类型一定要一致
String zhi = one.zhaZhi(num, fruit);
System.out.print(zhi);
}
}
3.构造方法
作用:用作于对象初始化
语法:
权限修饰符 类名(参数列表){
// 初始化操作
}
构造方法的注意事项:
1.每个类都被系统赋予了一个默认的无参构造,但是如果你手动构造了一个带参构造方法,系统就不再赋予无参构造方法了
2.构造方法没有返回值类型,构造方法的方法名必须和类名完全一致
4.this
当方法声明上的参数名(局部变量)和成员变量名相同时,会采用就近原则,局部变量优先,
所以这时候我们为了区分局部变量和成员变量可以给成员变量前加上this
this调用构造方法必须放在有效代码的第一行
this(); // 调用无参构造
5.方法重载
方法重载(overload):发生在一个类中,出现的方法名相同,参数列表不同
为什么与返回值类型无关:
构造方法没有返回值类型,但是也能构成方法重载,所以方法的重载和返回值类型无关
float max(int num1,int num2);
int max(int num1,int num2);
// 如果调用max方法 无法知道调用的是谁
max(10,20)
什么样的才叫参数列表不同?
参数列表个数不一致
float method1(int num1,int num2);
int method1(int num1);
参数列表的数据类型不同
float method1(int num1,String num2);
float method1(int num1,int num2);
参数列表的位置不同
float method1(String num1,int num2);
float method1(int num1,String num2);
掌握成员变量和局部变量的区别:
1.初始值不同
成员变量有初始值,局部变量没有初始值,如果不赋初始值,不能使用
2.位置不同
成员变量定义在方法外
局部变量定义在类中方法内。(方法声明上的形参或者方法体中)
3.生命周期不同
成员变量是随着对象的创建而产生,随着对象的销毁而消失
局部变量是随着方法的亚栈而产生,随着方法的弹栈而消失
4.作用域不同
成员变量的作用域是整个类
局部变脸的作用域是在定义它的方法内