1.1 循环高级综合练习
1.1.1 无限循环

注意事项:
无限循环下面不要在写其他代码,因为循环永远停不下来,无法执行下面的语句。
1.1.2 跳转控制语句
练习;

public static void main(String[] args) {
for (int i = 0; i <= 5 ; i++) {
if (i==3){
//结束本次循环开启下次循环
continue;
}
System.out.println("小老虎在吃包子"+i);
}
}
练习:

public static void main(String[] args) {
for (int i = 0; i <= 5 ; i++) {
if (i==3){
//结束整个循环
System.out.println("小老虎在吃包子"+i);
break;
}
System.out.println("小老虎在吃包子"+i);
}
}
分类:
- continue: 跳过本次循环,继续执行下次循环。
- break :结束整个循环。
1.1.4 获取随机数
- 导包
import java.util.Random;- 创建对象
Random r = new Random();- 生成随机数
//包头不包尾,包左不包右 //这个范围从0开始,到这个数减一结束 int number = r.nextInt(100);//0~99
获取固定范围的随机数:
-
让这个范围头尾都减一个值,让这个范围从0开始
-
让尾巴加1
-
最终的结果,在加上第一步减去的值
1.1.3 练习
练习一:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始的数字");
int number = sc.nextInt();
for (int i = number; i <=100; i++) {
if (i%10==7||i/10%10==7||i%7==0){
System.out.println("过");
continue;
}
System.out.println(i);
}
}
练习二:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int number = sc.nextInt();
int i = 1;
int j;
do{
i++;
j = i*i;
// System.out.println(i);
}while (j<=number);
System.out.println("平方根:"+ (i-1));
}
方法二:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int number = sc.nextInt();
for (int i = 1; i < number ; i++) {
if (i*i == number){
System.out.println("平方根为: "+i);
break;
}
if (i*i>number){
System.out.println("平方根为: "+(i-1));
break;
}
}
}
练习三:

质数:如果一个整数只能被1和本身整除,则是质数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int number = sc.nextInt();
//定义一个变量,表示标记
/*
标记numbers是否是一个质数
true 是质数
false 不是质数
当前使用count标记
*/
int count=0;
for (int i = 2; i < number; i++) {
if (number%i==0){
System.out.println("不是质数 "+i);
count++;
break;
}
}
if (count==0){
System.out.println(number+"是质数");
}
}

练习四:

public static void main(String[] args) {
//扩展需求:加一个保底,三次不中则直接猜中
Random r = new Random();
//包头不包尾,包左不包右
//这个范围从0开始,到这个数减一结束
int number = r.nextInt(100)+1;//0~99
//秘诀
/*
让这个范围头尾都减一个值,让这个范围从0开始
让尾巴加1
最终的结果,在加上第一步减去的值
*/
Scanner sc = new Scanner(System.in);
int count=0;
while (true){
System.out.println("请输入你猜的数字");
int n = sc.nextInt();
count++;
if (count==3){
System.out.println("猜中了");
break;
}
if (n<number){
System.out.println("小了");
} else if (n>number) {
System.out.println("大了");
} else{
System.out.println("猜中了");
break;
}
}
}
1.2 数组
1.2.1 数组介绍
数组:一种容器,可以用来存储同种类型的多个值。

1.2.2 数组的定义

1.2.2.1 数组的初始化
初始化:在内存中为数组容器开辟空间,并将数据存入容器的过程。
初始化的两种方式:
静态初始化
动态初始化
静态初始化


注意点:
范例中数据的长度为三。
数组创建完毕后他的长度就固定了不能发生变化。
1.2.2.3 数组的地址和元素访问
数组的地址值表示数组在内存中的位置。
扩展:
解释地址值的格式含义 [D@776ec8df
- [ 表示当前是一个数组
- D 表述当前数组中的元素是double类型的
- @ 表示一个间隔符号(固定搭配)
- 776ec8df 是真正的地址值
1.2.2.3.1 数组元素访问
索引:下标,角标。
特点:从0开始,逐个+1增长,连续不间断。
1.2.2.4 数组遍历
数组遍历:将数组中的所有内容取出来,遍历指取出数据的过程。
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
// 获取数组的所有数据
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
扩展
自动生成数组遍历的方式:idea提供, 数组名.fori
练习:

public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//定义求和变量
int sum = 0;
// 获取数组的所有数据
for (int i = 0; i < arr.length; i++) {
int i1 = arr[i];
sum = sum +i1;
}
System.out.println(sum);
}
练习二:

public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
//记录被三整除的个数
int count = 0;
// 获取数组的所有数据
for (int i = 0; i < arr.length; i++) {
if (arr[i]%3==0){
System.out.println(arr[i]);
count++;
}
}
System.out.println(count);
}
练习三:

public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < arr.length; i++) {
if (arr[i]%2==0){
// 偶数
arr[i] = arr[i]/2;
}else {
arr[i] = arr[i]*2;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
动态初始化

-
默认初始化值的规律: /* 整数:0 小数:0.0 字符类型:'/u0000' 空格 布尔类型: fales 引用数据类型: null */
public static void main(String[] args) {
int[] arr = new int[10];
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// }
//添加数据
arr[0] = 10;
arr[2]=20;
//获取信息
System.out.println(arr[0]);
System.out.println(arr[1]);//默认初始化值,0
System.out.println(arr[2]);
//默认初始化值的归路
/*
整数:0
小数:0.0
字符类型:'/u0000' 空格
布尔类型: fales
引用数据类型: null
*/
}
1.2.2.5 动态和静态初始化的区别

1.2.2.6 数组的常见问题
当访问了数组中不存在的索引,就会引发索引越界异常。
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//长度5
//最小索引:0
//最大索引:4
System.out.println(arr[10]);//发生索引越界异常
}
练习一:

public static void main(String[] args) {
//拓展
/*
写最小值
max必须要赋初值为arr[0],否则如果数组中都为负数则判断出错
循化最好从1开始因为赋初值为arr[0],不需要比较。
*/
int[] arr = {33,5,22,44,55};
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
if (arr[i]<min){
min = arr[i];
}
}
System.out.println(max);
System.out.println(min);
}
练习二:
public static void main(String[] args) {
int[] arr = new int[10];
Random r=new Random();
int n;
//求和
double sum = 0;
//平均数
double avg;
//小于平均数的标记
int count = 0;
for (int i = 0; i < arr.length; i++) {
n = r.nextInt(100)+1;
arr[i] = n;
sum +=n;
}
System.out.println(sum);
avg = sum/arr.length;
System.out.println(avg);
for (int i = 0; i < arr.length; i++) {
if (arr[i]<avg){
count++;
}
}
System.out.println(count);
}
练习三:

public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int temp;
// int i = 0;
// while (i<(4-i)){
// temp = arr[i];
// arr[i] = arr[(4-i)];
// arr[(4-i)] = temp;
// i++;
// }
// for (int j = 0; j < arr.length; j++) {
// System.out.println(arr[j]);
// }
//方法二:
//定义两个变量
for (int k = 0, j= arr.length - 1;k<j;k++,j--){
temp = arr[k];
arr[k] = arr[j];
arr[j] = temp;
}
for (int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
练习四:

public static void main(String[] args) {
Random r = new Random();
int[] arr = {1,2,3,4,5};
int temp;
for (int i = 0; i < arr.length; i++) {
int n = r.nextInt(arr.length);
temp = arr[i];
arr[i] = arr[n];
arr[n] = temp;
}
for (int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
1.3 java 的内存分配









1万+

被折叠的 条评论
为什么被折叠?



