`
zhengyang_003
  • 浏览: 12632 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java中的数组

阅读更多
java中的数据结构--数组

import java.util.Arrays;
public class ArraysAndCollections {
     
/*数组:一种数据结构,表示同一类型的数据的集合,
  一个个的数据叫数组的元素,通过数组的下标来对同一数组中的不同元素进行操作.其下标从0开始,
  当数组下标越界时会抛出java.lang.ArrayIndexOutOfBondsException异常.
1>在java中数组的类型可以是任意基本数据类型,也可以是其他的引用数据类型.
 

2>如果不对数组进行初始化,则系统默认为其初始化,
       其中基本数据类型中(byte,short,int,long)整形为0.(float,double) 浮点类型为0.0;
        boolean 逻辑类型为false;char字符型为"\u0000"; 引用数据类型为null;


3>数组一经创建后其大小不可以改变.


4>数组的实现是基于线性表的的数据结构.其特点是查找速度块,插入和移除元素速度慢.


5>Arrays类中的构造方法被private修饰(private Arrays() { })
    (因此不能创建Arrays对象.通过对象名.方法名来调用其内部方法.Arrays array = new Arrays();是不允许的.)
    所以其内部方法都是static方法.可以通过类名.方法名调用.

×>扩展部分:将其反选就可以看到了....
    当我们观察java.util.Arrays中的代码时,发现import java.lang.reflect.*;???什么意思,于是乎打开java.lang.reflect.*;
    竟然发现了有一个叫做Array的类.public final class Array{},其构造方法也是private Array() { },我们可以看看它是怎么创造一个数组实例的.


    public static Object newInstance(Class<?> componentType, int length)
       throws NegativeArraySizeException {
       return newArray(componentType, length);
    }
    */



//验证其初始值的测试,
  public static void arraystest1(){
  int[] array1 = new int[3];//声明并创建一个int[]数组,长度为3
  array1[0] = 1;//通过下标为其初始化.
  array1[1] = 2;
  array1[2] = 3;
  //array1[3] = 4;
  System.out.println(Arrays.toString(array1));
  String[] str = new String[2];
  System.out.println(Arrays.toString(str));
      byte[] b = new byte[2];
      short[] sh = new short[2];
      int[] i = new int[2];
      long[] l = new long[2];
      float[] f = new float[2];
      double[] d = new double[2];
      boolean[] bs = new boolean[2];
      char[] ch = new char[2];
    System.out.println(Arrays.toString(b));
    System.out.println(Arrays.toString(sh));
    System.out.println(Arrays.toString(i));
    System.out.println(Arrays.toString(l));
    System.out.println(Arrays.toString(f));
    System.out.println(Arrays.toString(d));
    System.out.println(Arrays.toString(bs));
    System.out.println(Arrays.toString(ch));
    }


    /*数组中提供的优秀的方法,都是复制*/
    public static void arraysTest2(){
    int[] nums1 = new int[3];
    nums1[0] = 1;
    nums1[1] = 2;
    nums1[2] = 3;
    //1> 输入一个数组和数组的值查找其在数组中的索引位置.binarySearch();
    System.out.println(Arrays.binarySearch(nums1 ,  3));//结果为2.
    //2>复制一个数组,那方法就多了^_^.
    //复制生成一个新的数组,并使其具有指定的长度,可以截取和增加哦.
     int[] nums2 = Arrays.copyOf(nums1, 5);
  System.out.println(Arrays.toString(nums2));//结果是[1,2,3,0,0]
  //copyOfRange();可以复制指定范围的内容
  nums2 = Arrays.copyOfRange(nums1, 1, 2);
  System.out.println(Arrays.toString(nums2));//结果是[2]
  int[] nums3 = new int[3];
     //System提供的复制方法.
  System.arraycopy(nums1, 0, nums3, 0, 2);
  System.out.println(Arrays.toString(nums3));//结果[1,2,0]
     //从Object继承来的克隆,生成新的数组,
  nums3 = nums1.clone();
  System.out.println(Arrays.toString(nums3));//结果[1,2,3]
  //当然也可以用循环复制
 
    }
   
    //排序和查找.
    public static void arraysTest3(){
     int[] arr1 = {40, 30, 20, 50, 10};
     arr1 = Arrays.copyOf(arr1, 3);
     /*在这里是用arr1引用的数组{40, 30, 20, 50, 10}产生一个新的数组{40, 30, 20}并将arr1重新指向{40, 30, 20};
     而原来的数组对象{40, 30, 20, 50, 10}由于没有使用的价值被gc回收了.所以这里并不是改变了原来数组的长度.
     */
     Arrays.sort(arr1);
     System.out.println(Arrays.toString(arr1));
     System.out.println("20在arr1中的索引是:" + Arrays.binarySearch(arr1, 20));
    }



    //数组中的排序,当要对对象数组进行排序时必须要实现Comparable接口中的compareTo方法,否则出错.
public static void sortTest(){
  Employee e1 = new Employee(1, "小王", 2000);
  Employee e2 = new Employee(2, "小王", 4000);
  Employee e3 = new Employee(3, "小王", 1200);
  Employee e4 = new Employee(4, "小王", 2379);
  Employee[] emps = new Employee[4];
  emps[0] = e1;
  emps[1] = e2;
  emps[2] = e3;
  emps[3] = e4;
  Arrays.sort(emps);
  System.out.println(Arrays.toString(emps));
}



    public static void main(String[] args) {
    

    arraysTest3();
    
    }



     class Employee implements Comparable{

private int id;

private String name;

private double salary;

public Employee() {
  super();
}

public Employee(int id, String name, double salary) {
  super();
  this.id = id;
  this.name = name;
  this.salary = salary;
}

public int getId() {
  return id;
}

public void setId(int id) {
  this.id = id;
}

public String getName() {
  return name;
}

public void setName(String name) {
  this.name = name;
}

public double getSalary() {
  return salary;
}

public void setSalary(double salary) {
  this.salary = salary;
}

@Override
public int compareTo(Object o) {
  Employee emp = (Employee)o;
  return this.getId() - emp.getId();
}


public String toString() {
  StringBuffer str = new StringBuffer();
  str.append("id:" + this.getId() + "  ");
  str.append("姓名:" + this.getName() + "  ");
  str.append("薪水:" + this.getSalary() + "  ");
  return str.toString();
 
}

}




}

分享到:
评论

相关推荐

    Java中数组的各种应用

    在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储同类型的多个元素。本文将深入探讨Java中数组的各种应用,旨在帮助初学者理解并掌握数组的使用。 一、数组定义与初始化 在Java中,数组可以...

    java中数组的介绍

    java数组的介绍以及怎么用,用在什么地方

    Java中数组常用方法的总结

    我对Java中数组的方法做了一下总结,希望能帮到各位

    java中数组的用法

    array用法

    Java中数组的声明.doc

    ### Java中数组的声明 #### 一、一维数组的声明与创建 在Java中,数组是一种特殊的数据结构,用于存储相同类型的多个元素。数组在内存中是连续存储的,并且...希望本文能够帮助读者更好地掌握Java数组的相关知识。

    JAVA中数组的定义.doc

    Java中的数组是一种特殊的变量,它能够存储同一类型的多个值,这些值通过索引来访问。数组在Java中扮演着基础且重要的角色,它们是程序中数据结构的基础构建块。以下是关于Java中数组的详细说明: 一、一维数组的...

    java中数组的定义及使用方法详解.pdf

    Java 中数组的定义及使用方法详解 数组是 Java programming 语言中的一种基本数据结构,用于存储一组相关的变量。数组可以是一维数组、二维数组或多维数组,数组的每个元素的数据类型都是相同的。使用数组可以避免...

    Java中数组与集合的相互转换实现解析

    Java中数组与集合的相互转换实现解析 Java中数组和集合是两种不同的数据结构,数组是一种固定长度的数据结构,而集合是一种可变长度的数据结构。它们之间的转换是非常重要的,在实际开发中经常会遇到这种情况。...

    JAVA中数组的访问是如何进行的呢.txt

    1. **类型一致性**:数组中的所有元素必须具有相同的类型,无论是基本数据类型(如`int`, `double`)还是引用类型(如`String`, `Object`)。 2. **长度固定**:一旦数组被创建,其长度就不可更改。这意味着在创建...

    java中数组列表ArrayList的使用.doc

    这个方法把 ArrayList 的元素 Copy 到一个新的数组中。 在使用 ArrayList 时,需要注意线程同步的问题,如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用 lock 来保持线程同步。同时,...

    java中数组查找的常见算法

    java中数组查找的常见算法

    Java数组练习题(带答案).doc

    Java数组是Java编程语言中的基本数据结构之一,用于存储固定数量的同类型元素。了解和熟练掌握数组的使用是学习Java的重要环节。本篇练习题涵盖了数组的基本概念、操作和异常处理,下面是针对题目中涉及知识点的详细...

    Java中数组的定义与使用

    Java中数组的定义与使用

    Java中数组和对象数组的区别是什么.txt

    Java中数组和对象数组的区别是什么.txt

    Java中数组实例---一维数组.pdf

    在Java编程语言中,数组是一种特殊的数据结构,用于存储同一类型的数据集合。在这个文档中,我们专注于一维数组的实例,主要探讨了如何创建、初始化和输出一维数组的元素。以下是详细的知识点解析: 1. **数组声明*...

    Java中数组反转与多线程应用深度解析

    本文详细介绍了Java中数组反转的几种方法,并探讨了如何使用多线程技术来优化数组反转过程。通过合理地设计多线程任务和同步机制,可以显著提高数组反转的效率。这些技术的应用不仅限于数组反转,还可以扩展到其他...

    讲述Java中数组的基本使用以及简单排序_Array.zip

    讲述Java中数组的基本使用以及简单排序_Array

    java中数组

    主要介绍了java中数组的使用,适合理不清概念的读者使用,还有些关于栈、堆的使用。

    java数组结构图

    对数组的总结和分析,通过这个结构记住它,在开发的过程中使用

Global site tag (gtag.js) - Google Analytics