1.break和continue的区别
break是跳出循环,而continue是跳出本次循环直接进行下次循环
例如:
for (int i = 0; i < 5; i++)
{
if (i==3)
{
break;//直接跳出循环,循环结束
}
System.out.print(i);
}
输出结果为:012
for (int i = 0; i < 5; i++)
{
if (i==3)
{
continue;//continue是跳出本次循环,继续进行下次循环
}
System.out.print(i);
}
输出结果为:0124
//程序中,当为3的时候,break是直接跳出结束循环,而continue仅仅是结束了本次循环,本次循环下面的程序不执行了,直接进行了下次循环.
当在嵌套循环中,break和continue的作用范围,仅仅是在该层循环中起作用,break就是跳出本层循环,对外层循环没有影响;continue也一样,结束本层循环的该次循环,继续本层循环的下一次循环
for (int i = 1; i < 5; i++)
{
for (int j = 1; j < 5; j++)
{
if (j==3)
{
break;//跳出本层循环,对外层循环没有影响
}
System.out.print(j);
}
System.out.println();
输出结果是
12
12
12
12
for (int i = 1; i < 5; i++)
{
for (int j = 1; j < 5; j++)
{
if (j==3)
{
continue;//跳过本层本次循环,继续本层循环的下一次循环,对外层循环没有任何影响
}
System.out.print(j);
}
System.out.println();
输出的结果是
124
124
124
124
2. java中的函数
函数:封装了具有特定功能的代码段.
封装函数的好处:是为了提高程序的可读性,减少重复代码的编写,提高代码的编写效率,并且用起来十分的方面
如何声明一个函数?
系统关键字(或者叫修饰符) 返回值类型 函数名( 参数类型 参数名1,参数类型 参数名2…){ 执行语句; return;}
下面定义一个函数:求两个数的和
public static double sum(double num1,double num2)
{
return num1 + num2;
}
⚠️注意在定义函数的时候,一定要在类的大括号里面定义,函数是不能在别函数里面定义的,一定不要在main函数里面进行定义函数
函数的类型:函数可以分为四类
1,有参数有返回值的函数
2,有参数无返回值的函数
3,无参数有返回值的函数
4,无参数无返回值的函数
⚠️函数的重载:函数的重载就是讲具有相同功能,但是参数的个数或者参数的数据类型不同的函数可以命名一样,即起个相同名字,方面我们调用.
几个函数能否重载,主要取决于函数的参数,和函数的返回值没有关系,主要取决于函数参数的数量,位置以及参数的返回值类型.
例如:①求两个数中最大的一个
②求三个数中最大的一个
③求四个数中最大的一个
①求两个数中最大的一个
public static int sum(int i, int j)
{
return ((i>j) ? i:j);//三目运算符求出两个数中最大的一个
}
②求三个数中最大的一个
public static int sum(int num1,int num2,int num3)
{
int max = sum(num1, num2);//调用前面的函数①来求出两个数中最大的一个
max = sum(max, num3);//再调用前面的函数来比较大小
return max;
}
③求两四个数中最大的一个
public static int sum(int num1,int num2,int num3,int num4)
{
int max = sum(num1, num2, num3);//调用函数②,求前三个数中的最大的一个
max = sum(max, num4);//调用函数①,求出上一步的最大值和num4中最大的一个
return max;
}
可以看出①②③中的三个函数的名称一样,即为函数的重载,之所以可以重载是因为三个函数功能一样,切函数的参数不一样.
3,函数的递归运算
函数的递归运算就是指,函数自己调用自己,或者说函数在自己的执行语句中调用了自身这个函数.
例如:求一个数的阶乘.
public static int chengJi(int i)
{
if (i == 1)
{
return 1;//当i为1的时候,返回1,到这一步调用结束
}else
{
return ( i*chengJi(i-1) );//i的阶乘就等于乘以i-1de阶乘,计算i-1的阶乘直接调用自己进行运算,但是0是没有阶乘的,所有i-1>0
}
4.随机数
系统给我们写了一个随机数是[0,1)中的随机数.
double num = Math.random();//num就是系统写的随机数
如果我们要求一个区间的随机数,就要根据系统的随机数即上面代码中的num运算一下
例:写一个[50,220]之间的随机整数
思路是:先通过给系统随机数(num)乘以171得到[0 171)的随机数,,因为要求是随机整数,所以得到的是[0 170]的随机整数,然后在加上50,即得到[50 220]的随机整数
double num = Math.random();
num =(int)num *(220-50+1) + 50;
可以简单地记住做: num = 系统随机数 *(随机范围的最大值 - 随机范围的最小值 + 1) + 随机范围的最小值
5.数组
数组是什么?
数据就是将一组相同数据类型的数据存放在一起,数组就相当于一个容器(数据类型必须是相同的)
如何定义一个数组?
数据类型[] 数组名称 = new 数据类型[数组的长度];
数据类型[] 数组名称 = new 数据类型[]{数组中的元素};
数据类型[] 数组名称 = {数组中的元素};
⚠️要注意数组的长度一旦确定就不能再改变了,数组中的元素是按照下标在数组中进行排序的,要想访问数组中的元素,就要通过下标进行访问
//定义一个数组
int[] array = new int[] {1,2,3,4,5,6};
System.out.println("数组中的第三个元素是:"+array[2]);//要注意的是,数组中的下标是从0开始计算的
输出结果是:
数组中的第三个元素是:3
⚠️在取数组下标访问数组中的元素的时候,一定要注意数组的下标是从0开始的
数组的遍历:
数组的遍历即是讲数组的所有元素访问一边.
例 :一个数组中装着5个在[10,100]内的随机整数,要求求出5个数中最小值并打印出来
int[] array = new int[5];
int max = array[0];
for (int i = 0; i < 5; i++)
{
int num =(int)(Math.random()*(100-10+1)+10) ;//定义一个在[10 100]范围内的随机数
array[i] = num;//根据数组的下标对数组中的元素赋值
}
System.out.println(Arrays.toString(array));//讲数组以字符串的形式打印出来
for (int i = 0; i < array.length; i++) //对数组进行遍历
{
max = ( max > array[i]) ? max : array[i]; //三目运算符
}
System.out.println("数组中最大的值为:" + max);
输出的结果是:
[91, 100, 31, 50, 65]
数组中最大的值为:100
通过数组的遍历,讲数组中的所有元素都访问比较了一边,基本上凡是涉及到数组的元素了,都要对数组进行遍历.