day01~day03 概念相对比较多,多记忆就可以了。
从day04开始,要记的只有一个格式,和代码的执行流程。
更多的是去做一些相对比较综合的练习。
从day04开始,代码量就渐渐的增多了,要多思考多练习。
在练习的时候要连两点:
一上课的代码。二作业。
在晚自习的时候,先拿着讲义从头到尾复习一下,把上课没来得及写完的代码在晚自习的时候写完
然后再写作业。
如果来不及,那么在自习或者休息的时候可以继续干。
如果目前课堂上和作业里面我能全部完成,还有一点时间我该怎么办?
我个人建议,往后预习,目前而言不需要额外去找很多的练习去做。
尽可能的多学点东西,再去写一个相对比较综合的练习。
从第四天开始,代码量逐渐的加了,所以在上课的时候,建议大家还是用电脑去学习。
因为手机的屏幕太小,上课看不清字的。
第一章 数组
1.1什么是数组
数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。
1.2数组定义格式
第一种(常用)
数据类型[] 数组名示例:
int[] arr;double[] arr;char[] arr;
第二种
数据类型 数组名[]示例:
int arr[];double arr[];char arr[];
1.3数组静态初始化
1.3.1什么是静态初始化
在创建数组时,直接将元素确定
1.3.2静态初始化格式
- 完整版格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};举例:int[] arr = new int[]{1,2,3,4};
- 简化版格式
数据类型[] 数组名 = {元素1,元素2,...};举例:int[] arr = {1,2,3,4};
1.3.3静态初始化格式详解
- 等号左边:
- int:数组的数据类型
- []:代表这是一个数组
- arr:代表数组的名称
- 等号右边:
- new:为数组开辟内存空间
- int:数组的数据类型
- []:代表这是一个数组
- {}:表示数组里面存储的所有元素
1.4数组元素访问
1.4.1什么是索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
1.4.2访问数组元素格式
数组名[索引];
1.4.3索引的作用:
- 利用索引可以获取数组中的元素
- 利用索引可以把数据存储到数组中
代码示例:
public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//输出数组名System.out.println(arr); //[I@880ec60//输出数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}}
练习1:数组的遍历
遍历:把数组里面所有的元素都一一获取出来,并按照指定格式进行打印
输出格式:[1, 2, 3, 4, 5]
代码示例:
//1.定义数组并存储元素int[] arr = {1, 2, 3, 4, 5};//2.遍历//在循环开始之前,打印左括号System.out.print("[");for (int i = 0; i < arr.length; i++) {//i 依次表示数组里面的每一个索引//arr[i] 依次表示数组里面的每一个元素if(i == arr.length -1){System.out.print(arr[i]);}else{System.out.print(arr[i] + ", ");}}//在循环结束之后,打印有括号System.out.print("]");
练习2:累加求和
需求:
定义一个数组,存储1,2,3,4,5遍历数组得到每一个元素,求数组里面所有的数据和
代码示例:
//1.定义数组并存储元素int[] arr = {1,2,3,4,5};//2.遍历数组并求和//累加思想:就是定义一个变量sum,把所有的元素都累加到sum当中int sum = 0;for (int i = 0; i < arr.length; i++) {//i 依次表示数组里面的每一个索引//arr[i] 依次表示数组里面的每一个元素//问:此时我是把i累加到sum中,还是把arr[i]累加到sum中//累加arr[i]sum = sum + arr[i];// +=}//3.输出System.out.println(sum);
练习3:统计个数
需求:
定义一个数组,存储1,2,3,4,5,6,7,8,9,10<br />遍历数组得到每一个元素,统计数组里面一共有多少个能被3整除的数字
代码示例:
//1.定义数组并添加数据int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//2.看到统计,就要想要计数器思想int count = 0;for (int i = 0; i < arr.length; i++) {//i 索引 arr[i] 元素if(arr[i] % 3 == 0){count++;}}//3.循环结束之后,表示所有的元素都已经判断完毕System.out.println(count);
练习4:变化数据
需求:
定义一个数组,存储1,2,3,4,5,6,7,8,9,10<br />遍历数组得到每一个元素,将其中的奇数扩大两倍,偶数变成二分之一
//1.定义数组并存储元素int[] arr = {1,2,3,4,5,6,7,8,9,10};//2.遍历数组得到每一个元素//然后对每一个元素进行判断,如果是奇数,就*2。如果是偶数,就/2for (int i = 0; i < arr.length; i++) {//i 索引 arr[i] 元素if(arr[i] % 2 == 0){//写偶数的逻辑//先把数组里面的元素拿出来除以2,得到一个结果再赋值给原来的位置arr[i] = arr[i] / 2;}else{//写奇数的逻辑//先把数组里面的元素拿出来乘以2,得到一个结果再赋值给原来的位置arr[i] = arr[i] * 2;}}//3.遍历验证一下结果for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}
1.5 数组动态初始化
1.5.1什么是动态初始化
数组动态初始化就是只给定数组的长度,由系统给出默认初始化值。
1.5.2动态初始化格式
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
1.5.3动态初始化格式详解
等号左边:
- int:数组的数据类型
- []:代表这是一个数组
- arr:代表数组的名称
等号右边:
- new:为数组开辟内存空间
- int:数组的数据类型
- []:代表这是一个数组
- 5:代表数组的长度
1.6 数组的练习
1.6.1数组最值
最大值获取:从数组的所有元素中找出最大值。
实现思路:
- 定义变量,保存数组0索引上的元素
- 遍历数组,获取出数组中的每个元素
- 将遍历到的元素和保存数组0索引上值的变量进行比较
- 如果数组元素的值大于了变量的值,变量记录住新的值
- 数组循环遍历结束,变量保存的就是数组中的最大值
代码实现:
//扩展1:max的值能不能写0?最好不要写0。// 一般都会赋值数组中的某个元素//扩展2:循环从0开始,或者循环从1开始,对结果有没有影响?// 没有// 如果循环从0开始,那么多了一次,自己跟自己比的过程。// 对结果没有任何影响,只不过多循环了一次而已。//1.定义数组存储元素int[] arr = {33,5,22,44,55};//2.定义一个变量maxint max = arr[0];//3.遍历数组for (int i = 1; i < arr.length; i++) {// i 索引 arr[i] 元素if(arr[i] > max){max = arr[i];}}//4.当循环结束之后,max记录的就是最大值System.out.println(max);
1.6.2 遍历数组求平均额数
需求:生成10个1~100之间的随机数存入数组
1)求出所有数据的和
2)求所有数据的平均数
代码示例:
import java.util.Random;public class ArrDemo13 {public static void main(String[] args) {//1.定义数组int[] arr = new int[10];//2.生成10个随机数存入数组Random r = new Random();for (int i = 0; i < arr.length; i++) {//生成随机数int number = r.nextInt(100) + 1;//把生成的随机数存入数组arr[i] = number;}//3.求和int sum = 0;for (int i = 0; i < arr.length; i++) {//累加sum = sum + arr[i];}//4.平均数int avg = sum / arr.length;//5.打印System.out.println(avg);}}
1.6.3交换数组中的数据
本题的前置练习1:
交换两个变量的值int a = 10;int b = 20;//把a原本的值做了临时存储int c = a;//把b的值交给了a。a = b;//把c的值交给bb = c;System.out.println(a);System.out.println(b);
本题的前置练习2:
把0索引的元素跟最后一个元素进行交换int[] arr = {1,2,3,4,5};//第一个和最后一个交换// 5 2 3 4 1int temp = arr[0];arr[0] = arr[4];arr[4] = temp;for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}
需求:定义一个数组,存入1,2,3,4,5。交换首尾索引对应的元素。
交换前:1,2,3,4,5
交换后:5,4,3,2,1
代码示例:
//1.定义数组int[] arr = {1, 2, 3, 4, 5};//2.循环交换数据for (int i = 0, j = arr.length - 1; i < j; i++, j--) {//交换i和j指向的元素即可int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}//3.遍历数组for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}
