700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java学习Day06——函数 参数 返回值 分类 多级调用

Java学习Day06——函数 参数 返回值 分类 多级调用

时间:2023-11-25 14:21:52

相关推荐

Java学习Day06——函数 参数 返回值 分类 多级调用

JavaSE基础

多听一遍不如多练一遍,多练一遍不如总结一遍,希望各位在学习的过程中,要多听,多写,多练,每天将自己所学汇总一遍,查缺补漏,成就更好的自己

一.函数

1.1概述

函数又叫方法,是完成指定功能的一个代码块,可以通过函数的名字重复使用

1 .2 构成

public static 返回值类型 函数名(形参列表){ //方法的声明//方法的实现方法体}

public static

Java关键字表示访问范围和存储位置

返回值类型

方法运行结束时候得到的数据的类型

函数名

函数的名字,需要是一个合法的标识符

形参列表

形参就是声明了各种变量。没有赋值,用户调用函数时候传入真正的数据【实参】

方法体

这个函数要实现的具体功能

1 .3 调用

在main方法中通过函数名进行调用

package com.javastudy.dayo6;public class ClassTest01 {public static void main(String[] args) {// TODO Auto-generated method stubprintfo(); //调用下面的方法 pringfo()}public static void printfo() {System.out.println("# ┏┓┏┓+ +\r\n" + "#┏┛┻━━━┛┻┓ + +\r\n" + "#┃┃ \r\n" + "#┃━┃ ++ + + +\r\n" + "# ████━████ ┃+\r\n" + "#┃┃ +\r\n" + "#┃┻┃\r\n" + "#┃┃ + +\r\n" + "#┗━┓┏━┛\r\n" + "#┃┃\r\n" + "#┃┃ + + + +\r\n" + "#┃┃Codes are far away from bugs with the animal protecting\r\n" + "#┃┃ + 神兽保佑,代码无bug\r\n" + "#┃┃\r\n" + "#┃┃+\r\n" + "#┃ ┗━━━┓ + +\r\n" + "#┃ ┣┓\r\n" + "#┃ ┏┛\r\n" + "#┗┓┓┏━┳┓┏┛ + + + +\r\n" + "#┃┫┫┃┫┫\r\n" + "#┗┻┛┗┻┛+ + + +\"");System.out.println("wode airen ");}}

二.函数的参数

2.1 概述

参与函数运行的数据称为参数

参数有两种分别是:

形式参数(形参)

实际参数(实参)

2.2形参

方法声明部分小括号中定义的变量(可以不赋值,只定义)

告诉方法调用者,这个方法运行起来需要哪些类型和数量的数据

private static String isTriangle(double x1,double y1,double z1) {//这里的三个double 对应 三角形的三条边,他们就叫做形参// TODO Auto-generated method stubif((x+y>z) && (x+z>y) && (y+z>x)) {System.out.println("成立三角形");}else {System.out.println("不能成立三角形");}}

2.3实参

函数运行时候实际使用的数据,这个数据是用户调用函数时候放入括号中的

相当于给形参完成赋值操作

实参的数量、类型、顺序必须和声明的形参保持一致

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("判断是否能构成三角形");System.out.println("请输入三角形的三条边");double x = sc.nextInt();//x边double y = sc.nextInt();//y边double z = sc.nextInt();//z边isTriangle(x,y,z);//这里输入的double x,y,z对应的函数里面的x1,y1,z1,并赋予他们实际运行中的值}

2.4练习

编写方法,传入三角形三条边长,输出能否构成三角形

编写方法,传入一个起始年份和一个结束年份,输出这个区间的闰年

编写方法,传入身高和体重,输出BMI是否正常

public static void main(String[] args) {Scanner sc = new Scanner(System.in);// TODO Auto-generated method stubprintTWGX();System.out.println();System.out.println("判断是否能构成三角形");System.out.println("请输入三角形的三条边");double x = sc.nextInt();//x边double y = sc.nextInt();//y边double z = sc.nextInt();//z边isTriangle(x,y,z);System.out.println();System.out.println("判断闰年");//System.out.println("请输入起始年份和末尾年份");isYear(1000, 1030);System.out.println();System.out.println();System.out.println("判断BMI是否正常");//System.out.println("请输入你的身高(m)体重(kg)");healthBMI(1.75,82);System.out.println();}private static void printTWGX() {// TODO Auto-generated method stubSystem.out.println("豫章故郡,洪都新府。星分翼轸,地接衡庐");System.out.println("襟三江而带五湖,控蛮荆而引瓯越");}/*** * @param x 边长* @param y 边长* @param z 边长*/private static void isTriangle(double x1,double y1,double z1) {// TODO Auto-generated method stubif((x1+y1>z1) && (x1+z1>y1) && (y1+z1>x1)) {System.out.println("成立三角形");}else {System.out.println("不能成立三角形");}}/*** * @param x 起始年份* @param y 末尾年份*/private static void isYear(int x ,int y ) {// TODO Auto-generated method stubfor(; x <= y ; x++) {if(x % 4 == 0 && x % 100 !=0 || x % 400 == 0) {System.out.print(x+"是闰年"+" ");}else{System.out.print("不是闰年");}}}/*** * @param high身高* @param weight体重*/private static void healthBMI(double high, double weight) {// TODO Auto-generated method stubdouble BMI = weight/(high * high);if(BMI >= 18.5 && BMI <= 22.9) {System.out.println("正常");}else {System.out.println("不正常");}}

三.返回值和返回值的类型

3.1 概述

有些函数运行之后会产生一个结果,如果需要保留使用,我们就需要用返回值来保存

查询得到的名字、年龄、信息

计算得到的周长、面积、位置

... ...

3.2 返回值

方法运行结束时候得到的数据

3.3 返回值类型

方法运行结束时候得到的数据的类型

3.4 练习

public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);//调用扫描器//传入三角形的三条边,返回周长double x,y,z;//输入三条边的值、System.out.println("请输入三条边的值");x = sc.nextDouble();y = sc.nextDouble();z = sc.nextDouble();//调用方法计算周长System.out.println(triangleS(x,y,z));//传入一个年份,判断是不是闰年\System.out.println("请输入一个年份");int year =sc.nextInt();//调用方法判断是不是闰年System.out.println(isyear(year));//传入身高和体重,返回BMI//传入身高(M)System.out.println("请输入你的身高(M)");double high = sc.nextDouble();//传入体重(KG)System.out.println("请输入你的体重(KG)");double weight = sc.nextDouble();System.out.println(yourBMI(high,weight));//传入两个数字,返回较大的那个System.out.println("请输入要比较的两个数");int a = sc.nextInt();int b = sc.nextInt();//调用方法进行比较System.out.println(compare(a,b));//传入两个数字,返回平均值System.out.println("请输入要求平均数的两个数");int c = sc.nextInt();int d = sc.nextInt();//调用方法进行求平均数System.out.println(average(c,d));//根据关键字查询并返回结果System.out.println("请输入关键字");int str = sc.nextInt();System.out.println(check(str));}private static double triangleS(double x,double y,double z) {// TODO Auto-generated method stubif((x+y>z) && (x+z>y) && (y+z>x)) {//先判断是否能构成三角形double C = x+y+z;return C;//返回周长}else {return -1; //不能构成三角形}}private static String isyear(int years) {// TODO Auto-generated method stubif(years % 400 == 0|| years % 4 == 0 && years % 100 != 0) {//判断是不是闰年return "是闰年";}else {return "不是闰年";}}private static double yourBMI(double h , double w) {// TODO Auto-generated method stubdouble BMI = w/(h*h);//计算你的BMIreturn BMI;}private static int compare(int a1,int b1) {// TODO Auto-generated method stubreturn (a1>b1)?a1:b1; //返回较大者}private static double average(int c1,int d1) {// TODO Auto-generated method stubreturn (c1+d1)/2; //求平均值}private static String check(int key) {// TODO Auto-generated method stubString goods;switch (key) {case 1:goods = "物品1";break;case 2:goods = "物品2";break;default:goods = "NULL";break;}return goods;}

3.5 注意事项

分支语句中的return

在分支语句中必须保证能返回数据

每一个分支中可能都是需要return的

方法中能否存在多个return?

但是最多执行一个return

执行return相当于方法结束了,后面的代码无法继续执行

return后面不能再书写代码

四. return 关键字

4.1概述

函数的结束方法

函数结束时可以返回数据

4.2.案例

//void 函数没有返回值,也可以用return结束,但return后面不跟返回值//函数的结束方法private static void show() {//循环,找到6后停止for (int i = 0; i < 10; i++) {System.out.println(i);if (i == 6) {// break;// 终止循环return;// 结束show方法,方法中这一行之后的代码不再执行}//函数结束时返回数据private static double average(int c1,int d1) {// TODO Auto-generated method stubreturn (c1+d1)/2; //求平均值}

五.函数(方法)分类

5.1 根据返回值类型和参数列表分类

无参数无返回值

无参数有返回值

有参数无返回值

有参数有返回值

5.2 无参数无返回值

内容固定不变,不需要运算、查询等操作,没有返回值

/***无参数无返回值*/private static void notice() {System.out.println("红灯停,绿灯行。");}

5.3 无参数有返回值

固定条件查询、计算

无差别查询

/*** 无参数有返回值*询所有信息* @return*/private static String searchALl() {return "all information";}

5.4 有参数无返回值

增删改有可能是没有返回值,有时候提示即可

/***有参数无返回值* @param songName*/private static void playMusic(String songName) {System.out.println("马上播放:" + songName);}

5.5 有参数有返回值【重点】

使用最多,符合大部分情况

/***传入2个数字,返回这些数字的平均值* @param c1* @param d1* @return*/private static double average(int c1,int d1) {// TODO Auto-generated method stubreturn (c1+d1)/2; //求平均值}

Day07补充

六.多级调用

6.1 概述

方法不能嵌套

方法中不能书写其他的方法

方法中可以调用其他方法

A方法中调用B方法B方法中调用C方法C方法中调用D方法... ...

6.2 方法多级调用案例

package com.javastudy07;public class ClassTest01 {public static void main(String[] args) {System.out.println("main方法开始...");show01();System.out.println("main方法结束...");}public static void show01() {System.out.println("\tshow01方法开始...");show02();System.out.println("\tshow01方法结束...");}public static void show02() {System.out.println("\t\tshow02方法开始...");show03();System.out.println("\t\tshow02方法结束...");}public static void show03() {System.out.println("\t\t\tshow03方法开始...");System.out.println("\t\t\t\tHelloWorld");System.out.println("\t\t\tshow03方法结束...");}}

6.3 递归

在方法中调用本方法称为方法递归

递归是由风险的

如果没有在合适的时候结束调用,可能造成无穷递归

最终造成栈内存溢出错误

递归需要再合适的时候结束调用,来解决具有某些规律的问题

6.4递归练习

package com.javastudy07;public class ClassTest02 {public static void main(String[] args) {/*** 计算5!* 5! = 5*4*3*2*1* = 5 * 4!* = 5 * 4 * 3!* = 5 * 4 * 3 * 2!* = 5 * 4 * 3 * 2 * 1!* = 5 * 4 * 3 * 2 * 1*/int result = mul(5);System.out.println(result);/** 斐波拉契数列*1 1 2 3 5 8 13 21 34 55...*第一个、第二个 1* f(1)=1、f(2)=1*后面 前面两个相加* f(3)=f(1) + f(2)* f(4)=f(2) + f(3)* f(5)=f(4) + f(3)* ... ...*/for (int i = 1; i <= 10; i++) {System.out.println(fib(i));}/***mul(5)*5 * mul(4)*5 * 4 * mul(3)*5 * 4 * 3 * mul(2)*5 * 4 * 3 * 2 * mul(1)* @param n* @return*/public static int mul(int n) {if (n == 1) {return 1;}return n * mul(n-1);}/*** 斐波拉契数列中的第N个数字* @param n* @return*/public static int fib(int n) {if (n==1 || n==2) {return 1;}return fib(n-1)+fib(n-2);}}

今日习题

package com.javastudy.dayo6;import java.util.Scanner;public class HomeWork {public static void main(String arg[]) {/** 1、编写方法,计算m只鸡和n只兔子腿的数量并返回2、编写方法,在方法中输出NN【参数指定】乘法表3、编写方法,输出2~~某个数N之内的素数*/Scanner sc =new Scanner(System.in);//1System.out.println("请输入鸡的数量和兔子的数量");int h = sc.nextInt();int r = sc.nextInt();System.out.println("总共有"+feet(h,r)+"条腿");//2System.out.println("请输入行和列的值");int row = sc.nextInt();int col = sc.nextInt();NNmult(row,col);System.out.println();//3System.out.println("请输入你选择的数字");int prime = sc.nextInt();System.out.println(isPrimeNum(prime));}private static int feet(int hen ,int rabbit) {// TODO Auto-generated method stubint sum;sum= hen*2 + rabbit*4;return sum;}private static void NNmult(int x, int y) {// TODO Auto-generated method stubfor(int i = 1; i <= x ; i++) { // 行System.out.println();for(int j = 1 ; j <= y ; j++){System.out.print(j+"*"+i+"="+i*j+"");//列}}}private static String isPrimeNum(int p) {// TODO Auto-generated method stubboolean is = true;for(int i = 2 ; i < p ;i++) {if(p % i == 0) {is = false; break;}if(is) {return "是素数";}}return "不是素数";}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。