数组
初识数组
数组用来将相同数据类型存储在存储单元里,数组的所有元素必须属于相同的数据类型。
一个图书存储与数组存储的对应图来了解一下数组中包含的一些内容,如下图(左)所示。
下面看一个整型数组的例子,下图(右)。
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组一旦初始化,长度不可变。长度确定下来了!!!
一维数组的声明方式: 类型 数组名[] 或 类型[] 数组名;
例如:
int a[];
int[] a1;
double b[];
Date[]c; //对象数组
单独声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
这两种定义做完了,数组中是没有元素值的
数组的初始化
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
Java中可以使用关键字new创建数组对象,完成静态初始化或动态初始化
动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数
举例:
int[] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值
Demo01
package com.hpe.java;
public class Demo01 {
/**
* 数组是一个什么东西呢,为什么使用数组?
* 比如我要存五位员工的工资,我可以使用变量来存储,需要定义多个变量,因为每一个变量只能存一个值
* 如果更多的员工,那么定义变量的数量会更多,这样太麻烦了。
* 我们可以使用数组来解决这个问题,数组就是一个容器,可以一次性存放多个数据,前提是数据类型必须统一。
* 数组十一个引用类型
*
* 如何定义数组?
* 数组类型【】 数组名;
*
* 如果数组定义好以后,必须得进行初始化
* 数组的初始化一共有两种:
* 1.动态初始化:需要指定数组的长度,长度指的是数组中能存多少数据,数组的长度定义好之后是不能改变的
* 两种格式:
* 第一种格式:
* 数组类型【】数组名=new 数据类型【数组长度】;
* 第二种格式:
* 数组类型【】 数组名;
* 数组名=new 数据类型【数组长度】;
*
* 2.静态初始化:不是指定数组的长度,而是直接在创建数组的同时给数组添加数据
* 两种格式:
* 第一种
* 数组类型【】 数组名=new 数组类型【】{数据1,数据2.。。。。。};
* 第二种:
* 数组类型【】数组名;
* 数组名=new 数组类型【】{数据1,数据2。。。。。。};
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//求5位员工的平均工资
int a=100;//第一位
a=200;//第二位
//定义一个数组,并进行动态初始化
//第一种
int[] arr= new int[8];
System.out.println(arr);
//第二种
double[] arr1;
arr1=new double[5];
System.out.println(arr1);
double[] arr3=arr1;
System.out.println(arr3);
String[] arr2=new String[3];
System.out.println(arr2);
boolean[] arr4=new boolean[4];
//怎么访问数组里面的元素?
//数组名【数组下标】数组的下标从0开始
System.out.println(arr[0]);//0
System.out.println(arr1[0]);//0.0
System.out.println(arr2[0]);//null
System.out.println(arr4[0]);//false
/**
* 栈:主要存放局部变量
* 堆:new 出来的东西都在堆里
* 方法区:存的是class文件
* 本地方法区:操作系统
* 寄存器:和CPU有关
*
*/
//静态初始化的第一种方式:
int[] arr5=new int[]{
1,7,9,45,90};
System.out.println(arr5[2]);
//第二种:
int[] arr6;
arr6=new int[]{
14,89,90};
System.out.println(arr6[1]);
//最简单的方式
int[] arr7={
89,9,30,44,5,66,774,43,346,673,432,785,51,55};
System.out