栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习java的第十一天。。。(数组)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习java的第十一天。。。(数组)

为什么需要数组

当变量过多时,使用普通的方法,太过于繁琐,不利于数据处理,这个时候就需要数组。

数组是相同类型的变量按顺序组成的一种复合数据类型,相同类型的变量称为数组元素,数组通过数组名和索引来使用数组元素

数组的基本要素

标识符、数组元素、元素下标:从0开始、元素类型

注:数组长度固定不变,避免数组越界;数组中的所有元素必须属于相同的数据类型

如何使用数组

声明数组(告诉计算机数据类型是什么)

分配空间(告诉计算机分配几个连续空间)

赋值(向分配的格子里放数据)

处理数据

步骤

第一步:声明数组

数据类型[] 数组名;或者

数据类型 数组名[]

        //声明8大基本类型的数据
		byte[] nums1;
		short[] nums2;
		int[] nums3;
		long[] nums4;
		float[] nums5;
		double[] nums6;
		char[] chars;
		boolean[] bools;
		
		//声明String类型的数组
		String strs[];

第二步:分配空间,告诉你声明的数组里可以存储多少个数据

数组名 = new 数据类型[数组元素个数]

        nums1 = new byte[3];
		nums2 = new short[5];
		nums3 = new int[2];
		nums4 = new long[8];
		nums5 = new float[7];
		nums6 = new double[6];
		chars = new char[5];
		bools = new boolean[3];
		strs  = new String[3];

第三步:给数组赋值,将数据存储到数组中

数组名[下标] = 数据;

        nums3[1]=199;
		nums3[2]=123456;
		System.out.println(nums3[2]);

上面的代码,如果执行的话,就会出现异常

 这个异常叫做数组下标越界异常,原因是在nums3这个数组只声明了数组里可以存储2个数据,而数组的下标是从0开始的,也就是说只有nums3[0]、nums3[1]两个。这里给nums[2]赋值时错误的,所以出现了数组下标越界异常。

第四步:操作数据,使用数组名[数组元素下标]来操作数据

        System.out.println(nums3[0]);
		nums3[0]=1000;
		System.out.println(nums3[0]);
		nums3[0]+=500;//nums3[0]=nums3[0]+500;
		System.out.println(nums3[0]);

如果没有对数组里面的元素进行赋值,数组中是会有默认数据的

各数据类型的默认数据,我整了一张表

 其中char类型的默认值比较奇怪,'u0000'是Unicode中的一个空格,不过我的电脑输出出来时一个空格

 声明数组、分配空间合并写

 数组类型[] 数组名 = new 数据类型[数组长度];

或者 数据类型 数组名[] = new 数组类型[数组长度];

 she

        //声明一个长度为5的int类型的数组
		int[] nums1 = new int[5];
		//声明一个长度为3的boolean类型的数组
		boolean[] bools = new boolean[3];
		//声明一个长度为6的boolean类型的数据
		String[] strs = new String[6];

声明数组、分配空间、赋值合并写

数据类型[] 数组名 = new 数据类型[]{数据1,数据2,……,数据n} 

数据类型 数组名[] = new 数据类型[]{数据1,数据2,……,数据n}

注意:等号后面的[]里不要写数组长度,写了会报错

 声明数组、分配空间、赋值合并写的简写方式,也是最常用的方式

数据类型[] 数组名={数据1,数据2,……,数据n}

数据类型 数组名[]={数据1,数据2,……,数据n}

for循环的快捷键   在Myeclipse中可以先输入for在按alt+/

 foreach可以直接输出增强for遍历的模板

获取数组中元素的个数:数组名.length

int size = nums.length;
System.out.println("个数为:"+size);

 遍历:按照元素在数组中的顺序输出
        for(int i=0;i 

 遍历还可以使用增强for循环来进行遍历

for(数据类型 变量名:数组名){
 System.oout.println(变量名)
}

执行规律按照数组中元素的顺序依次将元素取出来存入到变量a中,这个时候操作变量a就相当于操作数组里面的元素

        for(int a:nums){
			System.out.print(a+" ");
		}
数组与内存

栈和堆都是内存,可以想象成内存中两块不一样的区域。

栈内存 大小固定 用于存储局部 临时变量(基本数据类型)和引用变量

堆内存 大小不固定 用于存储对象

变量x的值存的时栈中的一个地址(这个地址一般是16进制),地址里面再指向一块堆的存贮空间,数组的内存空间是一块连续的空间。比如:

int[] i={1,2,3,4,5};

可以想象成再这个空间里面有五个小格,第一个格子是1,第二个格子是2……。栈内存的地址有个指向,指向了这块堆内存的首地址。即可以通过栈内存中的地址找到首地址,而要找里面的元素就要使用到下标,就可以找到数据。

常见错误

 public class ErrorDemo1 {      

public static void main(String[ ] args){

           int[ ] score = new int[ ];

          score[0] = 89;

          score[1] = 63;

          System.out.println(score[0]);

    }

}

错误是:编译错误,没有写明数组的大小


int[ ] scores = new int[2];

scores[0] = 90;

scores[1] = 85;

scores[2] = 65;

System.out.println(scores[2]);

错误是:编译出错,数组越界


 int[ ] score = new int[5];        

score = {60, 80, 90, 70, 85}; 

  int[ ] score2;        

score2 = {60, 80, 90, 70, 85};  

错误是:创建数组并赋值的方式必须在一条语句中完成,且第一句[]中不能给定数组的长度

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号