1.什么是方法:
Java方法是一个语句的集合,封装了一段逻辑,实现一个行为(功能)
2.使用方法的优点:
将代码进行封装,可以简化代码的冗余度,重复调用。
3.方法定义的格式:
修饰符 返回值类型 方法名(参数列表){
方法体;
}
1)方法名:
方法的名字的第一个单词应该以小写字母为开头,后面的单词则用大写字母开头。
2)修饰符:
包括权限修饰符(public,protected、default(不写权限修饰符时,默认是这个)、private)
其他的常用修饰符static 、abstract等
3)返回值类型:void、八大基础数据类型、引用数据类型
当返回值类型为void时,return可写可不写;
当返回值类型不为void时,return后面必须有返回值。
4)参数列表:方法的参数类型、顺序和参数的个数
形参:方法的参数列表内声明的参数
形参符合变量的声明格式,它在定义期间没有具体值,起到了限制、规定的作用,在编写方法体时,可以直接进行使用。
方法内可以不写任何参数。
当方法被调用时,传递值给参数。
5)方法体:方法体中写方法的逻辑
一般都存在return关键字(结束方法),当返回值类型为void时,return可省略;
4.方法的调用:
当方法的返回值类型为void时,直接调用方法;
当方法的返回值类型不为void时,方法可以当成一个值使用。
实例1:
//main方法被JVM调用
public static void main(String[] args) {
int i = 5;
int j = 10;
//调用max2方法,使用max接收返回值
int max = max(i,j);//i,j为实参,分别为形参a,b赋值
//将结果输出到控制台
System.out.println("(max) "+i+"和"+j+"的最大值为:"+max);
//调用max2方法
max2(i,j);
}
/**使用max方法返回俩个整数的最大值*/
public static int max(int a,int b){
return a>b?a:b;
}
/**使用max2方法返回俩个整数的最大值,并将结果输出到控制台*/
public static void max2(int a,int b){
System.out.println("(max2) "+a+"和"+b+"的最大值为:"+(a>b?a:b));
// return;//因为返回值类型为void,所以return可写可不写;
}
结果:
(max1) 5和10的最大值为:10
(max2) 5和10的最大值为:10
5.方法的重载:
在一个类中,方法名相同,参数类型列表不一样(与返回值,修饰符无关),当调用方法时,根据传入参数的不同,自动匹配相应的方法。
方法重载是编译时多态,在编译时确定方法签名(方法签名由方法名+形参列表构成,也就是说,方法名和形参可以唯一确定一个方法,与方法的返回值没有任何关系)
方法重载的意义:当我们需要返回3个整数的最大值,或者需要返回2个小数的最大值,实例1的max方法不能满足我们的需求,这个时候就需要重载。
public static void main(String[] args) {
int i = 5;
int j = 10;
int z = 8;
double d1 = 5.4;
double d2 = 3.8;
//自动匹配相对应的方法
System.out.println(i+"和"+j+"的最大值为:"+max(i,j));
System.out.println(d1+"和"+d2+"的最大值为:"+max(d1,d2));
System.out.println(i+","+j+"和"+z+"的最大值为:"+max(i,j,z));
}
public static int max(int a,int b){
return a>b?a:b;
}
public static int max(int a,int b,int c){
int max = a>b?a:b;
max = c>max?c:max;
return max;
}
public static double max(double a,double b){
return a>b?a:b;
}
6.构造方法:
1)构造方法的方法名必须与类名相同
2)构造方法没有返回值类型(不能定义为void),就是在方法名前不加方法类型
3)类中必须存在构造方法,可以手动提供;如果不进行提供,系统会默认声明一个无参构造方法。 (一旦提供了构造方法,默认无参构造方法不在提供)
4)当使用"new 类型名()"时,就是在调用构造方法,进行实例化。
5)构造方法可以进行重载。
class people {
public int id;
public String name;
public int age;
public boolean sex;//true为男,false为女
//如果不提供构造方法,系统会自动提供此构造方法
people(){
}
//构造方法可以重载
people(int id, String name, int age, boolean sex) {
/*
* 1.调用父类无参构造方法
* 2.先执行父类构造方法,在执行自己构造方法的逻辑,
* 所以super()只能写在第一行,写在后面会报错
* 3.不写的时候,系统会默认调用父类的一个构造方法(一般调用无参构造方法)
*/
super();
//构造方法的作用一般是:初始化成员变量
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
}
7.可变参数
1)自从JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
2)一个方法只能指定一个可变参数,而且必须方法的最后一个参数。
public static void main(String[] args) {
max(5,0,-3,18,5);
max();
max(1,3,6,8,9,0,-3);
}
public static void max(int... nums){
if(nums.length == 0){
System.out.println("没有数值");
return;
}
int max=nums[0];
for(int i:nums){
if(i>max){
max = i;
}
}
System.out.println("最大值为:"+max);
return;
}
最大值为:18
没有数值
最大值为:9