2. 实现优化打印诗句方法:一系列代码指令的集合,用来解决特定的问题,可以重复使用(调用)
格式:public static void 方法名(){// 书写方法的逻辑代码}
位置:与main方法平级
方法的优点:简化代码书写,提高程序的复用性,扩展性,可维护性
以现有知识,至少使用两种方式打印诗句
问题:以下代码实现 了我们需要的效果,但是有一些重复的代码(冗余),这样编写非常啰嗦,不简练
我们应该将重复的代码 只书写一次 然后多次调用(使用) 解决方案:使用方法优化
package com.qfedu.test1;
public class Test1 {
public static void main(String[] args) {
System.out.println("床前明月光");
System.out.println("----------");
System.out.println("疑是地上霜");
System.out.println("----------");
System.out.println("举头望明月");
for (int i = 1; i <= 10; i++) {
System.out.print("-");
}
System.out.println();
System.out.println("低头思故乡");
for (int i = 1; i <= 10; i++) {
System.out.print("-");
}
System.out.println();
}
}
ctrl + 回车 跳出代码编辑框
解决方法:
package com.qfedu.test1;
public class Test2 {
public static void main(String[] args) {
System.out.println("床前明月光");
printSign();
System.out.println("疑是地上霜");
printSign();
System.out.println("举头望明月");
printSign();
System.out.println("低头思故乡");
printSign();
}
public static void printSign() {
for(int i = 1;i <= 10;i++) {
System.out.print("-");
}
System.out.println();
}
}
3. 使用单个参数优化打印诗句
参数:
形参(形式参数):是指定义方法的时候书写的参数,相当于局部变量的声明
形参规定了参数的个数、类型、顺序,表示在调用方法的时候必须遵循这个规定
实参(实际参数):调用方法的时候传入的参数 ,相当于局部变量的赋值
之前com.qfedu.test.Test2类中的代码 可以实现代码的重用 但是不够灵活
因为每次调用方法将固定答疑10个-,我们可以使用参数来让用户(调用者)指定
打印-的个数,使程序更加灵活
package com.qfedu.test2;
public class Test1 {
public static void main(String[] args) {
System.out.println("床前明月光");
printSign(10); // 实参
System.out.println("疑是地上霜");
int count = 6;
printSign(count); // 实参
System.out.println("举头望明月");
int a = 10;
int b = 2;
int c = a + b;
printSign(c); // 实参
System.out.println("低头思故乡");
int num = 7;
printSign(num); // 实参
}
public static void printSign(int num) {
for (int i = 1; i <= num; i++) {
System.out.print("-");
}
System.out.println();
}
}
4. 使用多个参数优化打印诗句
观察我们之前书写的com.qfedu.test2.Test1类
使用了单个参数可以让用户灵活的指定符号的个数,但是目前不能让用户指定符号的种类
所以,我们使用多个参数来实现
让用户传入两个参数,分别为符号的个数、符号的类型
ctrl + d 删除整行
ctrl + a 全选 ctrl + i 自动对齐
package com.qfedu.test3;
public class Test1 {
public static void main(String[] args) {
System.out.println("床前明月光");
printSign(10,"^");
System.out.println("疑是地上霜");
int num = 7;
String sign = "#";
printSign(num,sign);
System.out.println("举头望明月");
printSign(6,"&");
System.out.println("低头思故乡");
printSign(8,"*");
}
public static void printSign(int num,String sign) {
for (int i = 1; i <= num; i++) {
System.out.print(sign);
}
System.out.println();
}
}
参数定义结合实际需求来书写个数,类型,顺序
使用方法模拟实现用户登录
package com.qfedu.test3;
public class Test2 {
public static void login1(String userName,String password) {
if(userName.equals("admin") && password.equals("123456")) {
System.out.println("登录成功");
}else {
System.out.println("用户名或者密码错误");
}
}
public static void login2(String userName,String password,String validateCode) {
if(userName.equals("root") && password.equals("admin123") && validateCode.equals("6666")) {
System.out.println("登录成功");
}else {
System.out.println("用户名或者密码错误");
}
}
public static void main(String[] args) {
login1("admin","123456");
String userName = "root";
String password = "admin12";
String validateCode = "6666";
login2(userName,password,validateCode);
}
}
5.return关键字
5.1 return关键字用法1return:返回
返回值与返回值类型
void关键字表示此方法没有任何返回值
还可以使用八种基本数据类型和引用数据类型来代替void,表示方法会返回一个定义的类型的值
return关键来返回具体的内容,表示中断方法并且返回内容
需求:编写一个方法用于实现两个数之和
package com.qfedu.test4;
public class Test1 {
public static int addtion(int a,int b) {
int sum = a + b;
return sum;
}
public static void add(int a,int b) {
System.out.println("求和" + (a + b));
}
public static void main(String[] args) {
int sum = addtion(101,202);
System.out.println("在main方法中获取的sum的值:" + sum);
sum *= 10;
System.out.println(sum);
add(10,22);
}
}
5.2 return关键字用法2
编写方法实现判断奇数偶数
如果需要在分支结构中使用return关键字返回结果,那么必须保证每一条分支都有正确的结果返回
package com.qfedu.test5;
public class Test1 {
public static String isEven1(int num) {
if(num % 2 == 0) {
return "偶数";
}else {
return "奇数";
}
}
public static boolean isEven2(int num) {
if(num % 2 == 0) {
return true;
}else {
return false;
}
}
public static String isEven3(int num) {
if(num % 2 == 0) {
return "偶数";
}
return "奇数";
}
public static boolean isEven4(int num) {
if(num % 2 == 0) {
return true;
}
return false;
}
public static void m1() {
}
public static void main(String[] args) {
String result = isEven1(11);
System.out.println(result);
System.out.println(isEven2(66));
// System.out.println(m1()); 返回值为void 不能接收 也不能打印
}
}
5.3 return关键字用法3
在返回值类型为void的方法中,也可以使用return,return之后不能有任何内容,
此时return只表示中断方法,不能返回内容
package com.qfedu.test5;
public class Test2 {
public static void m1() {
for (int i = 1; i < 20; i++) {
if(i == 10) {
return; // break 只能中断循环 return是中断方法 注意区别
}
System.out.println(i);
}
System.out.println("m1方法执行完毕");
}
public static void main(String[] args) {
m1();
}
}
6. 方法总结
7. 方法之间的调用注意:一个类中可以定义多个方法,方法之间属于并列关系,不可嵌套。
经验:一个方法只做一件事。
好处:
减少代码冗余。
提高复用性。
提高可读性。
提高可维护性。
方便分工合作。
静态方法与静态方法之间互相直接调用
package com.qfedu.test6;
public class Test1 {
public static void m1() {
System.out.println("m1 method start");
m2();
System.out.println("m1 method end");
}
public static void m2() {
System.out.println("m2 method start-------------");
System.out.println("m2 method end-------------");
}
public static void main(String[] args) {
m1();
}
}
8. 方法重载overload
方法重载 OverLoad 是一种现象
概念:同一个类中,方法名相同,参数列表不同(个数、类型、顺序),即可称之为方法重载,
跟返回值、访问权限修饰符无关
优点:屏蔽差异化,使程序结构更加统一,便于维护、使用
package com.qfedu.test6;
public class Test2 {
public static int add(int a,String str) {
System.out.println(a + str);
return 10;
}
// public static void add(String name,int num) {
//
// } 编译不通过 因为与下边的方法 参数列表重复了 个数 类型 顺序 都一样
public static void add(String str,int a) {
System.out.println(str + a);
}
public static void add(int a,int b) {
System.out.println(a + b);
}
public static void add(int a,int b,int c) {
System.out.println(a + b + c);
}
public static void add(int a,int b,int c,int d) {
System.out.println(a + b + c + d);
}
public static void add(int a,int b,int c,int d,int e) {
System.out.println(a + b + c + d + e);
}
public static void add(int a,int b,int c,int d,int e,int f) {
System.out.println(a + b + c + d + e + f);
}
public static void main(String[] args) {
add(10,20);
add(10, 20, 30, 40);
add(10, "aaaa");
}
}



