数组
版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
数组
学习了Java中的语句结构之后,让我们来学习数组这一模块,那么,数组是用来干什么的呢?简单的来说——数组就是用来存储数据的。数据结构是计算机储存、组织数据的方式,那么数组就是一种用于储存数据的典型数据结构。
定义:数组是把具有相同类型的若干变量按有序的形式组织起来的一种形式
一维数组
1、一维数组的定义
一维数组有两种定义方式,它们分别是:
- type[] arrayName
type arrayName[]这种方式使用的较少
其中,type既可以是基本类型,也可以是对象类型
例如:我们可以定义一个int类型的数组(int[] intArray),也可以定义一个对象类型的数组(Student[] studentArray)。
2、一维数组的初始化
在上面我们定义了一个一维数组,准确的来说,我们只是声明了一个数组的类型的变量,并没有为其分配实际的内存空间,那么如何给一个数组分配内存呢?这就要通过初始化操作来实现了。
一维数组共有两种初始化的方式,即静态初始化与动态初始化。
(1)静态初始化
静态初始化,就是将所有的数据给罗列出来,再使用{}包起来,元素的个数即是数组的长度,并且数据的排列顺序就是在数组中的存放顺序
通常我们在定义一个数组的同时就对它进行初始化,如:
int[] intArray = {1,2,3,4};
这样,就会给名为intArray的数组分配4个int大小的内存空间,并且这四个元素在数组中的存放顺序为:1,2,3,4
(2)动态初始化
然而,当我们只是想先创建一个“空”的数组,在需要的时候再为它里面的元素赋值的时候,静态初始化的方式是不是就显得有些力不存心了呢?这时候,我们就会用到另外一种初始化的方式了,即:动态初始化
动态初始化就是使用new的方式先定义一个数组并为其分配内存空间,语法如下:
type[] arrayName = new type[arraySize];
//例:
int[] intArray = new int[4];
注意:
- 因为要为其分配内存,所以数组的长度必须显示的给出
- 这样初始化后的数组只是名义上为“空”,实际上数组内的元素全部都是有值的,它们的值即为此类型的默认值(如:int型的默认值为0,对象类型的默认值为null等等)
那么,我们怎样对它里面的元素分配内存呢?只是简单的“=”赋值就可以了,如:
intArray[0] = 1;
intArray[1] = 2;
intArray[2] = 3;
intArray[3] = 4;
这样,我们就完整的创建出来了一个数组,现在我们就来看看一维数组有什么特点吧
- 数组是一个对象(因为它是一个对象这样我们才能通过new的方式将它创建),java语言内部已经实现了数组对象的定义,我们直接使用即可。
- 同一数组中的元素具有相同的类型
a、同一数组中的所有元素的数据类型是一样的,如:
int intArray = {1,2,3,4};
- 支持自动造型的数值类型也可以放在同一数组,如
double[] boubleArray = new double[3];
doubleArray[0] = 1;
doubleArray[1] = 2L;
doubleArray[3] = 3.0;
//我门可以简单的理解为:在数值类型中,比double类型精度低的都可以放在double类型的数组中,其他类型也一样
- 子类对象赋值给父类对象后可以自动造型(面向对象的时候学习),如:
/*
原创作者:清风不渡
博客地址:https://me.csdn.net/WXKKang
*/
//在java中,父类变量可以引用它的不同子类的实例,如Man和Woman两个类继承了Person类
public class Man extends Person{
}
public class Woman extends Person{
}
//那么,可以引用子类实例化出Person定义的对象(面向对象中的多态)
Person p1 = new Person();
Person p2 = new Man();
Person P3 = new Woman();
//这样,我们就可以将它们放在由父类Person定义的同一个数组中
Person[] personArray = {p1,p2,p3};
- 数组中元素的存放顺序是有序的,我们通常使用数组的下标(从0开始)来查找元素
- 一旦创建数组之后,它的大小(即数组的长度)就是不可改变的了
这就是一维数组的一些特点,下面我们来学习一下一维数组的主要的属性和方法吧
3、一维数组的方法
(1)一维数组的长度
既然是数组,那么它最常用的一个属性就是它的长度了,数组即是一个对象,它具有length属性来表示数组的长度,如:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = {1,2,3,4,5};
System.out.pintln(intArray.length);
}
}
(2)使用下标访问数组中的元素
使用下标访问到数组中的元素后,我们就可以对元素进行设置和取值,如:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = new int[4];
intArray[0] = 1;
intArray[2] = 5;
System.out.println(intArray[0]+intArray[2]);
}
}
注: 数组是一个随机访问结构,我们可以使用任意下标来访问指定的元素,不需要按顺序访问
(3)遍历数组
1、普通遍历
通常,使用数组保存的数据之间都有内在的逻辑关系,我们可以为其提供通用的处理操作;这样,就需要我们先将其一 一遍历出来,那么,我们通过什么将它们遍历呢?就是下标了,最常用的就是for循环,如:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = {1,2,3,4,5};
for(int i=0;i<intArray.length;i++){
System.out.print(intArray[i]+" ");
}
}
}
以上就是简单的for循环了,顺便说一下一个小的知识点:
- print和println的区别:
我们在打印一个数据的时候,可以将输出语句写成以下两种方式:
- System.out.println();
- System.out.print();
那么,它们有什么不同呢,区别就在于:打印多条数据的时候,第一种输出语句每打印完一条后会自动换行,而第二种输出语句则不会自动换行
2、增强for循环
遍历数组我们还有另一种方式,就是增强for循环,语法如下:
for(数组类型 变量名:数组名){
}
增强for循环只支持单向(从前向后)的遍历数组,每次循环中在小括号里定义的变量的值即为数组从下标为0开始往后的元素——也就是相当于从第一个元素开始将数组中的元素依次取出
将上面的例子使用增强for循环解决为:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = {1,2,3,4,5};
for(int i : intArray){
System.out.print(i+" ");
}
}
}
这样是不是简单多了呢?下面是对一维数组的一些小练习,一起来做做吧 ~ ~
4、练习
有一个数组为[1,2,3,4,5,6,7,8,9]现将它们做出如下操作
(1)使用增强for循环将数组打印在控制台中
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = {1,2,3,4,5,6,7,8,9};
for(int i : intArray){
System.out.print(i+" ");
}
}
}
(2)将数组逆序打印在控制台中
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[] intArray = {1,2,3,4,5,6,7,8,9};
for(int i=intArray.length-1;i>=0;i--){
System.out.print(intArray[i]+" ");
}
}
}
好啦,今天的学习就到这里吧!记录学习,记录生活,我还是那个java界的小学生,一起努力吧!!下一章我们学习二维数组,有兴趣的同学可以先看一下哟 ~ ~
欢迎各位看官评论探讨哟 ~ ~ 小生在此谢过了 ~ ~