> 文章列表 > day07_方法

day07_方法

day07_方法

今日内容

零、 复习昨日
一、作业讲解
二、方法

零、 复习昨日

for(int i = 1;i < 10;i++) {}
// 变量i的作用范围,只有for循环内可以用
for(;;){}  // 死循环
break;  // switch,循环// 打断当前这个结构,不再执行
continue; // 打断当次,继续下次

一、作业讲解

package com.qf.homework;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class Demo1 {public static void main(String[] args) {// 输出100~1000的所有末尾为8的数字for (int i = 100; i < 1000; i++) {if(i % 10 == 8) {System.out.println(i );}}System.out.println("-------------" );/*** 外层循环控制行数* 内存循环控制列数* ****** ***** **** *** **/for (int i = 1; i < 6; i++) {for (int j = 5; j > i-1; j--) {System.out.print("*" );}System.out.println( );}System.out.println("---------------" );/***    **   ****  ****** ********/for (int i = 1; i < 5; i++) {for (int j = 3; j > i-1; j--) {System.out.print(" " );}for (int j = 0; j < 2 * i - 1; j++) {System.out.print("*" );}System.out.println( );}System.out.println("---------------" );/*** 3 文钱可以买1只公鸡,* 2 文钱可以买一只母鸡,* 1 文钱可以买3 只小鸡。* 用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?* ------------------* 假设数量: 公鸡g,母鸡m,小鸡x* g + m + x = 100; // 只数100只* 3g + 2m + x / 3 = 100; // 钱数100文* 最多* 公鸡只能买: 100 / 3 = 33* 母鸡只能买: 100 / 2 = 50* 小鸡只能买: 虽然能买300只小鸡,但是要求就最多100只* -----------* 思路: 穷举法* 当公鸡0只,母鸡0只,小鸡?只合适* 当公鸡0只,母鸡1只,小鸡?只合适* 当公鸡0只,母鸡2只,小鸡?只合适* 当公鸡0只,母鸡?只,小鸡?只合适* 当公鸡1只,母鸡?只,小鸡?只合适* 当公鸡2只,母鸡?只,小鸡?只合适* 当公鸡?只,母鸡?只,小鸡?只合适*/for (int g = 0;g <= 33;g++) {for (int m = 0;m <= 50;m++) {for (int x = 0;x <= 100;x++) {// if (x % 3 == 0) {if (x % 3 == 0 && g + m + x == 100 && 3*g + 2*m + x/3==100) {System.out.println("公鸡"+g+"只,母鸡"+m+"只,小鸡"+x+"只" );}// }}}}int count = 0;for (int i = 1; i < 101; i++) {for (int j = 1; j < 101; j++) {for (int k = 1; k < 101; k++) {count++;}}}System.out.println("循环多少次"+count );}
}

二、方法

方法(method),其他语言中称为函数()

方法: 是完成某个功能的代码块

2.1 为什么需要方法/好处

之前的问题:

  1. 代码都放在main方法,写代码时候变量容易重复,臃肿
  2. 为了运行某个结果,main方法内的代码都要执行一遍
  3. 当代码需要重复使用时,以前就需要重写一遍,且后期维护麻烦

如果使用方法,好处:

  1. 使用方法将代码抽取成独立代码块,互相不影响. 需要看哪个结果,就运行哪个方法
  2. 代码抽取成方法后,方便重复使用
  3. 方便后期维护

2.2 方法定义

public static void methodName() {  
}
public static void methodName(int a,double b) {  
}
public static int methodName(String s) {  return 0;
}
/***  方法语法解释:*  public 词义:公共的,作用:访问权限,目前每个方法都要定义(固定的)*  static 词义:静态的,作用:后续再说(面向对象),目前每个方法都要定义(固定的)*  第三处: 方法的返回值类型*         方法的返回值是方法的功能执行完返回的结果数据*         返回值类型是 结果的数据类型(例如:int,double,String等)*         方法也可以不返回,写void,意思是空*         ----------------------------*         如果返回值类型是void,方法体内{}不写return 值;*         如果返回值类型不是void,方法体内{}一定要写return 值;*  第四处: 方法名,见名知意,小写驼峰原则*  ()   : 括号叫做参数列表,参数就是方法执行需要的数据*         列表: 可以有任意个参数,多个之间逗号,隔开*         具体写法: 数据类型 变量名, 与之前声明变量完全一样*  {}   : 方法体,方法执行的具体逻辑代码*/

2.3 方法演示

2.3.1 无参无返回值

public static void m1(){}

    // 定义一个方法,输出一句你好public static void printHello() {System.out.println("你好" );}// 定义一个方法,输出1-10public static void printNum() {int a = 1;for (int i = 1; i < 11; i++) {System.out.println(i );}}

2.3.2 有参数无返回值

参数是方法执行需要用到的数据

定义在方法的参数列表()内

public static void m2(数据类型 参数名,数据类型 参数名){}

package com.qf.method;import java.util.Scanner;/*** --- 天道酬勤 ---** @author QiuShiju* @desc  方法演示*/
public class Demo4 {/*** 有参数的方法* int n,就是定义参数,其实就是声明变量* int n在这里叫做形式参数,形参*/// 定义一个方法,输出指定次数你好public static void printHello(int n){// i <= n 使用变量for (int i = 1; i <= n; i++) {System.out.println("你好" );}}// 定义一个方法,输出1-npublic static void printNum(int n) {for (int i = 1; i <= n; i++) {System.out.println(i );}}// 定义一个方法,输出1-n之间的偶数public static void printEven(int n) {for (int i = 1; i <= n; i++) {if (i % 2 == 0) {System.out.println(i );}}}// 定义方法,输出2数之和public static void printSum(int a,int b){System.out.println(a + " + "+ b +" = "+(a+b) );}// 定义方法,遣词造句public static void printInfo(String name,int age,String address,double money,char sex){System.out.println("我叫"+name+",今年"+age+"岁,性别"+sex+",家住"+address+",身上有"+money+"块钱" );}public static void main(String[] args) {// 调用方法传参数,个数类型顺序要对应printInfo("安其拉",8,"峡谷之巅",6300.0,'女');}
}

day07_方法

day07_方法

day07_方法

2.3.3 无参有返回值

返回值是方法执行后返回的数据.

定义方法时

  • 不再写void,而是写对应的数据类型;

  • 然后在方法体内使用return 值;来完成返回;

返回给谁?

  • 返回给调用者

day07_方法

package com.qf.method;/*** --- 天道酬勤 ---** @author QiuShiju* @desc 返回值演示*/
public class Demo5 {// 方法,返回一个int值1// 瑞昕接水public static int show1() {// 水杯return 1;}// 我-邱哥public static void main(String[] args) {// 调用瑞昕,接水// 调用方法,接收方法执行完后的返回值int result  = show1();System.out.println(result );}
}

2.3.4 有参有返回值

详见上方

2.4 方法定义总结

  • 正常的定义: public static void m1(){}
  • 方法定义不能嵌套,方法都是平级的
  • 方法在类中定义的顺序无所谓,因为最终只有main方法可以运行
  • 根据需求来决定要不要加参数,加几个参数,什么类型的参数
  • 根据需求来决定要不要返回值,如果要返回,再看情况返回值类型是什么

2.5 方法调用执行

java代码有且仅有一个唯一入口,那就是main方法

即所有代码必须通过main方法来运行, 是指需要在main方法内调用其他方法,其他方法才可执行

如何调用方法?

  • 无参方法 ,直接写方法名
  • 有参方法,直接写方法名,必须传入实参,且参数类型个数顺序要和形参一致
  • 方法无返回值, 不能接收返回值
  • 方法有返回值,可接收返回值也可不接收返回值
    // 程序有一个唯一入口public static void main(String[] args) {// 调用无参数方法printHello();// 调用有参数的方法,必须传入实参printNum(10);// 接收返回值int result = add(3,4);}

方法之间可以互相调用!

ps: 一定注意相互调用时,不要出现死循环(相互调用!!!)

package com.qf.method;/*** --- 天道酬勤 ---** @author QiuShiju* @desc 方法调用*/
public class Demo6 {// 组员-扫地public static void studentClean(){System.out.println("学生" );System.out.println("学生扫地" );}// 组长-扫地public static void groupLeaderClean(){System.out.println("组长" );// 调用组员,让其扫地studentClean();}// 班长-扫地public static void classLeaderClean() {System.out.println("班长");// 调用组长,让其扫地groupLeaderClean();}// 程序唯一入口-邱哥-扫地public static void main(String[] args) {System.out.println("老师" );classLeaderClean();}
}

方法之间相互调用,返回值给谁? 返回值给直接的调用者

package com.qf.method;/*** --- 天道酬勤 ---** @author QiuShiju* @desc 方法调用*/
public class Demo6 {// 组员-扫地public static String studentClean(){System.out.println("学生" );System.out.println("学生扫地" );// return给组长return "学生完成扫地";}// 组长-扫地public static String groupLeaderClean(){System.out.println("组长" );// 调用组员,让其扫地String result = studentClean();System.out.println(result );// return 给班长return "组长扫完地";}// 班长-扫地public static String classLeaderClean() {System.out.println("班长");// 调用组长,让其扫地String result = groupLeaderClean();System.out.println(result );// 返回给老师return "班长扫完地";}// 程序唯一入口-邱哥-扫地public static void main(String[] args) {System.out.println("老师" );String result = classLeaderClean( );System.out.println(result );}
}

附录

Statement 语句
miss 缺失
return  返回
method 方法
function 函数
information 简写info  信息
address 地址
length 长度
result 结果
get    得到
student 学生
clean 打扫
group 组
leader 领导