`
jassion
  • 浏览: 13171 次
  • 性别: 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+对象+数组)

    1. **Java编程语言**:Java是一种广泛使用的面向对象的编程语言,具有跨平台、安全性高和可移植性好等特点。在这个订餐系统中,Java被用来编写所有的代码,确保程序在不同环境下都能稳定运行。 2. **面向对象编程...

    JAVA核心技术.pdf

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

    java习题(含答案).doc

    图形与用户界面技术章节主要讲述如何使用Java的Swing或JavaFX库创建GUI应用程序。多线程使得Java程序能够同时执行多个任务,提高效率。多媒体编程涉及Java对音频、视频等多媒体的支持,而输入与输出流则处理程序与...

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

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

    数组和list相互转换

    在编程领域,数组(Array)和列表(List)是两种常用的数据结构,它们各自具有不同的特点和适用场景。数组是一种固定长度的数据结构,适合存储已知大小的数据集合;而列表则是一种可变长度的数据结构,适合存储未知...

    JAVA的考核知识点.docx

    了解Java一维数组和二维数组的使用,并掌握多维数组的原理,能够熟练运用Java数组进行编程。 4. 流程控制: 掌握顺序结构、控制分支结构、循环结构等流程控制语句的使用,能够正确使用break、return、continue等控制...

    java各种数组排序(插入,交换,选择,归类,基数排序).docx

    ### Java 数组排序知识点 #### 排序算法的分类及适用场景 在计算机科学中,排序算法是一项重要的技术,用于对数据集进行有序排列。排序算法可以分为多种类型,每种都有其特定的应用场景和效率特点。根据文档提供的...

    Java学习路径与方法探讨PPT.pptx

    Java基础知识是学习Java编程语言的基础,包括Java基本数据类型、Java自动装箱与拆箱、Java数组与循环遍历、Java泛型与可变参数、数据类型与变量运算符与表达式等知识点。掌握这些基础知识是学习Java编程语言的第一步...

    java 基本功训练题及参考答案

    文档"Java编程基本功训练题及参考答案(50+10).doc"很可能包含了50个基础编程题目和额外的10个进阶问题,覆盖了Java语言的核心概念,如数据类型、变量、运算符、控制结构(如if语句和循环)、数组、函数、类和对象等...

    学生信息管理系统(Java基础版-无数据库)

    该系统不需要使用数据库技术来存储学生信息,而是使用Java的数组来存储学生信息。数组是一种基本的数据结构,用于存储相同类型的多个值。Java中的数组可以是一维数组、二维数组等,二维数组可以用来存储学生信息的多...

    java核心技术卷1第九版高清中文版

    3. Java基本语法:涵盖了Java程序的结构,基本数据类型和操作,控制流程(循环、条件判断)、数组等。 4. 面向对象的编程思想:深入讲解了类与对象、继承、多态、接口、封装等核心概念,并在实际编程中应用这些概念...

    java面试技巧及笔试汇集

    2. JPA或JDBC:了解Java与数据库交互的方式,如JPA的使用或JDBC的基本操作。 十、面试谈工资技巧 1. 自我评估:根据自身技能和经验,合理评估薪资范围。 2. 市场调研:了解当前行业的薪资水平,以及公司规模、地域...

    Java核心技术(卷一+卷二全集)

    5. **数组**:介绍一维和多维数组的声明、初始化与使用,以及数组操作技巧。 6. **字符串**:讲解String类的特点,字符串的操作方法,以及StringBuilder和StringBuffer的使用。 7. **异常处理**:讨论Java的异常模型...

    (完整版)最全的java学习笔记(必看).pdf

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

    java2实用教程

    5.1 声明数组:演示了如何声明和创建Java数组。 5.2 创建数组:展示了如何初始化数组以及数组元素的使用方法。 5.3 数组的初始化:讲解了静态和动态初始化数组的细节。 5.4 字符串:详细说明了字符串的操作,包括...

    全国计算机二级java题库

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

    JAVA程序设计习题库及答案(非常全面)

    ### JAVA程序设计习题库及答案(非常全面) #### 第一章 Java语言概论 **一、选择题解析** 1. **题目:** 下列不属于java语言鲁棒性特点的是: - A. java能检查程序在变异和运行时的错误 - B. java能运行虚拟机...

Global site tag (gtag.js) - Google Analytics