目录
(1)数组声明: 数据类型 数组名[]; 或者 数据类型[] 数组名;(最常用写法)
(3)赋值: 数组名[下标] = 数据; 注意:下标从0开始
(1)数组声明和分配空间一起写:数据类型[] 数组名 = new 数据类型[数组长度]; 或者:数据类型 数组名[] = new 数据类型[数组长度];
(2)赋值: 数组名[下标] = 数据; 注意:下标从0开始
(1)数组声明、分配空间、赋值合并简写:数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或者:数据类型 数组名[] = {数据1,数据2,...,数据n};
6.1、数组的概述
6.1.1、数组的理解
- 数组(Array):数组是一个变量,存储相同数据类型的一组数据
/*
* 变量:存储数据的空间(装数据的容器),只能存储一个数据
* 数组:存储数据的空间(装数据的容器),可以存储多个相同类型的数据
* 集合:存储数据的空间(装数据的容器),可以存储多个不同类型的数据
*/
6.1.2、数组的基本要素:
- 标识符
- 数组元素
- 元素下标:从0开始
- 元素类型
6.1.3、数组特点
- 所有数据元素在内存储中占用连续的存储单元
- 具有相同的名称
- 具有不同的下标
- 使用前必须满足“先定义,后使用”
6.1.4、使用数组(四步走)
- 声明数组 int[] a;
- 分配空间 a = new int[5];
- 赋值 a[0] = 8;
- 处理数据(使用) a[0] = a[0]*10;
1、声明数组: 告诉计算机数据类型是什么
2、分配空间: 告诉计算机分配几个连续的空间
3、赋值:向分配的格子里放数据
4、处理数据:对数据进行处理
6.2、一维数组的使用
6.2.1、分步写(数组声明、分配空间、赋值、使用)
(1)数组声明: 数据类型 数组名[]; 或者 数据类型[] 数组名;(最常用写法)
// (1)数组声明: 数据类型 数组名[]; 或者 数据类型[] 数组名;(最常用写法)
// 声明一个int类型的数组arr
int[] arr;
(2)分配空间:数组名 = new 数据类型[数组长度];
// (2)分配空间: 数组名 = new 数据类型[数组长度];
// arr里能存储5个数据,分配5个空间
arr = new int[5];
(3)赋值: 数组名[下标] = 数据; 注意:下标从0开始
// (3)赋值: 数组名[下标] = 数据; 注意:下标从0开始
arr[0] = 10;
arr[1] = 20;
arr[2] = 45;
arr[3] = 55;
arr[4] = 99;
(4)使用数据: 数组名[下标]
// (4)使用数据: 数组名[下标]
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
6.2.2、合并写(数组声明和分配空间合并、赋值、使用)
(1)数组声明和分配空间一起写:数据类型[] 数组名 = new 数据类型[数组长度]; 或者:数据类型 数组名[] = new 数据类型[数组长度];
//合并写:声明数组和分配空间一起写
//数据类型[] 数组名 = new 数据类型[数组长度]; 数据类型 数组名[] = new 数据类型[数组长度];
//声明一个长度为8的String类型的数组
String[] strs = new String[8];
(2)赋值: 数组名[下标] = 数据; 注意:下标从0开始
//赋值:数组名[下标] = 数据; 注意:下标从0开始
strs[0] = "abc";
(3)使用 :数组名[下标]
6.2.3、合并写(数组声明、分配空间和赋值合并写)
(1)数组声明、分配空间和赋值合并写:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n}; 或者:数据类型 数组名[] = new 数据类型[]{数据1,数据2,...,数据n}
//数组声明、分配空间、赋值合并写
//数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = new 数据类型[]{数据1,数据2,...,数据n}
//声明一个double类型的数组,里面存储了12.5 22.5 15.8 56.9这4个数据
double[] nums = new double[]{12.5,22.5,15.8,56.9};
6.2.4、合并简写(数组声明、分配空间、赋值合并简写)
(1)数组声明、分配空间、赋值合并简写:数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或者:数据类型 数组名[] = {数据1,数据2,...,数据n};
//数组声明、分配空间、赋值合并写可以简写
//数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = {数据1,数据2,...,数据n};
String[] strings = {"abc","qwe","asdf","zxcvb"};
char[] chars = {'你','好','世','界'};
6.2.5、上述6.2.1-6.2.4案例代码:
package com.bdqn.demo01;
public class Demo01 {
public static void main(String[] args) {
/*
* 变量:存储数据的空间(装数据的容器),只能存储一个数据
* 数组:存储数据的空间(装数据的容器),可以存储多个相同类型的数据
* 集合:存储数据的空间(装数据的容器),可以存储多个不同类型的数据
*/
// 数组声明、分配空间(告诉你数组里能存储多少个数据/数组长度)、赋值、使用
// 分步写
// (1)数组声明: 数据类型 数组名[]; 或者 数据类型[] 数组名;(最常用写法)
// 声明一个int类型的数组arr
int[] arr;
// (2)分配空间: 数组名 = new 数据类型[数组长度];
// arr里能存储5个数据,分配5个空间
arr = new int[5];
// (3)赋值: 数组名[下标] = 数据; 注意:下标从0开始
arr[0] = 10;
arr[1] = 20;
arr[2] = 45;
arr[3] = 55;
// arr[5] = 100; //ArrayIndexOutOfBoundsException 数组下标越界异常
// 面试题:写出你在开发过程中经常遇到的5个异常----》在学习过程中收集遇到过的异常
// (4)使用数据: 数组名[下标]
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);//0 int类型的数组元素默认值为0
//合并写:声明数组和分配空间一起写
//数据类型[] 数组名 = new 数据类型[数组长度]; 数据类型 数组名[] = new 数据类型[数组长度];
//声明一个长度为8的String类型的数组
String[] strs = new String[8];
//赋值
strs[0] = "abc";
System.out.println(strs[0]);
System.out.println(strs[1]);//null String类型的数组元素默认值为null
/*
* byte/short/int/long类型数组元素默认值:0
* float/double类型数组元素默认值:0.0
* char类型数组元素默认值:" "
* boolean类型数组元素默认值:false
* String类型数组元素默认值:null
*
*/
//数组声明、分配空间、赋值合并写
//数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = new 数据类型[]{数据1,数据2,...,数据n}
//声明一个double类型的数组,里面存储了12.5 22.5 15.8 56.9这4个数据
double[] nums = new double[]{12.5,22.5,15.8,56.9};
//上述数组声明、分配空间、赋值合并写可以简写
//数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或者 数据类型 数组名[] = {数据1,数据2,...,数据n};
String[] strings = {"abc","qwe","asdf","zxcvb"};
char[] chars = {'你','好','世','界'};
}
}
6.2.5、案例1:
1、声明一个长度为10的int类型的数组,然后用键盘录入给数组元素赋值
package com.bdqn.demo01; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { // 声明一个长度为10的int类型的数组,然后用键盘录入给数组元素赋值 int[] nums = new int[10]; //创建Scanner类对象 Scanner input = new Scanner(System.in); //给数组元素赋值 for(int i =0;i<10;i++){ System.out.println("请输入第"+(i+1)+"个数据:"); nums[i] = input.nextInt(); } } }
6.2.6、遍历数组:按照数组元素顺序输出数组元素
方式1、通过数数的方式数出数组有多少个元素
方式2、通过 数组名.length表达出数组有多少个元素
package com.bdqn.demo01;
public class Demo03 {
public static void main(String[] args) {
int[] nums = {11,22,33,44,23,56,24,78,94,71,66,49,29,100,234,15,36,75,67};
//遍历数组
for(int i =0;i<19;i++){
System.out.print(nums[i]+" ");
}
//数组名.length:获取数组元素个数(数组长度)
//将数组nums[]的数组长度赋给int型变量changDu
int changDu =nums.length;
System.out.println("nums数组中元素个数:"+changDu);
//遍历数组(通过nums.length)
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
}
}
6.2.7、使用 增强for循环遍历数组
-->快捷键:Alt+/ 然后选择即可
//使用增强for循环遍历数组
/*
* 语法结构:
* for(数据类型 变量名:数组名或者集合名){
* //代码
* }
*
* 执行机制:
* 将数组里或者集合里的元素依次取出来之后存储到变量中,然后你可以通过操作变量达到操作数组或集合中元素的目的
*
*/
package com.bdqn.demo02;
public class Demo02 {
public static void main(String[] args) {
int[] nums = {11,22,67,89,35,61,29};
//使用for循环来遍历数组
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
System.out.println("---------------------");
//使用增强for循环遍历数组
/*
* for(数据类型 变量名:数组名或者集合名){
* //代码
* }
* 执行机制:
* 将数组里或者集合里的元素依次取出来之后存储到变量中,然后你可以通过操作变量达到操作数组或集合中元素的目的
*
*/
for(int a:nums){
System.out.println(a);
}
String[] strs = {"qwe","123","qasd","hyjy"};
for (String string : strs) {
System.out.println(string);
}
}
}
6.2.8、练习
练习01:猜数游戏
/*
* 有一个数列:8,4,2,1,23,344,12
* 循环输出数列的值
* 求数列中所有数值的和
* 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
*/
练习02:求数组中的最大值
package com.bdqn.demo02; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { /* *练习01: * 有一个数列:8,4,2,1,23,344,12 * 循环输出数列的值 * 求数列中所有数值的和 * 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数 */ int[] nums = {8,4,2,1,23,344,12}; //循环输出数列的值 for (int i : nums) { System.out.println(i); } //求数列中所有数值的和 int sum = 0; for (int i : nums) { sum+=i; } System.out.println("数组元素之和:"+sum); //猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数 Scanner input = new Scanner(System.in); //获取键盘输入的数据 System.out.println("请输入你要猜测的数据:"); int guess = input.nextInt(); //将数组中的数据按照顺序取出来,和你猜测的数据进行比较,一旦有一个数据与猜测的数据相等,就说明数组中包含你要猜测的数据,后面就不需要再比较 for (int i = 0; i < nums.length; i++) { //比较 if(nums[i]==guess){ System.out.println("数组中有你猜测的数据"); break; } //如果比较到了最后一个数据,说明没有你要猜测的数据 if(i==nums.length-1){ System.out.println("数组中没有你要猜测的数据"); } } } }
package com.bdqn.demo03; public class Demo01 { public static void main(String[] args) { // 求数组最大值 int[] nums = {67,24,17,56,29,88,34}; //假设数组中第一个元素为最大值 int max = nums[0]; //数组中第2个元素与假设的最大值进行比较,如果第二个元素比假设的最大值大,取代最大值 for(int i =0;i<nums.length;i++){ //比较 if(nums[i]>max){ max= nums[i]; } } System.out.println("数组中元素的最大值:"+max); } }