嘉兴网站建设网站,电商平台链接怎么填写,如何给网站弄ftp,WordPress 手机编辑java基础知识 1.数组概念#xff1a; 2.数组的定义格式一#xff1a;格式二#xff1a;详解#xff1a;注意点#xff1a; 3.数组的静态初始化完整格式#xff1a;格式详解#xff1a;注意点#xff1a;简化格式:练习1#xff1a;练习2#xff1a;练习3#xff1a; … java基础知识 1.数组概念 2.数组的定义格式一格式二详解注意点 3.数组的静态初始化完整格式格式详解注意点简化格式:练习1练习2练习3 4.地址值5.数组元素访问格式作用代码示例 6.索引索引的特点 7.数组的遍历8.数组的动态初始化格式举例数组的默认初始化值 9.数组两种初始化方式的区别使用场景举例 10.数组常见问题11.数组的练习练习1求和练习2统计个数练习3变化数据练习4求最值练习5统计个数练习6交换数据练习7打乱数据 1.数组
概念
指的是一种容器可以同来存储同种数据类型的多个值。
但是数组容器在存储数据的时候需要结合隐式转换考虑。
比如
定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的
但是byte类型short类型int类型的数据是可以存到这个数组里面的。
建议
容器的类和存储的数据类型保持一致。
举例
整数1 2 3 4 56 就可以使用int类型的数组来存储。
小数1.1 1.2 1.3 1.4 就可以使用double类型的数组来存储。
字符串aaa “bbb” “ccc” 就可以使用String类型的数组来存储。
2.数组的定义
格式一
数据类型 [] 数组名
比如int [] array
格式二
数据类型 数组名 []
比如 int array []
详解
数据类型限定了数组以后能存什么类型的数据。
方括号表示现在定义的是一个数组。
数组名就是一个名字而已方便以后使用。
注意点
方法括号跟数组名谁写在前面谁写在后面都是一样的。
平时习惯性使用第一种方式。
3.数组的静态初始化
完整格式
数据类型[] 数组名 new 数据类型[]{元素1元素2元素3元素4…};
比如
int[] arr new int[]{11,22,33};
double[] arr new double[]{1.1,1.2,1.3};
格式详解
数据类型限定了数组以后能存什么类型的数据。
方括号表示现在定义的是一个数组。
数组名其实就是名字而已方便以后使用在起名字的时候遵循小驼峰命名法。
arr namesArr
new就是给数组在内存中开辟了一个空间。
数据类型限定了数组以后能存什么类型的数据。
前面和后面的数据类型一定要保持一致。
int[] arr new double[]{11,22,33};//错误写法
方括号表示现在定义的是一个数组。
大括号表示数组里面的元素。元素也就是存入到数组中的数据。
多个元素之间一定要用逗号隔开。
注意点
等号前后的数据类型必须保持一致。数组一旦创建之后长度不能发生变化。
简化格式:
数据类型[] 数组名 {元素1元素2元素3元素4…};
比如
int[] array {1,2,3,4,5};
double[] array {1.1,1.2,1.3};
练习1
定义数组存储5个学生的年龄。
1.给数组限定什么类型 int
2.利用静态初始化完成创建并添加元素
int[] agesArr new int[]{18,19,20,21,22};
int[] agesArr {18,19,20,21,22};练习2
定义数组存储3个学生的姓名。
1.给数组限定什么类型 String
2.利用静态初始化完成创建并添加元素
String[] namesArr new String[]{zhangsan,lisi,wangwu};
String[] namesArr {zhangsan,lisi,wangwu};练习3
定义数组存储4个学生的身高。
1.给数组限定什么类型 double
2.利用静态初始化完成创建并添加元素
double[] heightsArr new double[]{1.85,1.82,1.78,1.65};
double[] heightsArr {1.85,1.82,1.78,1.65};4.地址值
int[] arr {1,2,3,4,5};
System.out.println(arr);//[I6d03e736double[] arr2 {1.1,2.2,3.3};
System.out.println(arr2);//[D568db2f2打印数组的时候实际出现的是数组的地址值。
数组的地址值就表示数组在内存中的位置。
以[I6d03e736为例
[ 表示现在打印的是一个数组。
I表示现在打印的数组是int类型的。
仅仅是一个间隔符号而已。
6d03e736就是数组在内存中真正的地址值。十六进制的
但是我们习惯性会把[I6d03e736这个整体称之为数组的地址值。
地址值对于我们来京作用不大简单了解。
5.数组元素访问
格式
数组名[索引];
作用 获取数组中对应索引上的值 修改数组中对应索引上的值 一旦修改之后原来的值就会被覆盖了。
代码示例
public class ArrDemo2 {/*数组中元素访问的格式数组名[索引];作用1.获取指定索引上对应的元素2.修改指定索引上对应的元素*/public static void main(String[] args) {int[] arr {1,2,3,4,5};//需求1获取arr数组中3索引上的值int number arr[3];System.out.println(number);System.out.println(arr[3]);//需求2将arr数组中3索引上的值修改为10arr[3] 10;System.out.println(修改之后为: arr[3]);}
}6.索引
也叫角标、下标 就是数组容器中每一个小格子对应的编号。
索引的特点
索引一定是从0开始的。连续不间断。逐个1增长。
7.数组的遍历
遍历就是把数组里面所有的内容一个一个全部取出来。
数组的长度数组名.length;
通用代码
for(int i 0; i arr.length; i){//在循环的过程中i依次表示数组中的每一个索引sout(arr[i]);//就可以把数组里面的每一个元素都获取出来并打印在控制台上了。
}8.数组的动态初始化
格式
数据类型[] 数组名 new 数据类型[数组的长度];
举例
//1.定义一个数组存3个人的年龄年龄未知
int[] agesArr new int[3];//2.定义一个数组存班级10名学生的考试成绩考试成绩暂时未知考完才知道。
int[] scoresArr new int[10];数组的默认初始化值
整数类型0
小数类型0.0
布尔类型false
字符类型‘\u0000’
引用类型null
9.数组两种初始化方式的区别
静态初始化int[] arr {1,2,3,4,5};
动态初始化int[] arr new int[3];
静态初始化手动指定数组的元素系统会根据元素的个数计算出数组的长度。
动态初始化手动指定数组长度由系统给出默认初始化值。
使用场景
只明确元素个数但是不明确具体的数据推荐使用动态初始化。
已经明确了要操作的所有数据推荐使用静态初始化。
举例 使用数组来存储键盘录入的5个整数。 int[] arr new int[5]; 将全班的学生成绩存入数组中已知学生成绩为66,77,88,99,100 int[] arr new int[5]; arr[0] 66; arr[1] 77; … 虽然可以实现但是太麻烦了。 建议使用静态初始化int[] arr {66,77,88,99,100};
10.数组常见问题
当访问了数组中不存在的索引就会引发索引越界异常。
避免
针对于任意一个数组索引的范围 最小索引0 最大索引数组的长度 - 1 数组名.length - 1
public class ArrDemo6 {public static void main(String[] args) {int[] arr {1,2,3,4,5,5,5,5,5};//用索引来访问数组中的元素System.out.println(arr[1]);System.out.println(arr[10]);//ArrayIndexOutOfBoundsException}
}11.数组的练习
练习1求和
需求定义一个数组存储1,2,3,4,5
遍历数组得到每一个元素求数组里面所有的数据和
代码示例
/*定义一个数组存储1,2,3,4,5遍历数组得到每一个元素求数组里面所有的数据和*///分析
//1.定义一个数组并添加数据1,2,3,4,5
int[] arr {1,2,3,4,5};//求和变量
int sum 0;
//2.遍历数组得到每一个数据累加求和
for (int i 0; i arr.length; i) {//i 依次表示数组里面的每一个索引//arr[i] 依次表示数组里面的每一个元素sum sum arr[i];
}//当循环结束之后sum的值就是累加之后的结果
System.out.println(sum);练习2统计个数
需求定义一个数组存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素统计数组里面一共有多少个能被3整除的数字
代码示例
//分析
//1.定义一个数组 存储1,2,3,4,5,6,7,8,9,10
int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//定义一个变量用来统计次数
int count 0;
//2.遍历数组得到每一个元素
for (int i 0; i arr.length; i) {//i 表示数组里面的每一个索引//arr[i] 表示数组里面的每一个元素//3.判断当前的元素是否为3的倍数如果是那么统计变量就需要自增一次。if(arr[i] % 3 0){// System.out.println(arr[i]);count;}
}
//当循环结束之后就表示数组里面所有的数字都判断完毕了直接打印count即可
System.out.println(数组中能被3整除的数字有 count 个);练习3变化数据
需求
定义一个数组存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素。
要求
1如果是奇数则将当前数字扩大两倍
2如果是偶数则将当前数字变成二分之一
代码示例
//分析
//1.定义一个数组存1,2,3,4,5,6,7,8,9,10
int[] arr {1,2,3,4,5,6,7,8,9,10};
//2.遍历数组得到每一个元素
for (int i 0; i arr.length; i) {//i 依次表示数组里面的每一个索引//arr[i] 依次表示数组里面的每一个元素//3.对每一个元素进行判断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]);
}练习4求最值
需求求数组中的最大值
代码示例
//定义数组求最大值33,5,22,44,55//扩展问题
//1.根据求最大值的思路自己改写一下求最小智
//2.为什么max要记录为arr[0],默认值不能为0吗
//不能写0
//max的初始化值一定要是数组中的值。
//3.循环中开始条件一定是0吗
//循环的开始条件如果为0那么第一次循环的时候是自己跟自己比了一下对结果没有任何影响但是效率偏低
//为了提高效率减少一次循环的次数循环开始条件可以写1.//1.定义数组用来存储5个值
int[] arr {33,5,22,44,55};
//2.定义一个变量max用来存储最大值
//临时认为0索引的数据是最大的
int max arr[0];
//3.循环获取数组中的每一个元素
//拿着每一个元素跟max进行比较
for (int i 1; i arr.length; i) {//i 索引 arr[i] 元素if(arr[i] max){max arr[i];}
}
//4.当循环结束之后max记录的就是数组中的最大值
System.out.println(max);//55练习5统计个数
需求生成10个1~100之间的随机数存入数组。
1求出所有数据的和
2求所有数据的平均数
3统计有多少个数据比平均值小
代码示例
//分析
//1.定义数组
int[] arr new int[10];
//2.把随机数存入到数组当中
Random r new Random();for (int i 0; i arr.length; i) {//每循环一次就会生成一个新的随机数int number r.nextInt(100) 1;//把生成的随机数添加的数组当中//数组名[索引] 数据;arr[i] number;
}// 1求出所有数据的和
//定义求和变量
int sum 0;
for (int i 0; i arr.length; i) {//循环得到每一个元素//并把元素累加到sum当中sum sum arr[i];
}
System.out.println(数组中所有数据的和为 sum);//2求所有数据的平均数
int avg sum / arr.length;
System.out.println(数组中平均数为 avg);//3统计有多少个数据比平均值小
int count 0;
for (int i 0; i arr.length; i) {if(arr[i] avg){count;}
}//当循环结束之后就表示我已经找到了所有的比平均数小的数据
System.out.println(在数组中一共有 count 个数据比平均数小);//遍历数组验证答案
for (int i 0; i arr.length; i) {System.out.print(arr[i] );
}练习6交换数据
需求定义一个数组存入1,2,3,4,5。按照要求交换索引对应的元素。
交换前1,2,3,4,5
交换后5,2,3,4,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;
}
//当循环结束之后那么数组中的数据就实现了头尾交换
for (int i 0; i arr.length; i) {System.out.print(arr[i] );
}练习7打乱数据
需求定义一个数组存入1~5。要求打乱数组中所有数据的顺序。
代码示例
//1.定义数组存储1~5
int[] arr {1, 2, 3, 4, 5};
//2.循环遍历数组从0索引开始打乱数据的顺序
Random r new Random();
for (int i 0; i arr.length; i) {//生成一个随机索引int randomIndex r.nextInt(arr.length);//拿着随机索引指向的元素 跟 i 指向的元素进行交换int temp arr[i];arr[i] arr[randomIndex];arr[randomIndex] temp;
}
//当循环结束之后那么数组中所有的数据已经打乱顺序了
for (int i 0; i arr.length; i) {System.out.print(arr[i] );
}后记 美好的一天到此结束下次继续努力欲知后续请看下回分解写作不易感谢大家的支持