学习目标:
了解Java中的数组
学习内容:
1、 数组的概念
2、 数组的特点
3、 数组的初始化
学习步骤:
1、数组的概念
数组(Array),是多个相同的数据类型按照一定的顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一的管理。
它也是一种容器 可以同时存放 同种数据类型的多个数据
2、数组的特点
1、数组是有序排列的
2、数组属于引用的数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型。但是类型必须一致。
3、创建数组对象会在内存中开辟一整块连续的空间。
4、数组的长度一旦确定就不能修改。
3、数组的初始化
一维数组的初始化分为两种:静态初始化和动态初始化。
动态初始化
c语言定义
int temp[10];
Java中动态初始化
类型 对象名 = new 类型;
数据类型[] 数组名称 = new 数组类型[数组长度];
静态初始化
c语言写法
int temp[]={};
java中静态初始化
数据类型[] 数组名称 = new 数组类型{元素1,元素2,元素3......};
注意: 虽然静态初始化没有告诉编译器数组的长度,但是可以根据大括号里面的元素。
public class Demo01Array {
public static void main(String[] args) {
//1.数组的动态初始化
//创建一个数组,用来存放55个int数据
//学号
int[] arrayA = new int[55];//动态初始化
//java成绩
double[] arrayB = new double[55];
//姓名
//String[] arrayC = new String[55];
//动态初始化可以拆开为两步骤
String[] arrayC;
arrayC = new String[55];
//2.数组的静态初始化
int[] arraydD = new int[]{1,2,3,4,5};
//String[] arraydE = new String[]{"hellow","world","java"};
//不省略额静态初始化可以拆开为两步骤
String[] arraydE;
arraydE = new String[]{"hellow","world","java"};
//3.数组静态初始化的省略写法
String[] arraydF = {"hellow","world","java"};
//错误写法,省略静态不能拆开
//String[] arraydF;
//arraydF = {"hellow","world","java"};
}
}
直接打印数组名称,得到的是数组对应的:内存地址的哈希值
public class Demo02ArrayUse {
public static void main(String[] args) {
int[] array = {10,20,30,40,50};
System.out.println(array);
//数组的下标是从0开始的
System.out.println(array[0]); //第0号元素
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
System.out.println("========");
int num =array[3];
System.out.println(num);
}
}
运行结果:
如何调用数组中的指定位置的元素
public class Demo03Array {
public static void main(String[] args) {
int[] arrayA = new int[3];
System.out.println(arrayA);
System.out.println(arrayA[0]);
System.out.println(arrayA[1]);
System.out.println(arrayA[2]);
System.out.println("===========");
double[] arrayB = new double[3];
System.out.println(arrayB);
System.out.println(arrayB[0]);
System.out.println(arrayB[1]);
System.out.println(arrayB[2]);
System.out.println("===========");
String[] arrayC = new String[3];
System.out.println(arrayC);
System.out.println(arrayC[0]);
System.out.println(arrayC[1]);
System.out.println(arrayC[2]);
System.out.println("===========");
arrayC[2]="中国女足";
System.out.println(arrayC[0]);
System.out.println(arrayC[1]);
System.out.println(arrayC[2]);
}
}
运行结果:
数组的编号从0开始的,到数组长度-1结束
在调用数组指定位置时容易出现:数组越界的问题,数组的空指针异常问题。
package com.hg.day14.demo01;
/*
*/
public class Demo04ArrayIndex {
public static void main(String[] args) {
int[] array = {10,20,30};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println("=========");
//System.out.println(array[3]); 错误写法 数组越界异常
int[] arrayA=null;
//System.out.println(arrayA[0]);错误写法 空指针异常问题
}
}
运行结果:
如何获取数组的长度,并遍历每个元素:
package com.hg.day14.demo01;
public class Demo05Array {
public static void main(String[] args) {
int[] array = new int[3];
int[] arrayB={1,2,3,2,3,2,3,2,3,2,3,2};
int len=arrayB.length;
System.out.println(len);
//数组的长度不可更改
int[] arrayC = new int[3];
System.out.println(arrayC.length);
arrayC=new int[5];//重新分配一个长度为5地址 数组的长度并没有发生变化
System.out.println(arrayC.length);
System.out.println("==========");
//数组的使用
System.out.println(arrayB[0]);
System.out.println(arrayB[1]);
System.out.println(arrayB[2]);
System.out.println(arrayB[3]);
System.out.println("==========");
for (int i = 0; i <5;i++)
{
System.out.println(arrayB[i]);
}
System.out.println("==========");
for (int i = 0; i <arrayB.length; i++)
{
System.out.print(arrayB[i]);
}
}
}