`
jassion
  • 浏览: 12436 次
  • 性别: 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核心技术.pdf

    1. Java语言基础:Java语言的基本语法、数据类型、运算符、控制流语句、方法和数组等。 Java语言基础是学习Java的基础,包括基本数据类型、变量、运算符、控制流语句、方法和数组等。Java语言的基本语法是学习Java的...

    2014秋季Java程序设计期末考试试卷(A卷).doc

    * Java 数据类型:基本类型(int、float、char 等)、引用类型(数组、对象) * 数据定义错误:浮点数赋值、整数强制转换、byte 类型范围 三、Java 选择和循环语句 * if 语句的嵌套使用:else 和 if 的配对采用...

    全国计算机二级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实用编程技术第章-Java语言概述及编程基础.pptx

    "Java实用编程技术" Java语言概述及编程基础: Java语言是一种面向对象、分布式、平台中立、可移植、高效、安全的编程语言。它具有以下特点: 1、简单:Java语言的语法简单易学,易于程序员掌握和使用。 2、面向...

    华东师范大学计算机科学与技术专业.pdf

    * 通过该章的学习,掌握Java的程序流控制语句如条件语句、循环语句等,并了解和掌握Java数组。 第四章 Java的对象和类 * 面向对象的程序设计的若干概念 * Java的对象和类 * 方法的调用 * 方法重载和方法重写 * ...

    2022年java语言-java语言程序设计.docx

    Java 语言是一种广泛应用于 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网的技术,具有卓越的通用性、高效性、平台移植性和安全性。Java 技术拥有全球最大的开发者专业社群。 1. Java 语言发展概况 ...

    java学习路线(鱼皮)

    Java学习路线(鱼皮)是一条完整、实用、开源的学习路线,旨在帮助学习者快速掌握Java开发的所有知识点,并提供了丰富的资源推荐和学习建议,以便学习者更好地学习和掌握Java开发技术。 知识点: * Java编程基础 *...

    JNI完全技术手册,C语言与java互操作

    * 数组类型:如Java数组、C语言数组等。 知识点5:JNI的错误处理 JNI提供了多种错误处理机制,包括: * 异常处理:使用try-catch语句处理JNI调用中的错误。 * 错误代码:使用错误代码来处理JNI调用中的错误。 ...

    疯狂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学习笔记(必看).pdf

    * 1.2 Java特点:Java语言的特点包括平台独立性、对象oriented、分布式、基于组件的、安全、高性能等。 * 1.3 Java开发环境:Java开发环境包括Java Development Kit(JDK)、Eclipse、Myeclipse等。JDK是Java开发的...

    Java中高级核心知识全面解析.pdf

    本文将对 Java 中的高级核心知识进行全面解析,从基础知识到高级特性,全方位解析 Java 的核心技术。 一、Java 基础知识 1.1 Java 语言特点 * Java 语言是一种面向对象的编程语言,具有平台独立性、多线程、网络...

    Java练习题1(有答案).doc

    * Java 语言的基本概念包括变量、数据类型、运算符、控制流语句、数组等。 * 变量是存储数据的基本单位,可以是基本类型或引用类型。 * 数据类型包括基本类型和引用类型,基本类型包括整数、浮点数、字符等,引用...

    java从入门到精通-学习笔记整理863页.doc

    本资源摘要信息中,我们将从 Java 的基本概念到高级开发技术进行详细的介绍,涵盖了 Java 平台、Java 开发平台、Java 程序的运行机制、Java 编程语言的特点、Java 语言的基本语法、Java 开发工具的选择、Java 项目的...

    Java技术实用教程

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

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

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

Global site tag (gtag.js) - Google Analytics