学习java第十四天
数组
概念
同一种类型数据的集合。其实数组就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
数组的定义
格式一:
数组存储的数据类型[ ] 数组名字 = new 数组存储的数据类型[长度];
示例:int[] arr = new int[5];
格式二:
数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
实例:int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
格式三:
数据类型[] 数组名 = {元素1,元素2,元素3…};
如果需要存储大量的数据,例如如果需要读取100个数,那么就需要定义100个变量,显然重复写100次代码,是没有太大意义的。如何解决这个问题,Java语言提供了数组(array)的数据结构,是一个容器可以存储相同数据类型的元素,可以将100个数存储到数组中。
1.数组的概念
同一种类型数据的集合。其实数组就是一个容器。运算的时候有很多数据参与运算,那么首先需要做的是什么.不是如何运算而是如何保存这些数据以便于后期的运算,那么数组就是一种用于存储数据的方式,能存数据的地方我们称之为容器,容器里装的东西就是数组的元素, 数组可以装任意类型的数据,虽然可以装任意类型的数据,但是定义好的数组只能装一种元素, 也就是数组一旦定义,那么里边存储的数据类型也就确定了。
2.数组的好处
存数据和不存数据有什么区别吗?数组的最大好处就是能都给存储进来的元素自动进行编号. 注意编号是从0开始。方便操作这些数据。
例如 学生的编号,使用学号就可以找到对应的学生。
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]);
}
}
}