方法的基本定义和使用
1.方法的概念
方法:方法也叫函数,就是用来解决一类问题的代码的有序组合,是一个功能模块。(个人通俗的理解就好比一个数据加工处理工具,把原始数据给放进去加工处理然后得出我想要的节果。)
2.方法的基本定义
//语法:
[访问修饰符] [普通修饰符] 返回值数据类型 方法名(形参列表){
方法体;
}
方法的组成 | |
---|---|
访问修饰符 | public,protected,friendly(默认,缺省的),private |
普通修饰符 | [static 静态] final(最终的) synchornized(同步) |
返回值数据类型 | 1. 无返回值 void (Void) 2.有返回值类型(任意数据类型都可) |
方法名 | 规范: 小写驼峰命名标识符 |
形参列表 | 1.无参 2.有参 (1个或者多个或者可变参数)使用,隔开 |
方法体 | 逻辑代码 |
结合返回值和形式参数进行划分,可以把方法大致分为无参无返回值方法,有参无返回值方法,无参有返回值方法,有参有返回值方法这四种。
注意:
1.访问修饰符也可以省略,省略的话就是默认的访问修饰符friendly
2.因为Java中方法可以重载所以,当方法名一样时,程序通过形参列表的不同来区分同名的方法。
3.方法在java文件里面,方法与方法是平级的。
3.创捷方法时的注意事项
- 如果方法的返回类型为
void
,则方法中不能使用return
返回值! - 方法的返回值最多只能有一个,不能返回多个值。
- 方法返回值的类型必须兼容,例如,如果返回值类型为
int
,则不能返回String
型值。 - 当方法参数有多个时,多个参数间以逗号分隔。
- 方法的参数可以是基本数据类型,如
int
、double
等,也可以是引用数据类型,如String
、数组
等。
4.调用方法时的注意事项
- 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应。
- 调用方法时,实参不需要指定数据类型
4.方法的分类
(1)无参无返回值方法
方法的返回类型为 void表示返回值为空,参数列表为空。
/**
* @标题: 章节6
* @项目名 例题1
* @项目描述: 创建一个holleWorld()的无参无返回值方法,调用后输出“你好,世界!”
* @创建人 yaojiawen
* @创建时间 2021/4/1619:31
*/
public class LiTi1 {
//创建方法holleWorld
static void holleWorld() {
System.out.println("你好,世界!");
}
public static void main(String[] args) {
holleWorld();
}
}
(2)有参无返回值方法
方法的返回类型为 void表示返回值为空,参数列表有一个或多个。
import java.util.Scanner;
/**
* @标题: 章节6
* @项目名 例题2
* @项目描述: 创建一个max(int a, int b)的无参有返回值方法,输入两个数调用max方法后比较两个数的大小,然后输出最大的值。
* @创建人 yaojiawen
* @创建时间 2021/4/1714:58
*/
public class LiTi2 {
static void max(int a, int b) {
int max = a > b ? a : b;
System.out.println("最大值为:" + max);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1 = input.nextInt();
int num2 = input.nextInt();
max(num1, num2);
}
}
(3)无参有返回值方法
方法返回值的类型为retuen的返回值类型,参数列表为空。
import java.util.Scanner;
/**
* @标题: 章节6
* @项目名 例题3
* @项目描述: 创建一个pingJuenZhi()的无参有返回值方法,调用后输入三个数然后返回一个平均值
* @创建人 yaojiawen
* @创建时间 2021/4/1715:47
*/
public class LiTi3 {
static double pingJuenZhi() {
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble();
double pingJuen = (a + b + c) / 3;
return pingJuen;
}
public static void main(String[] args) {
System.out.println("平均值为:" + pingJuenZhi());
}
}
(4)有参有返回值方法
方法返回值的类型为retuen的返回值类型,参数列表有一个或多个。
/**
* @标题: 章节6
* @项目名 例题4
* @项目描述: 创建一个test(String name, String password)的用户名,密码验证的方法,正确则返回true,错误则返回false。
* @创建人 yaojiawen
* @创建时间 2021/4/1715:57
*/
public class LiTi4 {
//用户名密码判断方法test
static boolean test(String name, String password) {
String yongHu = "admin";
String miMa = "123456";
boolean panduan = false;
if (yongHu.equals(name) && miMa.equals(password))
panduan = true;
return panduan;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入用户名:");
String name = input.next();
System.out.println("输入密码:");
String password = input.next();
if (test(name, password))
System.out.println("输入正确!");
else System.out.println("输入错误!");
}
}
5.java可变长参数
当某一部分相同类型参数个数不确定时,方法定义中可以使用可变长参数来传递不确定的参数。(感觉有点像数组)
使用语法
数据类型... 变量名
使用时的注意事项
- 在具有可变长参数的方法中可以把参数当成数组使用,例如用foreach循环输出所有的参数值。
- 每个方法最多一个变长参数,并且该参数的位置是方法的的最后。
- 调用的时候可以给出任意多个参数也可不给参数。
- 应尽量避免带有可变长参数的方法重载。
- 如果当有可变长参数的方法重载,那么优先调用固定参数个数的方法。
/**
* @标题: 章节6
* @项目名 例题4
* @项目描述: 创建一个方法将不确定个数的字符串相连接并返回一个连接后的新字符串。
* @创建人 yaojiawen
* @创建时间 2021/4/1717:01
*/
public class LiTi5 {
static String lianJei(String... a) {
String shu = "";
for (String b : a) {
shu += b + " ";
}
return shu;
}
public static void main(String[] args) {
String a = "大伙";
String b = "起飞!";
System.out.println(lianJei(a, b));
}
}
6.方法的重载
方法的重载:如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、顺序或类型不同的方法。
(简化为)方法重载:在同一个类中,方法名相同,参数类型不同。
注:当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。
判断方法重载的依据:
- 必须是在同一个类中。
- 方法名相同。
- 方法参数的个数、顺序或类型不同。
- 与方法的修饰符或返回值没有关系。
/**
* @标题: 章节6
* @项目名 例题4
* @项目描述: 创建一个方法将不确定个数的字符串相连接并返回一个连接后的新字符串,再重载这个方法当参数只有一个时字符串连接“新的一天!”并输出!
* @创建人 yaojiawen
* @创建时间 2021/4/1717:51
*/
public class LITi6 {
static String lianJei(String... a) {
String shu = "";
for (String b : a) {
shu += b + " ";
}
return shu;
}
static String lianJei(String a){
String shu="新的一天!";
return shu+=a;
}
public static void main(String[] args) {
String a = "起飞";
String b = "大伙!";
System.out.println(lianJei(a, b)); //这调用lianJei(String... a)
System.out.println(lianJei(a)); //这调用lianJei(String a)
}
}