数组是一种效率最高的存储和随机访问对象引用序列的方式,我们今天来对数组做简单的介绍。手写瑶笺被雨淋,模糊点画费探寻,纵然灭却书中字,难灭情人一片心。

数组的简单使用

一、数组的赋值

String[] arrays = new String[]{"linux", "huhx", "android"};
//arrays[4] = "tomhu"; // 数组越界
String[] arrays2 = arrays;
arrays2[1] = "chenhui"; // 修改arrays2的值,对arrays产生了影响
System.out.println(Arrays.toString(arrays)); // [linux, chenhui, android]
arrays[2] = "google";
System.out.println(Arrays.toString(arrays2)); // [linux, chenhui, google]

二、数组的深复制

String[] arrays3 = Arrays.copyOf(arrays, arrays.length); // 底部实现仍然是System.arrarycopy()方法
System.out.println(Arrays.toString(arrays3)); // [linux, chenhui, google]
arrays3[1] = "nodeJS"; // 修改arrays3的值,对arrays没有影响
System.out.println(Arrays.toString(arrays)); // [linux, chenhui, google]

三、数组的填充

String[] arrays4 = new String[4];
Arrays.fill(arrays4, "linux");
System.out.println(Arrays.toString(arrays4)); // [linux, linux, linux, linux]

四、数组内容的比较

boolean arraysEqual = Arrays.equals(arrays3, arrays);
System.out.println(arraysEqual); // false
System.out.println(Arrays.equals(arrays, arrays2)); // true

五、数组的排序,改变了数组本身

Arrays.sort(arrays);
System.out.println(Arrays.toString(arrays)); // [chenhui, google, linux]

六、数组内元素的查找

int location = Arrays.binarySearch(arrays, "linux");
System.out.println(location); //

七、数组生成ArrayList

List<String> strings = Arrays.asList(arrays);
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next());
}

对Arrays类方法的分析

一、fill填充方法

public static void fill(Object[] a, Object val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}

二、toString打印方法

public static String toString(Object[] a) {
if (a == null)
return "null"; int iMax = a.length - 1;
if (iMax == -1)
return "[]"; StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(String.valueOf(a[i]));
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}

三、equal比较方法

public static boolean equals(Object[] a, Object[] a2) {
if (a==a2)
return true;
if (a==null || a2==null)
return false; int length = a.length;
if (a2.length != length)
return false; for (int i=0; i<length; i++) {
Object o1 = a[i];
Object o2 = a2[i];
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
} return true;
}

四、asList转换成列表的方法

@SafeVarargs
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}

五、iterator遍历方法

public Iterator<E> iterator() {
return new Itr();
} /**
* An optimized version of AbstractList.Itr
*/
private class Itr implements Iterator<E> {
int cursor; // index of next element to return
int lastRet = -1; // index of last element returned; -1 if no such
int expectedModCount = modCount; public boolean hasNext() {
return cursor != size;
} @SuppressWarnings("unchecked")
public E next() {
checkForComodification(); // 检查数组内容的一致性
int i = cursor;
if (i >= size)
throw new NoSuchElementException();
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length)
throw new ConcurrentModificationException();
cursor = i + 1;
return (E) elementData[lastRet = i];
} public void remove() {
if (lastRet < 0)
throw new IllegalStateException();
checkForComodification(); try {
ArrayList.this.remove(lastRet);
cursor = lastRet;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException ex) {
throw new ConcurrentModificationException();
}
} final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
}

友情链接

java基础---->数组的基础使用(一)的更多相关文章

  1. java基础---->数组的基础使用(二)

    这里对List(jdk 1.7)列表里面的一些方法做一些简单的分析,以避免有些函数的误用.手写瑶笺被雨淋,模糊点画费探寻,纵然灭却书中字,难灭情人一片心. List中注意的方法 一.Arrays.as ...

  2. Java学习——数组的基础知识

    数组的特点.分类:一维.二维数组的使用:数组的声明和初始化.调用数组的指定位置的元素.获取数组的长度.遍历数组.数组元素的默认初始化值

  3. 【搬砖】安卓入门(4)- Java开发编程基础--数组

    05.01_Java语言基础(数组概述和定义格式说明)(了解) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. ...

  4. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  5. Java 基础类型转换byte数组, byte数组转换基础类型

    Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组

  6. java基础-数组的折半查找原理

    java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...

  7. Java基础-数组常见排序方式

    Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...

  8. day05<Java语言基础--数组>

    Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...

  9. Java语言基础(数组)

    Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...

随机推荐

  1. windows中mongoDB安装教程

    下载路径:http://downloads.mongodb.org/win32/mongodb-win32-i386-1.7.0.zip 将一个DB文件夹 我是放到D盘,路径:Ddb 解压mongod ...

  2. CTC loss 理解

    参考文献 CTC学习笔记(一) 简介:https://blog.csdn.net/xmdxcsj/article/details/51763868 CTC学习笔记(二) 训练和公式推导 很详细的公示推 ...

  3. HttpPutFormContentFilter 和 ContextLoaderListener 讲解

    1 ContextLoaderListener 继承自ContextLoader,并且实现ServletContextListener接口. 肯定得实现这个接口了,不然怎么作为Servlet的监听器呢 ...

  4. GNU C编译器的gnu11和c11

    国际标准组织发布c11后,gnu为自己的编译器发布两种标准gnu11和c11 gnu11:带gnu c扩展的c11标准,如果你的代码包含了typeof,__attribute__等等gnu的扩展,就必 ...

  5. dataGridViewX操作

    private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e) { ...

  6. CWidgetMgr---H

    /************************************************************************/ //管理部件 //部件自动根据Z顺序调整消息的优先 ...

  7. 什么是:before和:after?

    前几天的晚上较全面的去看了下css的一些文档和资料,大部分的样式运用都没什么大问题了,只是有些许较陌生,但是也知道他们的存在和实现的是什么样式.今天主要想在这篇学习笔记中写的也不多,主要是针对:bef ...

  8. 如何生成项目的chm文档

    如何生成项目的chm文档 2014-11-30 Generate .chm based documentation of your project using SandCastle  tool

  9. 记一次log4j日志导致线上OOM问题案例

    最近一个服务突然出现 OutOfMemoryError,两台服务因为这个原因挂掉了,一直在full gc.还因为这个问题我们小组吃了一个线上故障.很是纳闷,一直运行的好好的,怎么突然就不行了呢... ...

  10. Extjs,实现树形结构的总结

    工作总结,用extjs.mybatis.springMVC实现树形显示班级 前台extjs实现树形代码如下: xtype : 'combotree', fieldLabel : '部门名称', nam ...