Java基础:数组
来源:互联网 发布:24小时学通qt编程 pdf 编辑:程序博客网 时间:2024/05/29 10:37
摘自http://blog.csdn.net/jiyiqinlovexx/article/details/46688171
一、数组初始化
无论如何,当你要实例化一个数组对象的时候,必须要指定其大小。
不能在提供了initializer的情况下再去指定数组的维度!!!
正确的初始化方式有:
- 方式1:Int[][] array =new int[][]{{1,2},{3,4},{5},{2,4,2,1}};
- 方式2:Int[][] array ={{1,2},{3,4},{5},{2,4,2,1}};
- 方式3:
- Int[][] array =new int[3][5];
- For(int I =0;i<array.length;i++){
- For(int j=0;j<array[i].length;j++){
- Array[i][i] = i*j;
- }
- }
二、数组相对容器的优势
数组原来有三个优势:效率(付出的代价是大小固定),类型安全,以及保存基本类型的能力。
在泛型之前,容器在处理对象的时候,都将他们视为没有任何具体类型,然而数组指定持有某一具体类型,可以进行编译时检查,但是自从1.5引入泛型时候,这个优势消失了。自从引入包装机制之后,容器也可以方便地应用与基本类型了。
所以,数组硕果仅存的优势就是“效率”了。
选择的原则是:当你使用最近的Java版本进行编程时,应该优先选择容器而不是数组,只有在证明性能已成为问题(切换到数组有助于提高性能)时,你才应该将程序重构为数组。
三、数组在Java中是一个类
无论使用哪种类型的数组,数组标识只是一个引用,指向堆中一个真实的对象。
(1)如果是对象数组,那么数组引用中保存的是一系列对象的引用。
(2)如果是基本类型数组,那么数组引用中保存的是一系列基本类型的值。
数组对象只有一个只读成员length,'[]'语法是访问数组对象的唯一方式。
四、java中如果你要返回一组值,那么就使用数组
C/C++就不行,只能返回指针,虽然这时控制数组的生命周期就会变得困难,但是Java无需要为数组负责,只要你需要他,它就会一直存在,当你使用完后,垃圾回收器会清理掉它。
publicString[] getFruits(){ ……… }
五、粗糙数组
Java支持粗糙数组,即构成矩阵的每个向量具备任意长度
Inta[][] = {{1,2}, {2, 4, 5}, {6, 4, 8, 9}};
六、数组+泛型
你无法实例化具有参数化类型的数组,因为数组必须知道它所持有的确切类型。但是你可以参数化数组本身的类型。
Type<Orange>[] pp = new Type<Orange>[10];
//compile error
Public static <T> T[] f(T[] args){ …… }
//OK
七、Arrays类
Array.sfill(a, 11);
Arrays.fill(b, 2, 7, "Hello");
用单一的值填充一个数组,如果是对象,则复制引用。
Arrays.equals();
比较两个数组是否相等。deepEquals()用于多维数组。此方法对于所有基本类型和Object都做了重载,用于比较两个数组。相等的条件是元素个数相等,并且对应位置的元素也相等。
class Type implements Comparable<>
Type[] a = new Type[10];
Arrays.sort(a);
Class MyComparator implements Comparator{}Arrays.sort(a, new MyComparator());
对数组排序。可以对任意基本类型数组排序,也可以对对象数组排序,只要改对象实现了Comparable接口(包含compareTo方法)或者具有关联的Comparator。
Arrays.binarySearch();
在已排序的数组中查找元素。
Arrays.hashCode();
产生数组的散列码。
Arrays.asList();
接收任意序列或者数组作为参数,转换成List。
- 【Java基础】Java数组
- java基础 ---数组
- java中数组基础
- java基础----数组
- Java基础:数组
- Java基础之数组
- Java基础之数组
- Java基础_数组
- JAVA基础:一元数组
- Java基础之数组
- Java基础<四>---> 数组
- Java基础_数组
- java数组基础
- Java基础_数组
- java基础__数组
- 【java基础】[数组]
- Java基础-数组
- Java基础:数组
- c++ primer读书笔记-第六章 语句
- iOS并发编程指南
- hmac-sha1加密算法C源码示例
- c/c++模板的定义和实现分开的问题(一)
- [Binary Hacking] ABI and EABI
- Java基础:数组
- socket的半包,粘包与分包的问题
- 驱动编程问题
- php面向对象编程之--封装
- Visual GDB 自动更新源文件-LOCAL_SRC_FILES
- php webservice实例
- install MySQL-python
- BaiduMap---百度地图官方Demo之多地图展示(在一个Activity中创建多个地图展示)
- 安卓 实现背景音乐的播放与关闭