10JAVA数组详解
来源:互联网 发布:手机淘宝分类怎么设置 编辑:程序博客网 时间:2024/06/05 18:29
除了基本类型意外的其它所有类型,都属于引用类型。比如String、数组,以及其它一切的Java类的类型的变量。
引用类似的变量,本质是指针。存的就是被赋值对象的内存首地址。
引用类型和基本类型区别:
1.基本类型声明的时候,已经确定了内存的大小。比如int是32位的,就是占用4个字节。
而引用类型在声明的时候,是不确定内存大小的。所有的引用类型在未赋值之前,都是null。
2.基本类型赋值的时候,在变量中保存的就是数据的值。比如给一个int类型的变量赋值,就是把一个整数值放到所申请的4个字节中。
3.引用类型的变量占的内存大小也是确定的——系统多少位,引用变量就占用多少位。
而引用类型在赋值的时候,在变量中保存的是一个指针,指向数据的实际内存地址。
有趣的是,引用类型变量本身占用内存确定,但是却无法确定变量指向的内存地址包含的空间有多大。
数组是一种数据类型。用于存储多个相同类型的数据。
所有已有的数据类型后面,加上一对方括号,就是数组类型。
如:
int → int[]
char → char[]
long → long[]
boolean → boolean[]
String → String[]
int[] → int[][]
数组的创建方式:
方式1:动态方式
数组的申明 和 数组的创建 和 数组的赋值 ,不在同一行;
int[] i; // 申明 了一个int数组 变量名称叫 i
i = new int[5]; // 数组的创建,表示创建了一个int类型的数组,并开辟了5个连续的内存空间。
i[0] = 1;//表示往 连续的5个内存空间的第一个位置赋值,数组的下标是从 0 开始
i[1] = 2;
i[2] = 4;
i[3] = 5;
i[4] = 6; // 数组的最大长度减 1
int[] a = new int[10];
方式2:静态方式
数组的申明 和 数组的创建 和 数组的赋值 ,在同一行;
int[] i = {1,2,3,4,5};
i[0] 获得数组的第一个元素
不可能只开辟空间,而不赋值
int[] i = new int[10]; // 系统赋值
int[] i ={1,2,3,4,5}; //手动指定
数组的作用
用于存放大量数据
如果只有一个值,用变量来存即可。
如果有大量相同类型的变量,可以用数组来存。
创建一个数组后,相当于得到了N个类型相同的变量。
每个数组元素,相当于数组类型去掉一组方括号之后的类型的变量。可以像使用变量一样去使用数组元素。
java数组的特点
Java是一门静态语言,一个数组创建完成以后,数组所占的内存大小、内存位置都是不变的。
即:数组对象在初始化了以后,长度不能再改变。
如何获得数组的长度?
所有的数组都有一个属性length,获取数组的长度:
int[] i = new int[10];
System.out.println(s.length);//输出2
如何获取数组的元素?
数组按照索引(下标)获取其中每个元素,索引从0开始。
int[] iArr = new int[10];
//数组元素的索引,从0开始计算
System.out.println(iArr[0]);//输出第一个元素
System.out.println(iArr[1]);//输出第二个元素
int[] sArr = new String[]{"234", "aggg"};
for(int i = 0; i < sArr.length; i ++){
//可以直接使用固定的数字索引,也可以使用变量传递可变的索引。
System.out.println(sArr[i]);
}
还有一种是for each方法
//int s 定义一个变量来接收int类型数组的每个元素 String类型数组的话就用String定义
for(int s : sArr){
System.out.println(sArr[i]);
}
二维数据 就像 int[][]
它的历遍方法
1.变量第一维,把第一维数组的元素取出存到一个变量中,这个变量就是指向到第二维的数组的。
2.遍历变量就是在遍历第二维数组。
for (int i = 0; i < arr.length; i++){
//从第一维取出一个元素,赋值给一个变量
//因为arr的数据类型int[],所以也要赋值给int[]类型的变量
int[] arr1 = arr[i];
//遍历第二维
for (int j = 0; j < arr1.length; j++){
System.out.print(arr1[j]);
}
System.out.println();
}
不正确使用数据时常会出现的异常
空指针异常
数组如果没有初始化,相当于是等于null
等于null的时候,不能使用该数组,因为使用的时候电脑不知道要从哪里取、哪里存???
于是报错:java.lang.NullPointerException
数组下标越界异常
数组的索引是从0开始计算,所以最大索引是"数组长度-1",最小索引0。
因此如果传递进去索引超出这个范围,就会数组越界:java.lang.ArrayIndexOutOfBoundsException
引用类似的变量,本质是指针。存的就是被赋值对象的内存首地址。
引用类型和基本类型区别:
1.基本类型声明的时候,已经确定了内存的大小。比如int是32位的,就是占用4个字节。
而引用类型在声明的时候,是不确定内存大小的。所有的引用类型在未赋值之前,都是null。
2.基本类型赋值的时候,在变量中保存的就是数据的值。比如给一个int类型的变量赋值,就是把一个整数值放到所申请的4个字节中。
3.引用类型的变量占的内存大小也是确定的——系统多少位,引用变量就占用多少位。
而引用类型在赋值的时候,在变量中保存的是一个指针,指向数据的实际内存地址。
有趣的是,引用类型变量本身占用内存确定,但是却无法确定变量指向的内存地址包含的空间有多大。
数组是一种数据类型。用于存储多个相同类型的数据。
所有已有的数据类型后面,加上一对方括号,就是数组类型。
如:
int → int[]
char → char[]
long → long[]
boolean → boolean[]
String → String[]
int[] → int[][]
数组的创建方式:
方式1:动态方式
数组的申明 和 数组的创建 和 数组的赋值 ,不在同一行;
int[] i; // 申明 了一个int数组 变量名称叫 i
i = new int[5]; // 数组的创建,表示创建了一个int类型的数组,并开辟了5个连续的内存空间。
i[0] = 1;//表示往 连续的5个内存空间的第一个位置赋值,数组的下标是从 0 开始
i[1] = 2;
i[2] = 4;
i[3] = 5;
i[4] = 6; // 数组的最大长度减 1
int[] a = new int[10];
方式2:静态方式
数组的申明 和 数组的创建 和 数组的赋值 ,在同一行;
int[] i = {1,2,3,4,5};
i[0] 获得数组的第一个元素
不可能只开辟空间,而不赋值
int[] i = new int[10]; // 系统赋值
int[] i ={1,2,3,4,5}; //手动指定
数组的作用
用于存放大量数据
如果只有一个值,用变量来存即可。
如果有大量相同类型的变量,可以用数组来存。
创建一个数组后,相当于得到了N个类型相同的变量。
每个数组元素,相当于数组类型去掉一组方括号之后的类型的变量。可以像使用变量一样去使用数组元素。
java数组的特点
Java是一门静态语言,一个数组创建完成以后,数组所占的内存大小、内存位置都是不变的。
即:数组对象在初始化了以后,长度不能再改变。
如何获得数组的长度?
所有的数组都有一个属性length,获取数组的长度:
int[] i = new int[10];
System.out.println(i.length);//输出10
System.out.println(s.length);//输出2
如何获取数组的元素?
数组按照索引(下标)获取其中每个元素,索引从0开始。
int[] iArr = new int[10];
//数组元素的索引,从0开始计算
System.out.println(iArr[0]);//输出第一个元素
System.out.println(iArr[1]);//输出第二个元素
int[] sArr = new String[]{"234", "aggg"};
for(int i = 0; i < sArr.length; i ++){
//可以直接使用固定的数字索引,也可以使用变量传递可变的索引。
System.out.println(sArr[i]);
}
还有一种是for each方法
//int s 定义一个变量来接收int类型数组的每个元素 String类型数组的话就用String定义
for(int s : sArr){
System.out.println(sArr[i]);
}
二维数据 就像 int[][]
它的历遍方法
1.变量第一维,把第一维数组的元素取出存到一个变量中,这个变量就是指向到第二维的数组的。
2.遍历变量就是在遍历第二维数组。
for (int i = 0; i < arr.length; i++){
//从第一维取出一个元素,赋值给一个变量
//因为arr的数据类型int[],所以也要赋值给int[]类型的变量
int[] arr1 = arr[i];
//遍历第二维
for (int j = 0; j < arr1.length; j++){
System.out.print(arr1[j]);
}
System.out.println();
}
不正确使用数据时常会出现的异常
空指针异常
数组如果没有初始化,相当于是等于null
等于null的时候,不能使用该数组,因为使用的时候电脑不知道要从哪里取、哪里存???
于是报错:java.lang.NullPointerException
数组下标越界异常
数组的索引是从0开始计算,所以最大索引是"数组长度-1",最小索引0。
因此如果传递进去索引超出这个范围,就会数组越界:java.lang.ArrayIndexOutOfBoundsException
- 10JAVA数组详解
- java数组声明详解
- JAVA数组详解
- Java数组知识详解
- JAVA数组详解
- JAVA之数组详解
- Java多维数组详解
- java数组初始化详解
- Java数组详解
- java数组初始化详解
- JAVA数组详解
- java二维数组详解
- JAVA数组详解
- Java数组详解
- Java数组详解
- Java 数组的详解
- Java 数组详解
- java数组详解
- 通过blktrace, debugfs分析磁盘IO
- 网站消息推送介绍
- vc++编程环境的介绍
- 我的内核学习笔记:环境
- 射频电路板设计
- 10JAVA数组详解
- 黑马程序员--银行调度系统
- PCB设计是特殊原件的布局
- Zstack中如何实现自己的任务
- PHP 上传大文件
- STL中序列容器之deque
- 面向对象实验二(运算符重载)
- 11JAVA简单的排序算法--冒泡算法
- PCB布局设计技巧及注意事项