首页  |  论坛  |  博客  |  维客  |  笔译口译  |  公司新闻  |  翻译新闻  |  翻译技巧  |  网站联盟  |  在线翻译  |  在线词典  |  翻译求助  |  简历中心  |  自由译者  |  翻译招聘  |  联系我们

博客首页 | 资讯 | 日志 | 图片 | 商品 | 影音 | 文件 | 书签 | 圈子 | 论坛

我的生活  |   翻译交流  |   英文写作  |   外语学习  |   大学生活  |   新闻见解  |   职场创业  |   情感绿洲  |   电脑网络  |   自然旅游  |   文学园地  |   影视娱乐  |   转载美文  |   日志

Java数组特点及基本使用技巧

上一篇 / 下一篇  2008-09-09 14:24:33

1.关于数组的特点

1)在Java中,无论使用数组或容器,都有边界检查。如果越界操作就会得到一个RuntimeException异常。

2)数组只能保存特定类型。数组可以保存基本类型,容器则不能。容器不以具体的类型来处理对象,它们将所有对象都按Object类型处理。

3)容器类只能保存对象的引用。而数组既可以创建为直接保存基本类型,也可以保存对象的引用。在容器中可以使用包装类,如Integer、Double等来实现保存基本数据类型值。

4)对象数组和基本类型数组在使用上几乎是相同的;唯一的区别是对象数组保存的是引用,基本类型数组保存基本类型的值。

2.关于数组定义

1)数组在定义时,不能分配空间。只有定义完后,可以给数组分配空间。

int num[];

num=new int[3];

软件开发网 www.mscto.com

int num[]=new int[3];

注意

int [] num=new int[]{1,2,3}; //ok

int [] num=new int[3]{1,2,3}; //error;软件开发网 www.mscto.com

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.关于数组初始化软件开发网 www.mscto.com

对象数组在创建之初会自动初始化成null,由原始数据类型构成的数组会自动初始化成零(针对数值类型),(Char)0 (针对字符类型)或者false (针对布尔类型)。

4.数组有关引用的问题

int[] a1 = { 1, 2, 3, 4, 5 };

int[] a2;

软件开发网 www.mscto.com

a2 = a1;//这里只是复制了一个引用

看以下代码:

软件开发网 www.mscto.com

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]------软件开发网 www.mscto.com

a2[0]=333

a1[0]=333

----- a2------

a2[0] = 333

a2[1] = 3

a2[2] = 4

a2[3] = 5

a2[4] = 6软件开发网 www.mscto.com

数组a1和a2始终在操作同一个对象。

5.关于数组的相关操作

1)在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。

2)数组的复制:System.arraycopy()。

3)数组的排序:Arrays.sort()。

4)在已排序的数组中查找某个元素:Arrays.binarySearch()。

6.关于数组的排序操作

1)对象数组排序,必须实现Comparable接口。

软件开发网 www.mscto.com

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]);            }            }            }

软件开发网 www.mscto.com

结果:

number=1,name=zhangsan

number=2,name=lisi软件开发网 www.mscto.com

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软件开发网 www.mscto.com

1)java.util.Class Arrays’s architecture

java.lang.Object

|

--java.util.Arrays

2)说明

这个类提供的基本上都是静态方法,用户进行数组操作,binarySearch():数组中特定元素的寻找,equals():比较两个数组是否相等(在相同位置上的元素是否相等),fill():数组填充,sort():数组排序。



TAG: 特点 java 技巧 Java

引用 删除 亮亮   /   2008-09-10 19:19:01
您计算机软件水平不错
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)


公司简介 | 联系我们 | 人员招聘 | 服务条款 | 法律声明 | 流量统计 | Copyright © 2000-2008 NETAT.NET All Rights Reserved.
本网站所刊登的各种信息和各种专题资料,均为金桥翻译中心版权所有,未经协议授权,禁止下载使用。京ICP备05080404号