• IT培训活动
  • IT培训就业
  • IT培训专区
  • IT培训就业
  • IT培训机构
  • IT培训学校
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

您当前位置:首页 > 睿峰资讯 > 睿峰动态 > 新手入门Java数组特点及基本使用技巧

新手入门Java数组特点及基本使用技巧

时间:2017-08-17 15:01:15   来源:未知  作者:睿峰

1.关于数组的特点
1)在Java中,无论使用数组或容器,都有边界检查。如果越界操作就会得到一个RuntimeException异常。
2)数组只能保存特定类型。数组可以保存基本类型,容器则不能。容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理。
3)容器类只能保存对象的引用。而数组既可以创建为直接保存基本类型,也可以保存对象的引用。在容器中可以使用包装类,如Integer、Double等来实现保存基本数据类型值。
4)对象数组和基本类型数组在使用上几乎是相同的;唯一的区别是对象数组保存的是引用,基本类型数组保存基本类型的值。
2.关于数组定义
1)数组在定义时,不能分配空间。只有定义完后,可以给数组分配空间。
int num[];
num=new int[3];

int num[]=new int[3];
注意
int [] num=new int[]{1,2,3}; //ok
int [] num=new int[3]{1,2,3}; //error;
2)可以这样定义二维数组。
int [][] num;
//or
num=new int[3][];
num[0]=new int[5];
num[1]=new int[3];
num[2]=new int[2];
3)二维数组赋初值。

int [][] num=new int[][]{1,2,3,4,5,5};         //error
int [][] num=new int[][]{{1,2,3},{4,5,5}};  //ok
int [][] num=new int[2][]{{1,2,3},{4,5,5}};       //error
int [][] num={{1,2,3},{4,5,6}};          //ok
3.关于数组初始化
对象数组在创建之初会自动初始化成null,由原始数据类型构成的数组会自动初始化成零(针对数值类型),(Char)0 (针对字符类型)或者false (针对布尔类型)。
4.数组有关引用的问题
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;//这里只是复制了一个引用
看以下代码:

public class Arrays {
    public static void main(String[] args) {
       int[] a1 = { 1, 2, 3, 4, 5 };
       for (int i = 0; i < a1.length; i++)
           System.out.println("a1[" + i + "] = " + a1[i]);
       int[] a2;
       a2 = a1;
       for (int i = 0; i < a2.length; i++)
           a2[i]++;
       System.out.println("-----after change a2------");
       for (int i = 0; i < a1.length; i++)
           System.out.println("a1[" + i + "] = " + a1[i]);
       System.out.println("-----after change a2[0]------");
       a2[0] = 333;
       System.out.println("a2[0]=" + a2[0]);
       System.out.println("a1[0]=" + a1[0]);
       System.out.println("----- a2------");
       for (int i = 0; i < a2.length; i++)
           System.out.println("a2[" + i + "] = " + a2[i]);
    }
}
结果:
a1[0] = 1
a1[1] = 2
a1[2] = 3
a1[3] = 4
a1[4] = 5
-----after change a2------
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6
-----after change a2[0]------
a2[0]=333
a1[0]=333
----- a2------
a2[0] = 333
a2[1] = 3
a2[2] = 4
a2[3] = 5
a2[4] = 6
数组a1和a2始终在操作同一个对象。
5.关于数组的相关操作
1)在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。
2)数组的复制:System.arraycopy()。
3)数组的排序:Arrays.sort()。
4)在已排序的数组中查找某个元素:Arrays.binarySearch()。
6.关于数组的排序操作
1)对象数组排序,必须实现Comparable接口。

import java.util.Arrays;
class Student implements Comparable {
    int num;
    String name;
 
    Student(int num, String name) {
       this.num = num;
       this.name = name;
    }
 
    public String toString()// 重写toString()方法,以便main:System.out.println(ss[i]);
    {
       return "number=" + num + "," + "name=" + name;
    }
 
    public int compareTo(Object o) {
       Student s = (Student) o;
       return num > s.num ? 1 : (num == s.num ? 0 : -1);
    }
}
 
class ArrayTest {
    public static void main(String[] args) {
       Student[] ss = new Student[] { new Student(1, "zhangsan"),
              new Student(2, "lisi"), new Student(3, "wangwu") };
       Arrays.sort(ss);
       for (int i = 0; i < ss.length; i++) {
           System.out.println(ss[i]);
       }
    }
}
结果:
number=1,name=zhangsan
number=2,name=lisi
number=3,name=wangwu
2)以num为第一关键字,name为第二关键字排序

import java.util.Arrays;
 
class Student implements Comparable {
    int num;
    String name;
 
    Student(int num, String name) {
       this.num = num;
       this.name = name;
    }
 
    public String toString() {
       return "number=" + num + "," + "name=" + name;
    }
 
    public int compareTo(Object o) {
       Student s = (Student) o;
       int result = num > s.num ? 1 : (num == s.num ? 0 : -1);
       if (0 == result) {
           result = name.compareTo(s.name);
       }
       return result;
    }
}
 
class ArrayTest {
    public static void main(String[] args) {
       Student[] ss = new Student[] { new Student(1, "zhangsan"),
              new Student(2, "lisi"), new Student(3, "wangwu"),
              new Student(3, "mybole") };
       Arrays.sort(ss);
       for (int i = 0; i < ss.length; i++) {
           System.out.println(ss[i]);
       }
    }
}
结果:
number=1,name=zhangsan
number=2,name=lisi
number=3,name=mybole
number=3,name=wangwu
7.关于java.util.Arrays
1)java.util.Class Arrays’s architecture
java.lang.Object
|
+--java.util.Arrays
2)说明
这个类提供的基本上都是静态方法,用户进行数组操作,binarySearch():数组中特定元素的寻找,equals():比较两个数组是否相等(在相同位置上的元素是否相等),fill():数组填充,sort():数组排序。 

注:以上文档资料由睿峰教育Java培训老师-程老师所提供,转载须注明出处。


上一篇:睿峰Java培训机构|深度分析 java 抽象类与接口  
下一篇:文科生在成都的UI培训机构学得懂吗?
地址:环球中心S2-6栋-16楼-12号、13号、14号。(洲际酒店大堂右边电梯上16楼)

课程免费咨询热线:15828071040