一维数组

  • 什么是数组
    用于批量存储同一类数据的容器
    是引用数据类型之一,通过new创建数组,数组中的每个元素相当于该对象的成员变量

  • 作用
    可以存储任意类型的数据

  • 数组的创建

  1. 声明数组
    int[] scores;
  2. 给数组初始化
    scores = new int[]{1,2,3,4,5};

解读:
1) [ ] 当使用了[ ]那么该对象一定是数组
int[]scores;
定义一个名叫scores,int 数据类型的数组
2)scores = new int[]{1,2,3,4,5};
创建一个int类型的数组,长度是5,并同时给5个位置初始化值,然后5个位置进行赋值,最后=赋值给scores对象的引用

  1. 声明数组
    names =new String[5];

创建一个String类型的数组,长度是5,把长度给names对象的引用。
这个时候数组的初始化值是null,不同的基本数据类型有不同的默认值

  1. 给数组初始化
    names[0]="aaa"; names[3]="bbb";

对names的第一个位置赋值 “aaa”
对names的第四个位置赋值 “bbb”

  • 数组的初始化
  1. 静态初始化:数组的初始化(创建)操作和赋值操作同时进行
  2. 动态初始化:数组的初始化(创建)操作和赋值操作分开进行
  • 数组的规则
  1. 无论静态初始化还是动态初始化,必须指明长度。创建后长度固定不可变
  2. 数组每个元素的位置都具有索引值(下标)
    索引值从 0 开始—>数组的长度 — 1
    java中提供数组获取长度的属性: length
  • 示例
基本数据类型的默认值
byte short int ---> 0
long ---> 0L
float ---> 0.0F
double ---> 0.0D
char ---> '\u0000'
boolean  --->  false
        /*
        //byte在数组中元素的默认值
        byte[] bs = new byte[5];
        for(int i = 0; i < bs.length; i++){
            System.out.println(bs[i]);
        }
        //float在数组中元素的默认值
        float[] fs = new float[3];
        for(int i = 0; i < fs.length; i++){
            System.out.println(fs[i]);
        }
        //char在数组中元素的默认值
        char[] chs = new char[5];
        for(int i = 0; i < chs.length; i++){
            System.out.println(chs[i]);
        }
    
        //boolean在数组中元素的默认值
        boolean[] boos = new boolean[3];
        for(int i = 0; i < boos.length; i++){
            System.out.println(boos[i]);
        }
  
*/
        
引用数据类型的默认值 --->  null
    |--类(class)
    |--接口(interface)
    |--数组([])
class ArrayTest {
    public static void main(String[] args) {
        
        //1 声明一个Person类型的数组
        Person[] persons = new Person[5];
        
        //2 对persons数组赋值——>存对象
        persons[0] = new Person();
        persons[1] = new Person("张三", 18);
        persons[2] = new Person("李四", 20);
        persons[3] = new Person("王五", 22);
        persons[4] = new Person("赵六", 35);
        //3遍历数组
        for(int i = 0; i < persons.length; i++){
            //输出对象的地址值
            System.out.println(persons[i].say()); 
        
        }
    }
}

//java bean
class Person{
    private String name;
    private int age;
    public Person(){}
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
        public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
    public String say(){
        return "姓名:" + name + " 年龄:" + age;
    }
}
  • 数组常见的异常:
  1. java.lang.ArrayIndexOutOfBoundsException : 数组下标越界异常
        Person[] persons = new Person[5];//{new Person(), null, null, null, null}
        persons[6] = new Person();
  1. java.lang.NullPointerException : 空指针异常
Person p = new Person();
p = null;
System.out.println(p.say());         //null.say();
  • 数组的遍历
  1. 普通 for 循环遍历数组
//基本数据类型:
for(int i = 0; i < scores.length; i++){
        int s1 = scores[i];
        System.out.println(s1);
}
 //引用数据类型:
for(int i = 0; i < persons.length; i++){
        Person p = persons[i];
        System.out.println(p.say(在Person类中定义的返回属性方法));
}
  1. 增强 for 循环
    1 格式:
    for(被遍历数组中元素的数据类型 变量名 : 被遍历的数组){}
    2 示例:
for(int score : scores){
        System.out.println(score);
}
for(Person p : persons){
        System.out.println(p.say());
}
  1. 使用工具类
Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );

你可能感兴趣的:(一维数组)