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():数组排序。
分享到:
相关推荐
1. **Java编程语言**:Java是一种广泛使用的面向对象的编程语言,具有跨平台、安全性高和可移植性好等特点。在这个订餐系统中,Java被用来编写所有的代码,确保程序在不同环境下都能稳定运行。 2. **面向对象编程...
1. Java语言基础:Java语言的基本语法、数据类型、运算符、控制流语句、方法和数组等。 Java语言基础是学习Java的基础,包括基本数据类型、变量、运算符、控制流语句、方法和数组等。Java语言的基本语法是学习Java的...
图形与用户界面技术章节主要讲述如何使用Java的Swing或JavaFX库创建GUI应用程序。多线程使得Java程序能够同时执行多个任务,提高效率。多媒体编程涉及Java对音频、视频等多媒体的支持,而输入与输出流则处理程序与...
* Java 数据类型:基本类型(int、float、char 等)、引用类型(数组、对象) * 数据定义错误:浮点数赋值、整数强制转换、byte 类型范围 三、Java 选择和循环语句 * if 语句的嵌套使用:else 和 if 的配对采用...
在编程领域,数组(Array)和列表(List)是两种常用的数据结构,它们各自具有不同的特点和适用场景。数组是一种固定长度的数据结构,适合存储已知大小的数据集合;而列表则是一种可变长度的数据结构,适合存储未知...
了解Java一维数组和二维数组的使用,并掌握多维数组的原理,能够熟练运用Java数组进行编程。 4. 流程控制: 掌握顺序结构、控制分支结构、循环结构等流程控制语句的使用,能够正确使用break、return、continue等控制...
### Java 数组排序知识点 #### 排序算法的分类及适用场景 在计算机科学中,排序算法是一项重要的技术,用于对数据集进行有序排列。排序算法可以分为多种类型,每种都有其特定的应用场景和效率特点。根据文档提供的...
Java基础知识是学习Java编程语言的基础,包括Java基本数据类型、Java自动装箱与拆箱、Java数组与循环遍历、Java泛型与可变参数、数据类型与变量运算符与表达式等知识点。掌握这些基础知识是学习Java编程语言的第一步...
文档"Java编程基本功训练题及参考答案(50+10).doc"很可能包含了50个基础编程题目和额外的10个进阶问题,覆盖了Java语言的核心概念,如数据类型、变量、运算符、控制结构(如if语句和循环)、数组、函数、类和对象等...
该系统不需要使用数据库技术来存储学生信息,而是使用Java的数组来存储学生信息。数组是一种基本的数据结构,用于存储相同类型的多个值。Java中的数组可以是一维数组、二维数组等,二维数组可以用来存储学生信息的多...
3. Java基本语法:涵盖了Java程序的结构,基本数据类型和操作,控制流程(循环、条件判断)、数组等。 4. 面向对象的编程思想:深入讲解了类与对象、继承、多态、接口、封装等核心概念,并在实际编程中应用这些概念...
2. JPA或JDBC:了解Java与数据库交互的方式,如JPA的使用或JDBC的基本操作。 十、面试谈工资技巧 1. 自我评估:根据自身技能和经验,合理评估薪资范围。 2. 市场调研:了解当前行业的薪资水平,以及公司规模、地域...
5. **数组**:介绍一维和多维数组的声明、初始化与使用,以及数组操作技巧。 6. **字符串**:讲解String类的特点,字符串的操作方法,以及StringBuilder和StringBuffer的使用。 7. **异常处理**:讨论Java的异常模型...
* 1.2 Java特点:Java语言的特点包括平台独立性、对象oriented、分布式、基于组件的、安全、高性能等。 * 1.3 Java开发环境:Java开发环境包括Java Development Kit(JDK)、Eclipse、Myeclipse等。JDK是Java开发的...
5.1 声明数组:演示了如何声明和创建Java数组。 5.2 创建数组:展示了如何初始化数组以及数组元素的使用方法。 5.3 数组的初始化:讲解了静态和动态初始化数组的细节。 5.4 字符串:详细说明了字符串的操作,包括...
掌握Java语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. 了解Java的应用。 考试内容: 一、 Java语言的特点和实现机制 二、 Java体系结构 ...
### JAVA程序设计习题库及答案(非常全面) #### 第一章 Java语言概论 **一、选择题解析** 1. **题目:** 下列不属于java语言鲁棒性特点的是: - A. java能检查程序在变异和运行时的错误 - B. java能运行虚拟机...