• Java容器深入浅出之数组


    写在前面

    关于Java的学习,特别是对于非计算机专业的同学来说,我总是主张从实践中来,到实践中去的学习方法。Java本身是一门应用性特别强的高级编程语言,因此如果能在基于实际开发的经验基础上,对JavaSE的核心知识做总结和梳理,将非常有利于沉淀自身的技术知识,并且为进一步的深入研究打好基础。

    JavaSE的知识层次,基于我的经验,可以分为4点:

    1. 基础知识:包括基本数据类型、语法规范、运算符、流程控制和异常。

    2. 面向对象:包括封装、继承和多态的Java实现及相关语言特性。

    3. 基础进阶:包括常用类、容器、JDBC、IO等。

    4. 高阶深入:包括多线程、反射、JMM、JVM及网络编程等。

    Java企业级开发,包括Web应用、分布式及大数据等高可靠、高并发和高可用的系统均来自于这些基础的实现。

    关于容器

    容器在日常开发中的地位不言而喻,小到链表的实现,大到消息队列的框架,都与容器息息相关。当完成了Java基础知识和面向对象知识的学习之后,就可以开始学习容器并深入理解Java基本数据结构的底层实现原理。

    Java的容器大致可以分为数组、字符串对象和集合

    数组的基本使用

    Java数组的要点:

    1. 数组完成初始化,在内存中的长度固定,不可改变;

    2. 数组可以存放基本数据类型和对象的引用,但只能保存同一种类型的数据。

    数组的定义:

    type[] arrayName;

    数组的初始化:

    1. 静态初始化:显式指定每个数组元素的初始值

    arrayName = new type[]{element1, element2, element3...};
    arrayName = {element1, element2, element3...};

    2. 动态初始化:只给定数组长度,由系统指定元素的默认初始值

    arrayName = new type[length];

    数组的使用:

    1. 查:通过索引获取数组某个元素的值

    2. 改:通过索引对数组某个元素的值更新(典型的如循环赋值)

    Java8增强的Array类

    Array类的若干static方法可以方便对数组进行操作:

    1. 查找

    int binarySearch(type[] a, type key) --- 数组按升序排列,通过二分法查找key在a中的索引,没有则返回负数。

    int binarySearch(type[] a, int from, int to, type key) --- 数组按升序排列,通过二分法查找key在a的from和to中的索引,没有则返回负数。

    2. 排序

    void sort(type[] a) --- 排序

    void sort(type[] a, int from, int to) --- from到to之间的元素进行排序

    3. 复制

    type[] copyOf(type[] original, int length) --- 把original复制成一个新数组:

    3.1 如果length等于original的长度,全部复制;

    3.2 如果length小于original的长度,只复制前length位

    3.3 如果length大于original的长度,余下的系统默认初始值赋值

    type[] copyOfRange(type[] original, int from, int to) --- 把original的from到to复制成一个新数组

    4. 转换

    void fill(type[] a, type val) --- 将a的所有元素赋值为val

    void fill(type[] a, int from, int to, type val) --- 将a的从from到to的元素赋值为val

    String toString(type[] a) --- 转换为一个字符串

    5. 判断

    boolean equals(type[] a, type[] b) --- 长度和元素均相等的两个数组则返回true

    Arrays类Demo如下:

     1 package org.leo.demo.arrays;
     2 
     3 import java.util.Arrays;
     4 
     5 public class TestArrays {
     6 
     7     public static void main(String[] args) {
     8         
     9         int[] a = new int[] {3,4,5,6};
    10         int[] a2 = {3,4,5,6};
    11         
    12         System.out.println("a equals a2? " + Arrays.equals(a, a2));
    13         
    14         int[] b = Arrays.copyOf(a, 6);
    15         System.out.println("a equals b? " + Arrays.equals(a, b));
    16         System.out.println("b array is: " + Arrays.toString(b));
    17         
    18         Arrays.fill(b, 2, 4, 1);
    19         System.out.println("b array is: " + Arrays.toString(b));
    20         
    21         Arrays.sort(b);
    22         System.out.println("b array is: " + Arrays.toString(b));
    23         
    24         System.out.println("the index of number 1 in b is:" + Arrays.binarySearch(b, 1));
    25 
    26     }
    27 
    28 }
  • 相关阅读:
    Delphi的IDE的快捷键
    XE4 There is no overloaded version GetTextExtentPoint32A
    正确安装DevExpress.ExpressQuantumGrid.Suite For D7
    按比例缩小图片(80分)
    Delphi 2010 新增功能之: TWICImage 类[3]
    Delphi image 等比例缩小
    delphi 图片加水印源代码
    DELPHI窗体属性
    delphi透明panel组件或者制作方法
    利用VB、Delphi轻松实现图像漫游
  • 原文地址:https://www.cnblogs.com/leoliu168/p/9902530.html
Copyright © 2020-2023  润新知