笔记10:java_数组

数组基本概念

数组指的是一组相关变量的集合

一维数组的定义和使用

申明并开辟数组:
(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

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]);
        }
    }
}

你可能感兴趣的:(java)