函数
1、什么是函数?
函数封装了特定功能的代码块
2、函数有什么好处?
函数封装了代码块,方便使用,提高开发效率,大大减少了代码的编写
3、函数的结构
关键字 +返回值类型+函数名+参数列表(参数类型 参数名称1,参数类型 参数名称2)
4、函数的重载
指的是函数名称相同,但是参数列表不同,不同点为以下三点
- 参数数目不同
- 参数类型不同
- 参数顺序不同
无关因素:
- 返回值类型
- 参数名称
5、函数的编写步骤
1、首先判断返回值类型
在不需要使用结果进行运算的时候,可以返回值类型为void。当需要使用结果进行运算的时候,可以根据需要设置返回值类型。
2、判断参数列表
判断需要几个参数,分别是什么类型的
6、函数的实例
需求:可以自己输入一些整数,求他们的最大值(可以输入两个或者三个或者四个整数)
public static int max(int a,int b) {
int max=(a>b)?a:b;
return max;
}
public static int max(int a,int b,int c) {
int max=max(a, b);
return (max>c)?max:c;
}
public static int max(int a,int b,int c,int d) {
int max=max(a, b, c);
//直接return,方便主函数调用后的操作。
return (max>d)?max:d;
}
public static int max(int a,int b,int c,int d,int e) {
int max=max(a, b, c, d);
return (max>e)?max:e;
}
小结:这里首先利用了函数的重载,不管是两个数或者三个数都是实现求最大值的功能。而后运用了三目运算符比较两数大小,最后运用了函数之间的调用
数组
1、什么是数组?
数组可以看成是一个容器,它盛装了一系列相同类型的数据
2、数组的定义规范
数组中数据类型+[ ]+数组名
3、定义数组的两种方式
数组中数据类型+[ ]+数组名=new 数据类型+[数组中元素个数]
数组中数据类型+[ ]+数组名={数组中的元素} (语法糖)
4、数组句型分析和注意事项
示例数组: int [] array=new int [5];
1.左边的数组名array,在主函数中,存在于栈中,所有函数执行后就会被系统释放
2.右边的“new”意味着在堆内存中开辟空间,存放五个连续的数据
3.数组的长度一旦声明就不可以改变
4.system.out.print(array)输出的值一般为这种类型 [I@33909752,[ :这是一维数组 I:数组中存放的是int类型数据 33909752:数组在堆中的首地址值
5.一旦array=null,system.out.print(array[2]),这个时候回报错,因为数组名不再指向堆内存,堆内存中的内存区域可能不存在
5、数组实例
需求:随机10个数,随机的区间为15到150,1、把这十个数放入数组中 2、打印最大值
int [] num=new int [10];
for(int x=0;x<10;x++) {
int num1=(int)(Math.random()*136+15);
num[x]=num1;
}
int num2=num[0];
for(int x=0;x<num.length;x++) {
if(num2<num[x]) {
num2=num[x];
}
}
System.out.println(num2);
小结:这里用到了闭区间用随机数random表示,首先实现一个数组在里面随机分配是个数,之后进行比较求最大值,两个步骤
随机数
1、随机数书写格式
Math.random( ),随机数本质上也不是随机的,也是由电脑按照一定的规则输出的数字,也就是所谓的伪随机
2、随机数公式
一个闭区间可以用随机数表示 [ a, b] int(Math.random()*(b-a+1)+(b-a))
3、随机数实例
需求:随机输出[15,200]十个数,求最大值
int max=0;
for(int x=0;x<10;x++) {
int num2=(int)((Math.random()*186)+15);
System.out.println(num2);
if(max<num2) {
max=num2;
}
}
System.out.println("最大的数:"+max);
小结:在循环外定义一个变量用于比较和接收最大值,之后要在循环里输出随机数,并且每次都和max进行比较,取大,最终得到最大值
递归函数
递归函数思想
通过函数自身调用自身,不断地嵌套,从而反复执行某种操作
注意:这是个死循环,,要定义一个出口结束循环
实例:计算4!阶乘
public static int recurrence(int n) {
//递归的出口判断
if(n==1) {
return 1;//作为值带入下面的式子进行计算
}
return n*recurrence(--n);
}
小结:每次运算都将 n-1 带入下一次循环,最终到n==1的情况,这个时候进入if语句这个出口,结束循环
break与continue
它们有什么区别?
break:结束循环,跳出这个程序,执行循环之后的操作
continue:结束本次循环,继续进行下一次循环
相同点:它们的后面都不可以跟上语句,因为不会执行,即使加上也没有意义
实例:break在嵌套循环中的作用
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
if(j==8) {
break ;
}
System.out.print(j);
}
System.out.println();
}
小结:外循环为10次,每次的内循环只会输出0-7,j=8时候,break跳出内循环
实例:continue在嵌套循环中的作用
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
if(j==8) {
continue ;
}
System.out.print(j);
}
System.out.println();
}
小结:外循环10次,每次内循环当j=8进入下一次循环,不会输出8,输出0-7和9