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 "不是素数";
}
}
Java学习Day06——函数,参数,返回值,分类,多级调用相关推荐
- Python深度学习实战:声呐返回值分类
Python深度学习实战:声呐返回值分类 声呐物体分类数据 简单的神经网络 预处理数据以增加性能 调整模型的拓扑和神经元 缩小网络 扩大网络 总结 本章我们使用Keras开发一个二分类网络.本章包括: ...
- java中main()函数的返回值是什么_Java中main()函数的返回值类型是什么
Java中main()函数的返回值类型是什么 答:void 在单纯形表的终表中,若非基变量的检验数有0,那么最优解 答:无穷多 中国大学MOOC: 不属于现代区位理论的是( ) 答:中心地理论 不属于 ...
- java 函数参数 返回值_java中如何用函数返回值作为post提交的参数?
1.我想实现的功能是在java程序中导入HttpURLConnection类,然后将函数的值作为post方法要提交的参数,最后显示在显示台上. 2.要用到的函数是自己写的可以显示实时计算机cpu.内存 ...
- shell函数参数,返回值
函数参数 在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数- 带参数的函数示例: #!/bin/bashfunW ...
- day03 文件操作 函数 参数 返回值 作用域和名称空间 global和nonlocal
一.文件 (一)文件操作 open(文件, mode="", encoding="utf-8") 文件读取: r(read) 1. readline() 读取一 ...
- java函数void返回值是,Java中main()函数的返回值是什么( )。A、StringB、intC、c......
下面的哪个是Java的关键字()A.stringB.abstractC.NULLD.Boolean Javaapplication中的主类需包含main方法,以下哪项是main方法的正确形参?A.St ...
- python 函数递归一次增加一次变量_python基础之函数、返回值,局部变量、全局变量,递归(继续补充不定长参数)...
1.python中函数定义:函数是逻辑结构化和过程化的一种编程方法.(完成某一种特定的功能) def test02(): #"" msg = 'hello WuDaLang' re ...
- 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))
学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...
- 函数的返回值可以不用赋值_C语言学习|函数的应用《一》
C语言为程序的结构提供了函数和模块 一.函数的定义与使用 <编程之道>中写道:"一个程序应该是灵活自由的.它的子过程就像串在一根线子上的珍珠."子过程在C语言中被称为& ...
最新文章
- BAT可真拿抖音一点儿办法也没有
- flask 继承模版的基本使用1
- 恩墨学院丨OBCP墨天轮精品课正式上线啦~
- autowired注入jar中的依赖_springboot项目中调用jar包中的类时报错 — 没有注入类
- linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
- Common lisp之加载方式(一)
- 数据结构: 树 (查找树)
- 企业网站电子邮件营销的优势与转化率分析
- MongoDB 表设计
- opencv 双目标定操作完整版
- 单片机测量脉宽c语言程序,利用51系列单片机定时器功能实现测量脉冲宽度
- 谷歌Chrome 操作系统基于浏览器的OS
- 难受难受,真它吗的难受... ...
- com.sun.mail.smtp.protected void rcptTo() 方法
- 《深入理解计算机系统》课本第七章自学笔记——20135203齐岳
- 一位独角兽CTO的2022年度书单
- 使用pytorch获取bert词向量
- 程序员的工资高,到底程序员的工资有多高?那些你不了解的程序员
- pcb入门之原理图生成PCB
- 透视学现象如何产生?