【Java】数组Array(概念、相关语法、相关算法)
数组
⽂章⽬录
1、数组的相关概念和名词(了解)
1、数组(array):
数组(array):简单的说,就是⼀组数, ⼀组具有相同数据类型的数,是按照⼀定顺序排列的集合。
当⼀组数据的数据类型,意义是⼀样的时候,那么为了⽅便的统⼀的管理它们,我们需要⽤新的数据的存储结构来进⾏存储。例如:数组。
所谓数组(Array),就是相同数据类型的元素按⼀定顺序排列的集合,就是把有限个类型相同的变量⽤⼀个名字命名,以便统⼀管理他们,然后⽤编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。
组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数组的长度(length)。
数组
是⼀组具有相同数据类型的数据按照⼀定顺序排列的集合。
把有限的⼏个相同类型的变量使⽤⼀个名称来进⾏统⼀管理。
2、数组名:
(1)这个数组名,代表的是⼀组数
(2)这个数组名中存储的整个数组的“⾸地址”
int[] scores =new int[3];
scores[0]=100;
//数组名:例如:scores
3、下标(index):
我们使⽤编号、索引、下标来区别表⽰⼀组数当中某⼀个。
范围:[0,数组长度-1]
例如:遍历 for(int i = 0; i<arr.length; i++){}
int[] scores =new int[3];
scores[0]=100;
//数组名:例如:scores
//下标:范围:[0,长度-1]
// 例如:[0]
4、元素(element):
这⼀组中的每⼀个数据都是元素。
如何表⽰数组元素? 数组名[下标]
int[] scores =new int[3];
scores[0]=100;
//数组名:例如:scores
//下标:范围:[0,长度-1]
// 例如:[0]
//元素:数组名[下标]
// 例如:scores[0]
5、数组的长度(length)
数组中元素的总个数。
如何获取数组长度? 数组名.length
int[] scores =new int[3];
scores[0]=100;
/
/数组名:例如:scores
//下标:范围:[0,长度-1]
// 例如:[0]
//元素:数组名[下标]
// 例如:scores[0]
//数组的长度:元素的总个数,可以这么表⽰:数组名.length
数组、数组名、下标、元素、长度等名词了解就⾏,沟通的⽅便。
为什么要⽤数组呢?我⽤变量存储不⾹吗?
变量存储那么多不⿇烦吗?声明、变量名、变量值,计算处理都不⽅便。
eg:
class Test01_Array{
public static void main(String[] args){
/*
要存储本组学员的成绩,例如:第1组,有5个同学
*/
/*
int score1 = 100;
int score2 = 90;
int score3 = 80;
int score4 = 70;
int score5 = 60;
//⽤5个变量存储没问题,但是如果涉及到对数据的管理:例如,求最值,排序等,就⾮常⿇烦 */
int[] scores =new int[5];//⽤scores这⼀个统⼀的名称,来管理5个int类型的元素
scores[0]=100;//每⼀个元素都有⾃⼰的下标,编号,索引
scores[1]=90;
scores[2]=80;
scores[3]=70;
scores[4]=60;
// scores[6] = 50;// java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常
System.out.println(scores.length);
for(int i =0; i < scores.length; i++){
System.out.print(scores[i]+"\t");
}
}
}
Result
5
100 90 80 70 60
Process finished with exit code 0
2 、数组的相关语法
2.1、数组的声明
语法格式:
public class Test01_Review{
public static void main(String[] args){
/
/推荐
int[] arr1;//在Java中int[]是⼀种引⽤数据类型,是数组类型
//也对,但是不推荐
int arr2[];
//最早的时候,C语⾔不提对象的概念,所以没有把int[]看成⼀种数据类型,//只是强调⼀组数,⽽最重要的是这组数据的类型是int类型
//int[] arr = new int[5]{1,2,3,4,5};//错误的
}
}
⽰例:
//要存储⼀组整数
int[] array;
//要存储⼀组单字符
char[] array;
//要存储⼀组字符串
String[] array;
数组
//数组的声明原则:先声明后使⽤
//声明⼀个数组?
//语法格式;
//元素的数据类型[] 数组名;
class Test02_ArrayDefineAndUse{
public static void main(String[] args){
/
/(1)声明⼀个数组,⽤来存储⼏个学员的成绩
int[] scores;
//(2)初始化数组
//静态初始化
//数组名 = new 元素的数据类型[]{元素的值列表};
scores =new int[]{89,45,67,88,90};
//如果把数组的声明与静态初始化合成⼀句
//int[] scores = new int[]{89,45,67,88,90};
//甚⾄还可以简化:
//int[] scores = {89,45,67,88,90};
System.out.println("数组的长度:"+ scores.length);
/
/(3)遍历数组
//下标index的范围:[0,长度-1]
//下标index的范围:[0,scores.length-1]java定义一维数组并赋值
for(int index =0; index<scores.length; index++){
//每⼀个元素,就是数组名[下标]
System.out.println(scores[index]);
}
}
}
回忆:
变量的声明与使⽤
(1)变量的声明
数据类型变量名;
(2)变量的初始化
变量名 = 变量值;
声明和初始化合成⼀句
数据类型变量名 = 变量初始值;
exercise
/*
2、数组的练习2:
⽤⼀个数组,保存平年1-12⽉的满⽉天数,并且遍历显⽰结果:
1⽉:31天
2⽉:28天
...
*/
class Test04_Exer2{
public static void main(String[] args){
//⽤⼀个数组,保存平年1-12⽉的满⽉天数,
int[] daysOfMonth ={31,28,31,30,31,30,31,31,30,31,30,31};
//并且遍历显⽰结果
for(int i=0; i<daysOfMonth.length; i++){
// System.out.println((i+1) + "⽉:" + daysOfMonth[i]);
System.out.print((i+1)+"⽉:"+ daysOfMonth[i]+"\t");
}
}
}
/*
3、数组的练习3:
⽤⼀个数组,保存星期⼀到星期天的7个英语单词,
从键盘输⼊1-7,显⽰对应的单词
*/
class Test05_Exer3{
public static void main(String[] args){
//⽤⼀个数组,保存星期⼀到星期天的7个英语单词,
String[] weeks ={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
// 从键盘输⼊1-7,显⽰对应的单词
java.util.Scanner input =new java.util.Scanner(System.in);
System.out.print("请输⼊星期(1-7):");
int week = Int();
if(week<1|| week>7){
System.out.println("输⼊有误!");
}else{
//week对应的英语单词在weeks数组中
//week=1,weeks[0]
//week=2,weeks[1]
/
/...
System.out.println(week+"对应的星期的单词是:"+ weeks[week-1]);
}
//Result
//请输⼊星期(1-7):7
//7对应的星期的单词是:Sunday
//
//Process finished with exit code 0
}
}
2.2、数组的初始化
数组初始化的⽬的:
(1)确定数组的长度。
(2)为元素赋值,就是确定数组的元素的值。
两种初始化⽅式:
1、动态初始化
语法格式:
//指定数组长度
数组名=new元素的数据类型[长度];
//为元素赋值
数组名[下标]=值;//这个值可以是个常量值,也可以是个表达式的计算结果,也可以是键盘输⼊的//如果每个元素的赋值⽐较有规律,通常使⽤for循环赋值
for(int i=0; i<;长度; i++){
数组名[下标]=值;
//数组名[i] = 值;
}
问:如果只指定数组长度,没有为元素⼿动赋值,那么元素有值吗?
有默认值
(1)基本数据类型
byte,short,int,long:0
float,double:0.0
char:\u0000
boolean:false
(2)引⽤数据类型
统统都是null
没有为元素⼿动赋值,那么元素有值吗?
有默认值
基本的 0,0.0,\u0000,false
引⽤数据类型
统统都是null的
2、静态初始化
语法格式:
数组名=new元素的数据类型[]{值列表};
//int[] arr = new int[5]{1,2,3,4,5};//错误的
//更简洁
/
/当声明与静态初始化⼀起完成时,可以简化
元素的数据类型[]数组名={值列表};
静态初始化
适⽤场合:
当数组的元素是已知的有限个时,可以使⽤静态初始化。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论