java基础-数组
来源:互联网 发布:iphone随机抽奖软件 编辑:程序博客网 时间:2024/06/04 23:45
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
Java 数组
数组是同一种类型数据的集合。其实数组就是一个容器。
Java语言中提供的数组是用来存储固定大小的同类型元素。
Java语言按数组的维数来分类,可以分为一维数组和多维数组。
1、一维数组
方式1(更能表明数组类型)
type[] 变量名 = new type[数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
方式2
type变量名[] = new type[数组中元素的个数];
如:
int a[] = new int[10];
方式3 定义时直接初始化
type[] 变量名 = new type[]{逗号分隔的初始化值};
其中红色部分可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
实例
public class TestArray { public static void main(String[] args) { // 数组大小 int size = 10; // 定义数组 double[] myList = new double[size]; myList[0] = 5.6; myList[1] = 4.5; myList[2] = 3.3; myList[4] = 4.0; myList[5] = 34.33; myList[6] = 34.0; myList[7] = 45.45; myList[8] = 99.993; myList[9] = 11123; // 计算所有元素的总和 double total = 0; for (int i = 0; i < size; i++) { total += myList[i]; } System.out.println("总和为: " + total); }}
下面的图片描绘了数组myList。这里myList数组里有10个double元素,它的下标从0到9。
2、二维数组
二维数组是数组的数组。
二维数组基本的定义方式
1、数据类型[][] 数组名 = new 数据类型[m][n];
2、数据类型[][] 数组名 = new 数据类型[m][];
3、数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
4、数据类型[][] 数组名 = {{...},{...},{...}};
public class ArrayTest3{ public static void main(String[] args) { int[][] i = new int[2][3]; System.out.println("Is i an Object? " + (i instanceof Object)); System.out.println("Is i[0] an int[]? " + (i[0] instanceof int[])); }}
变长的二维数组
二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。
声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维
大小不能空缺(不能只指定列数不指定行数)。
public class ArrayTest4{ public static void main(String[] args) { //二维变长数组 int[][] a = new int[3][]; a[0] = new int[2]; a[1] = new int[3]; a[2] = new int[1]; //Error: 不能空缺第一维大小 //int[][] b = new int[][3]; }}
二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始
化值的个数不同,可以生成不同长度的数组元素。
public class ArrayTest5{ public static void main(String[] args) { int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}}; for(int i = 0; i < c.length; ++i) { for(int j = 0; j < c[i].length; ++j) { System.out.print(c[i][j]+" "); } System.out.println(); } }}
内存结构
Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片
区域都有特定的处理数据方式和内存管理方式。
栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值,实体中的变量都有默认初始化值,实体不在被使用,会在不确定的时间内被垃圾回收器
回收。
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。
- 【Java基础】Java数组
- java基础 ---数组
- java中数组基础
- java基础----数组
- Java基础:数组
- Java基础之数组
- Java基础之数组
- Java基础_数组
- JAVA基础:一元数组
- Java基础之数组
- Java基础<四>---> 数组
- Java基础_数组
- java数组基础
- Java基础_数组
- java基础__数组
- 【java基础】[数组]
- Java基础-数组
- Java基础:数组
- VC6 实现GBK到UTF8编码转换(c++)
- kettle6.0linux安装配置
- DES单倍长 双倍长加密,POS机行业基本会用到
- 关于图像特征提取
- 欢迎使用CSDN-markdown编辑器
- java基础-数组
- 如何选择学习PHP、ASP、ASP.net (2009-10-28 17:02:26)
- 项目1问题
- jQuery中html()、text()、val()的区别
- HDU 2196
- 软考——计算机系统知识
- IIS runs out of work items and causes RPC failures when connecting to a remote UNC path
- SearchView 学习_0
- Hibernate获取表配置信息包括Common注解信息