一维数组
2019-03-30 本文已影响0人
Finlay_Li
-
什么是数组
用于批量存储同一类数据的容器
是引用数据类型之一,通过new创建数组,数组中的每个元素相当于该对象的成员变量 -
作用
可以存储任意类型的数据 -
数组的创建
- 声明数组
int[] scores; - 给数组初始化
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对象的引用
- 声明数组
names =new String[5];
创建一个String类型的数组,长度是5,把长度给names对象的引用。
这个时候数组的初始化值是null,不同的基本数据类型有不同的默认值
- 给数组初始化
names[0]="aaa"; names[3]="bbb";
对names的第一个位置赋值 “aaa”
对names的第四个位置赋值 “bbb”
- 数组的初始化
- 静态初始化:数组的初始化(创建)操作和赋值操作同时进行
- 动态初始化:数组的初始化(创建)操作和赋值操作分开进行
- 数组的规则
- 无论静态初始化还是动态初始化,必须指明长度。
创建后长度固定不可变
- 数组每个元素的位置都具有索引值(下标)
索引值从 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;
}
}
- 数组常见的异常:
- java.lang.ArrayIndexOutOfBoundsException : 数组下标越界异常
Person[] persons = new Person[5];//{new Person(), null, null, null, null}
persons[6] = new Person();
- java.lang.NullPointerException : 空指针异常
Person p = new Person();
p = null;
System.out.println(p.say()); //null.say();
- 数组的遍历
- 普通 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类中定义的返回属性方法));
}
- 增强 for 循环
1 格式:
for(被遍历数组中元素的数据类型 变量名 : 被遍历的数组){}
2 示例:
for(int score : scores){
System.out.println(score);
}
for(Person p : persons){
System.out.println(p.say());
}
- 使用工具类
Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );