千锋武汉Java培训老师分享数组知识梳理
Java是一门面向对象编程语言,具有简单易用、功能强大的特征。数组是同类型数据的有序集合,在Java中是引用数据类型,引用数据类型值都存储在堆中。有很多新手初学Java数组觉得难度大,接下来千锋武汉Java培训老师就给大家简单梳理一下数组相关的知识点。
一、数组的定义及初始化
1、定义一个数组的格式为:数据类型[] 数组名称;数据类型代表数组中保存的数据全都是统一的哪种类型。通过数组名称可以使用其中的多个数据。
2、数组一定要初始化之后才可以使用。初始化是指:为数组在内存当中开辟内存空间,用来保存数据,并且设置默认值。没有初始化的数组无法使用。数组的初始化方式分成两种:
1)动态初始化,指定长度。格式为:
数据类型[] 数组名称 = new 数据类型[长度];
数据类型[] 数组名称;
数组 = new 数据类型[长度];
数组元素的默认值规则为:整数默认为0,浮点数默认为0.0,字符默认为’\u0000’,布尔值默认为false,字符串等引用类型默认为null。
2) 静态初始化,指定内容。除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。
int[] a = { 1, 2, 3};// 静态初始化基本类型数组
Man[] mans = { newMan(1, 1), newMan(2, 2) };// 静态初始化引用类型数组
二、访问数组元素
直接打印数组的名称,得到的是“内存地址值”(的哈希值)。要想访问数组中的元素,需要使用格式:数组名称[索引编号]
其中索引编号是数组中元素的int型数字编号,从0开始,一直到数组的长度-1为止。
三、获取数组长度
无论是动态还是静态初始化,数组一定是具有长度的。获取长度的格式:数组名称.length
这将得到一个int数字代表长度,注意,数组在内存当中一旦被创建,那么长度不可改变。
四、数组索引越界异常
如果访问的数组元素索引并不存在,那么将会发生异常:java.lang.ArrayIndexOutOfBoundsException。
注意,数组元素索引编号从0开始,一直到“数组长度-1”为止。
五、数组遍历
public static void main(String[] args) {
int[] arr = new int[3]
;for (int i = 0; i < arr.length; i++) {arr[i] = i + 1;
}
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3]
}
如果不需要使用数组小标的化可以使用简化语法:for each,格式为:
for (type item : arrName) {... // 操作}
如:
public static void main(String[] args) {
String[] arr = new String[]{
"hello", "world", "!!"
};for (String v : arr) {
System.out.println(v); // 循环输出arr中的字符串
}
}
六、数组复制
1) System.arraycopy() 系统提供的方法:
/*** @param src 原数组* @param srcPos 拷贝原数组起始位置* @param dest 目标数组* @param destPos 目标数组起始位置* @param length 拷贝数组元素个数*/public static void native arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
2) clone对象克隆:
int[] src = {1, 2, 3};int[] dest = src.clone();
3) Arrays.copyOf、Arrays.copyOfRange 方法
int[] src = {1, 2, 3};
int[] dest1 = Arrays.copyOf(src, 3);
int[] dest2 = Arrays.copyOfRange(src, 1, 3);
System.out.println(Arrays.toString(dest1)); // 输出:[1, 2, 3]
System.out.println(Arrays.toString(dest2)); // 输出:[2, 3]
4) for 循环,挨个元素复制
int[] src = new int[]{1, 2, 3};
int[] dest = new int[3];
for (int i = 0;
i < src.length; i++) {
dest[i] = src[i];
}
System.out.println(Arrays.toString(dest)); // 输出:[1, 2, 3]
七、数组排序
static void sort(int[] a) // 对整型数组比较后按升序排序
static void sort(int[] a, int fromIndex, int toIndex) // 对整型数组比较指定范围数据按升序排序
public static<T> void sort(T[] a,Comparator c) // 根据指定比较器产生的顺序对指定对象数组进行排序
public static<T> void sort(T[] a,int fromIndex,int toIndex,Comparator c) // 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序
八、数组查找/搜索
Arrays.binarySearch(Object[] arr, Object key)
arr:要搜索的数组,搜索前必须对数组先进行sort排序
key:要搜索的值返回值:如果key在arr中,则返回搜索值得索引,否则返回-1或-[插入点索引值]
插入点索引值:
1)key不在arr中,且在数组值范围内,从1开始计数,索引值为-[插入点索引值];
2)key不在arr中,且大于数组内元素,索引值为-[arr.length + 1];
3)key不在arr中,且小于数组内元素,索引值为-1。
Arrays.binarySearch(Object[] arr, int fromIndex, int toIndex, Object key)
arr:要搜索的数组,搜索前必须对数组先进行sort排序
fromIndex:查找起始位置
toIndex:查找结束位置
key:要搜索的值
返回值:如果key在arr查找范围中,则返回搜索值得索引,否则返回-1或-[插入点索引值]
插入点索引值:
1)key不在arr中,且在数组值范围内,从1开始计数,索引值为-[插入点索引值];
2)key不在arr中,且大于范围数组内元素,索引值为-[toIndex + 1];
3)key不在arr中,且小于范围数组内元素,索引值为-[fromIndex + 1]。
以上就是千锋武汉Java培训小编整理的数组的相关知识点。Java基础知识点繁多,你需要认真掌握。如果你想快速系统的入门Java开发、掌握企业所需的核心技术点,可以来千锋武汉Java培训班。
千锋武汉Java培训课程大牛讲师全程面授,JavaEE+分布式开发学科全面升级“六维全息课程体系”。覆盖微服务架构+大中台战略,让你Java核心技术全掌握,热门行业项目,多学科联合项目,职业素养及职后发展能力,稳步进阶中高级程序员。
从入学到就业,千锋教育真正为学生考虑,与众多大型企业深入合作,联合企业上门招聘、订单式培养、企业直推,帮助企业及社会输出大批优质人才,学生就业后,讲师也会帮助学员解决工作中遇到的难题,真正做到一次学习终生受益!
猜你喜欢LIKE
相关推荐HOT
更多>>武汉it培训价格多少?零基础能学吗
武汉it培训价格多少?武汉it价格一般在两万左右,学习周期一般在五个月左右,当然it学习的费用也受很多因素的影响,所以这并不是衡量一个IT培训...详情>>
2023-01-17 16:28:00如何成为Java工程师?推荐来千锋武汉Java培训机构!
当前IT的发展,已经成为我国的重大产业之一,很多的企业为了争夺优秀的专业人才,不惜给出丰厚的薪资待遇。据统计,每年IT行业的人才缺口可达到...详情>>
2022-07-06 11:58:00从三个方面分析,参加武汉Java培训班有用吗?
很多人都向往Java编程的广阔从业前景,却苦于不懂Java编程知识,一直在自学和参加培训中纠结。今天千锋武汉Java培训小编就跟大家一起来讨论下这...详情>>
2022-07-04 14:49:00如何判断自己适不适合学武汉Java培训?
随着IT行业日新月异的发展,不少人都把目光投向了薪资优越的IT软件行业。在招聘网站的数据中,对Java开发人员一直是供不应求,而且Java开发人员...详情>>
2022-07-01 10:50:00热门推荐
什么是web前端开发?在哪学效果比较好
沸想转行学it会不会有更多的就业机会
热JAVA培训班多少钱?JAVA培训班费用的影响因素
热如何快速学习java?学习java主要学什么
新学java有什么用,怎样才能学好java
java学费大概多少,前后需要学习多少时间
学前端好还是后端好?哪个更吃香呢?
武汉前端培训费用,值不值得学呢?
哪里有较好的程序员培训班?如何选择呢?
武汉程序员培训班要多少钱?报名很贵吗
软件开发需要什么学历?学历的重要性
it培训费用大概多少钱?报培训班的好处有哪些
学it一般要多少钱?专业怎么选
武汉it培训价格多少?零基础能学吗