CGB开班第五天
作者:互联网
while循环
语法格式:循环初始值;
while(布尔表达式){ 循环体; 步进语句; }
执行过程:先判断布尔表达式,布尔表达式为true时,执行循环体和步进语句,执行完后再次进行判断布尔表达式,一直循环到布尔表达式为false时才停止循环。
应用场景:while常用作于死循环,循环条件直接写成true。
猜数字案例:
import java.util.Random;
import java.util.Scanner;
/**
* 本类用于while循环
*/
public class WhileLoop {
/**
* 电脑生成随机数的方法
*
* @return 返回电脑产生0-100之间的随机整数给调用处
*/
public static int createNum() {
Random random = new Random();
return random.nextInt(101);
}
/**
* 用户输入猜的数字的方法
*
* @return 返回用户猜的数字给调用处
*/
public static int userGuess() {
System.out.print("请输入一个0-100的整数:");
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
/**
* 用户猜的数字和电脑随机生成的随机数进行比较的方法
*/
public static void guess() {
int computerNum = createNum();
int playNum = userGuess();
/**
* while常用作于死循环,循环条件直接写成true
* 死循环必须在合适的时候设置出口
*/
while (true) {
if (playNum == computerNum) {
System.out.println("真厉害,猜对了!!!");
break;
} else if (playNum > computerNum) {
System.out.println("真可惜,猜大了");
} else {
System.out.println("真可惜,猜小了");
}
playNum = userGuess();
}
}
public static void main(String[] args) {
/**
* 需求:产生一个随机数,和用户猜的数字作比较,直到用于猜对
*/
System.out.println("让我们来玩猜数字的小游戏吧!");
guess();
}
}
【注意】
while循环可能一次也不执行。
while循环小括号后面不能添加分号,否则会变成死循环。
do-while循环
语法格式:
do{
循环体;
}while(布尔表达式);
执行过程:先进行循环体,循环体运行完后在进行布尔表达式的判断,为true则继续执行循环体到判断布尔表达式为false时才停止。
【注意】
do-while循环最少执行一次。
do-while的while小括号后面的分号不能丢。
int n = 0;
int count = 0; // 统计循环次数
do {
System.out.println("我是循环体");
n = new Random().nextInt(301);
System.out.println("变量n的值为" + n);
System.out.println();
count++;
}while (n != 250);
数组
数组的创建
数组是Java在内存中开辟连续空间的引用类型变量。
数组的创建分为两种:动态创建和静态创建。
静态创建数组时就会给数组当中的每一个下标元素赋值。
静态数组的创建分为两种:
第一种方式创建静态数组:数组类型[] 数组名 = new 数组类型[]{ 数组下标元素的值 }
第二种方式创建静态数组:数组类型[] 数组名 = { 数组下表元素的值 }
动态创建只是在开始规定数组的长度,数组下标元素的数据是系统默认值。
动态创建数组:数组类型[] 数组名 = new 数组类型[ 数组长度 ];
// 1、静态创建数组的第一种方式
int[] arrA = new int[]{1, 2, 3, 4};
// 2、静态创建数组的第二种方式
char[] ch = new char[]{'H', 'e', 'l', 'l', 'o'};
// 3、动态创建数组
String[] arrStr = new String[3];
数组的长度
求数组的长度语法:数组名.length;
// 静态创建数组
int[] arrIntStaticOne = {1, 2, 3, 4, 5, 6};
// 打印输出数组的长度
System.out.println(arrIntStaticOne.length); // 数组的长度为6
【注意】
数组一旦被创建,数组的长度不可改变。
数组的下标
数组的下标:数组的下标是从0开始,最大的数组下标是数组的长度 - 1。
我们就是通过操作数组下标来对数组下标元素的值进行操作的。
Arrays.toString()方法
直接利用输出语句来打印输出数组名,得到的是一个数组在内存空间的地址值。
而利用Arrays.toString(参数列表);的方法与输出语句搭配使用就可以得到数组的下表元素的数据值。
// 静态创建数组
int[] arrIntStaticOne = {1, 2, 3, 4, 5, 6};
// 打印输出数组下标元素中的值
System.out.println(Arrays.toString(arrIntStaticOne));
// 打印输出的结果为:[1, 2, 3, 4, 5, 6]
Arrays.toString(参数列表);
参数列表就是需要传入数组名。
【注意】
Arrays工具类需要导包。
char类型数组可以直接和输出语句使用来直接输出char类型数组下标元素的数据值。
数组的扩容与缩容
数组的扩容与缩容需要用到Arrays工具类中的copyOf(参数列表);方法
copyOf(参数列表);
参数列表1:需要扩容的数组
参数列表2:数组的长度
扩容:给数组扩大容量,新数组的长度大于原数组的长度。
扩容思路:先创建对应新长度的新数组,每个位置的默认值为0,然后从原数组中将数组复制到新数组,没有被覆盖的位置还是默认值。
缩容:缩小数组的容量,新数组长度小于缩容前数组的长度。
缩容思路:先创建对应新长度的新数组,每个位置初始化默认值为0,然后从原数组中复制指定个数的数据到新数组中,类似于"截取"一部分。
指定首尾截取原数组中的元素:
copyOfRange(); 用于完成数组的截取。
参数1:要截取哪个数组【原数组】。
参数2:从哪个下标开始。
参数3:到哪个下标结束。
截取范围:左闭右开区间。
如果下标越界,那么会即会截取,又会扩容。
【注意】
数组的扩容和缩容不是真的扩容和缩容,因为数组一旦创建长度不可改变,而是在内存中新建一个数组,将数组变量名保存的原数组的地址值替换为新数组的地址值,原数组会被Java回收机制给处理掉
循环遍历输出数组内容
/**
* 创建一个获取1年中12个月每个月天数的方法,并且打印输出
*/
public static void dayOfMonth() {
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < days.length; i++) {
System.out.println("第" + (i + 1) + "个月有:" + days[i] + "天");
}
}
i < days.length;的原因是因为数组下标从开始,数组下标最大值等于数组长度-1。
如果等于数组长度,则会出现数组下标越界异常。i的每一个值都代表着days数组的每一个下标。
方法
方法的重载:
方法的重载的意义:为了提高代码的复用性和灵活性。
方法的重载:
在同一个类中,存在方法名相同,但是参数列表不同的方法
如果在同类中,同名方法的参数个数不同,一定构成重载
如果在同类中,同名方法的参数个数不同,可能构成重载,需要查看方法的参数类型,和参数名无关
【注意】
方法的重载与方法的参数类型有关
方法的重载与方法的参数名无关
方法的重载与方法的返回值无关
方法的重载与方法的名称有关
方法的重载与方法的访问修饰符无关
方法的重载与方法的参数列表个数有关
/**
* 本类用于演示方法的重载
*/
public class MethodOverride {
private static void method() {
System.out.println("哈哈哈哈哈哈,我没有参数和返回值");
}
public static void method(int num){
System.out.println("哈哈哈,我的参数是" + num);
}
public static void main(String[] args) {
/**
* 通过方法名+参数列表来调用方法
*
* 方法的重载:
* 在同一个类中,存在方法名相同,但是参数列表不同的方法
*
* 如果在同类中,同名方法的参数个数不同,一定构成重载
* 如果在同类中,同名方法的参数个数不同,可能构成重载,需要查看方法的参数类型,和参数名无关
*
* 方法的重载与方法的参数类型有关
* 方法的重载与方法的参数名无关
* 方法的重载与方法的返回值无关
* 方法的重载与方法的名称有关
* 方法的重载与方法的访问修饰符无关
* 方法的重载与方法的参数列表个数有关
*/
method();
method(666);
}
}
标签:下标,CGB,System,开班,参数,数组,重载,第五天,方法 来源: https://blog.csdn.net/qq_46484190/article/details/121750897