JAVA知识碎片整理-----数组
来源:互联网 发布:双开软件哪个好 编辑:程序博客网 时间:2024/05/22 00:42
一:数组的概念
数组的本质是相同数据类型的变量的集合,数组的每一个元素可以通过唯一的索引值(下标)来访问。
二:数组的声明
语法:type arrayName [ ] ; 或者 type [ ] arrayName ;
推荐使用第二种方式,[ ]表示数组,其后面跟上数组名更加具有意义。
[ ] 也叫索引运算符,其中可以指定数组的索引值,但在声明时不允许指定数组的大小,即[ ] 中什么也不能添加。
三:数组的创建
数组的创建有三种方式:分为两类,静态初始化和初始化。
1)int [ ] a = { 1,3,5,6,5 }(静态初始化)
2)int [ ] a = new int [ 10 ] (动态初始化,手动给定数组长度,由系统给定初始值)
3)int [ ] a = new int [ ] {1,3,4,2,5} (动态初始化,手动给定初始值,由系统计算数组长度)
无论哪种实例化方式,数组一旦被创建,数组的长度便确定了,不能被更改。
注意:!!! 第一种方法创建数组在运行时会被编译成以下代码
int a[] = new int [5];a[0]=1;a[1]=3;a[2]=5;a[3]=6;a[4]=5;这是因为java虚拟机不支持任何形式的高效率的数组初始化。所以第一种方法并不是在编译时进行创建和初始化的,而是在运行时被创建和初始化的。
数组的初始化:
如:第二种方式创建的数组,其内的数组元素并不是null(空),而是0,对于不同数据类型的数组其默认初始值是不同的。
int byte short long --- 0 double float ------>0.0 char------空格 boolean------ false 注意String数组的默认值为null,因为String 为引用数据类型,其内存的是一个个String对象,同理,Integer Double 等基本数据类型的包装类的数组,其默认值也为空(null)
四:数组的访问和修改
访问语法:arrayName [ indexValue] ; 例如 :a [2] 修改时便是在其后直接赋值如 a[2] = 3;
数组的索引是从0开始的,数组的索引值范围为0---数组长度-1(a.length-1) ,否则会引发ArrayIndexOutOfBoundsException(数组索引越界)异常。
数组元素被存储在一块连续的内存中。
五:数组的遍历
数组的遍历有多种方式,如for循环,for-each循环(java 1.5 添加的),
int [] a={1,3,5,2,6,5};//传统for循环for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();//增强for循环for (int i : a) {System.out.print(i+" ");}
六:多维数组
1)二维数组 int [ ] [ ] a= new int [5 ] [ 3]
表示实例化了一个5行3列的二维数组
int [ ] [ ] a = { {2,4}, {2,8} ,{3,6}} 初始化了3行2列的数组
2)二维数组的遍历
可以使用双层foreach循环
int [] [] f = { {2,4}, {2,8} ,{3,6}};for (int[] is : f) {for (int i : is) {System.out.print(i+" ");}System.out.println();}
注意::第一层循环出来的是一个int类型的数组。
另外:::除了矩形数组外,还有非矩形数组如:int [ ] [ ] b= { {4,3,4},{3,3,4,5,6,6}}就是一个非矩形数组
注意:使用new关键字初始化非矩形数组时列大小不写,行大小不能省如 int [ ] [ ] a = new int [3] [ ] ;
七:数组的拷贝
int [] a={1,3,5,2,6,5};int [] acopy=a.clone();//修改新数组验证是否是新数组acopy[2]=100;System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(acopy));
通过调用数组对象的clone()方法完成数组的copy,该方法实现的是数组的浅复制。
八:数组的类表示
通过数组对象的 getClass().getName() 来获取数组类的名字
int-----[ I float----[ F String----[ Ljava.lang.String 二维int类型的数组------[ [ I
- JAVA知识碎片整理-----数组
- Java知识碎片整理(1)——数组相关
- 知识碎片之整理
- CSS碎片知识整理
- Java知识碎片整理(2)——异常处理
- Java知识碎片整理(4)——抽象类
- 架构师知识碎片整理
- 控件、布局 知识碎片整理
- Android技术碎片知识整理
- C++知识碎片整理(1)——数组作为函数输出值
- Java知识碎片整理(5)——static关键字与单例设计模式
- PHP 数组知识整理
- Java碎片整理一 认识Java
- 知识碎片
- 知识碎片
- 知识碎片
- 知识碎片
- 知识碎片
- java中的数组、队列、堆栈
- [机器学习]AI算法系列代码片段整理
- 树状数组再进阶(区间修改+区间查询)
- Qt一些源码实现细节及内部实现简析
- Android设计模式之——状态模式
- JAVA知识碎片整理-----数组
- 用VMware装openstack遇到的一些坑
- 什么是C语言
- 通过 sqlSessionTemplate 整合 Spring 和 MyBatis 的方法
- numpy入门手册
- 13期 11月期刊自荐
- python——File用法
- JS常用正则表达式
- 2017看雪秋季赛 第二题