数组指的是一组相关变量的集合
申明并开辟数组:
(1)数据类型 数组名称[] = new 数据类型[长度](ok)
(2)数据类型 [] 数组名称 = new 数据类型[长度]
分步完成:
(1)声明数组:int data [] = null
(2)开辟数组:data = new int(100)
数组的访问:数组名称[下标|索引],下标从0开始,如果访问超出了数组的长度,那么会出现数组越界异常(ArrayIndexOutOfBoundsException)
数组定义结构使用的是动态初始化的方式,即:数组会首先开辟内存空间,对应数据类型的默认值
public class Test04 {
public static void main(String [] args){
int data[] = new int[3];
System.out.println(data.length);
System.out.println(data[0]);
System.out.println(data[1]);
System.out.println(data[2]);
for(int i = 0;i for(int i = 0;i out.println(data[i]);
}
}
}
数组属于引用数据类型,会牵扯到内存分配,与对象保存唯一的区别在于:对象中的堆内存保存的是对象的属性,而数组的堆内存保存的是一组的信息。
动态初始化:先开辟数组空间,而后为数组中的内容进行赋值
静态初始化:数组定义的同时就设置好了相应的数据内容
这里介绍一下静态初始化的声明格式
(1)格式1:简化格式
数据类型 数组名称[] = {值,值,值}
不建议采用这种格式
(2)格式2:完整格式
数据类型 数组名称[] = new 数据类型[]{值,值,值}
public class Test04 {
public static void main(String [] args){
int data[] = new int[]{1,2,3,4,5,6};
for(int i = 0; i < data.length; i++){
System.out.println(data[i]);
}
}
}
那么我们在工作中是使用静态还是动态呢?其实一般这两个都用不到,在实际工作中,数组是存在的,但是他的内容大部分情况下都是通过我们传递的数据动态生成的,很少会出现这种先开辟数组而后去使用的情况。
数组执行顺序的数据访问操作,但是数组有一个最大的缺点-长度不能够被改变。
二维数组和一维数组都存在动态初始化和静态初始化的概念。
动态初始化:数据类型 数组名称[][] = new 数据类型[行的个数][列的个数]
静态初始化:数据类型 数组名称[][] = new 数据类型[ ][ ] ({值,值,值},{值值值})
使用:数组名称[行坐标][列坐标]
在开发中,其实很少使用二维数组,这里了解一下即可
在进行数组的引用传递的过程之中,方法会数组的修改一定会影响到原始数据。因为这里是引用传递,可以画一下内存图
定义对象数组(这里以类为例)
动态初始化:
….|-声明并开辟对象数组:类名称 对象数组名称[] = new 类名称[长度];
….|-分步完成:
……..|-声明对象数组:类名称 对象数组名称[] = null;
……..|-开辟对象数组:对象数组名称 = new 类名称[长度];
静态初始化:
类名称 对象数组名称[] = new 类名称[]{实例对象,实例对象,实例对象}
class Book{
private String bookName;
private double bookPrice;
//setter,getter,无参构造省略
public Book(String name, double price){
this.bookName = name;
this.bookPrice = price;
}
public String getInfo(){
return "书名:" + this.bookName + ";价格:" + this.bookPrice;
}
}
public class Test{
public static void main(String[] args){
Book books[] = new Book[]{
new Book("java基础", 89.8),
new Book("java进阶", 98.5),
};
for(int i = 0; i< books.length; i++){
System.out.println(books[i].getInfo());
}
}
}
java.util.Arrays这个类提供了各种方法来操作数组
参考:http://www.yiibai.com/java/util/java_util_arrays.html
数组的排序:java.util.Arrays.sort(数组名称)
public class Test{
public static void main(String[] args){
int nums[] = new int[]{4,2,3,4,5,7,9,22,4,5,1};
java.util.Arrays.sort(nums);
for(int i = 0;iout.println(nums[i]);
}
}
}