`
jassion
  • 浏览: 12327 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

阅读更多

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语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. 了解Java的应用。 考试内容: 一、 Java语言的特点和实现机制 二、 Java体系结构 ...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、...

    JAVA上百实例源码以及开源项目

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、...

    其实你应该这样学Java 源代码

    Java虚拟机和JDK+JCreator的开发环境,Java程序代码的特点,Java语言中的运算符和表达式,Java的基本数据类型,Java语句流程,如顺序语句、选择语句、循环语句、跳转语句等,数组的概念和使用。第二部分讲解了面向...

    全国计算机等级考试二级教程--Java语言程序设计必杀秘诀.pdf

    4、掌握 Java语言编程的基本技术。 5、会编写 Java用户界面程序。 6、会编写 Java简单应用程序。 7、会编写 Java小应用程序( Applet)。 8、了解 Java的应用。 主要内容 第 1 章 Java语言概述 第 2 章 简单数据类型...

    疯狂JAVA讲义

    1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发...

    Java技术实用教程

    本书介绍了Java语言的特点,基本语法,面向对象的程序设计方法,Java技术的应用。第一部分重点介绍了Java语言的运算符、流程控制、数组、异常I/O及文件操作、多线程机制、图形化界设计、Applet小程序等;第二部分...

    java开发手册、java编程和开发

    《java开发手册》由浅入深、全面系统地介绍java编程和开发的方方面面。书中各章提供了大量有针对性的实例,供...本书非常适合使用java进行编程和开发的本科生、研究生及教师阅读,还适合广大科研和工程技术人员研读。

    JAVA SE应用详解.pdf

    、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件和数据流、图形用户界面、线程、网络编程和数据库程序设计。_x000D_本书以初学者为 起点,每个章节循序渐进地向读者介绍了Java相关核心知识,并设计...

    java开发手册

    本书由浅入深、全面系统地介绍Java编程和开发的方方面面。书中各章提供了大量有针对性的实例,供读者实战演练。...本书非常适合使用Java进行编程和开发的本科生、研究生及教师阅读,还适合广大科研和工程技术人员研读。

    Java语言程序设计

    不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...

    Java2实用教程.rar

    1 2Java的特点 1 3安装Sun公司的SDK 1 4一个Java程序的开发过程 1 5一个简单的Java应用程序的开发过程 1 6一个简单的Java小应用程序 1 7什么是JSP 习题 第2章标识符 关键字和数据类型 2 1标识符和关键字 2 2Java的...

    从零开始学Java资源包

    全书内容分为六篇共23章,讲解了Java的各个方面,主要内容包括Java语言的环境配置、基本语法、流程控制语句、字符串处理、数组、面向对象、图形界面设计、输入/输出、异常处理、网络编程、数据库及Java Web基础JSP和...

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    JAVA基础课程讲义

    JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 ...

    使用Android 系统测量软件开发技术 [武安状 主编] 2014年版

    Java语言基础3.1 Java简介3.1.1 Java概述3.1.2 Java语言特点3.1.3 Java组成与体系3.1.4 Java运行体系3.2 Java基础3.2.1 Java数据类型3.2.2 Java常量3.2.3 Java变量3.2.4 Unicode字符集3.3 Java基本元素3.3.1 注释符...

    Java开发技术大全 电子版

    Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释...

    Java 基础核心总结 +经典算法大全.rar

    反射的思想及作用 反射的基本使用 获取类的 Class 对象构造类的实例化对象获取-个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法反射的应用...

Global site tag (gtag.js) - Google Analytics