4.6Java数组概述和特点

4.6Java数组概述和特点

数组的概念

定义:

  • 相同类型数据的有序集合---整型数组、浮点型数组...

特点:

  • 相同类下的若干数据

  • 按照一定先后次序排列组合而成

  • 每个数据称为一个元素

  • 每个元素可以通过一个索引(下标)来访问它们---每个元素的索引下标是有序的

数组的三个基本特点:

特点:

  • 长度是确定的。数组一旦被创建,它的大小就是不可以改变的

  • 其元素必须是相同类型,不允许出现混合类型

  • 数组类型可以是任何数据类型,包括基本类型和引用类型

数组的重要特点:
  • 数组就是对象

  • 数组变量属于引用类型

  • 数组中每个元素相当于对象的成员变量---默认遵守对象成员变量的规则

数组的声明

格式:

type[] arr_name; //推荐使用这种方式
type arr_name[];
//创建一个数组
type[] arr_name = new type[分配的空间大小];
int[] arr = new int[5]; //a这个数组能装五个整数,默认值为成员变量的数值默认类型
//还有一种赋值的写法
int[] a = new int[]{1,2,3,4};
//写法比较
int[] arr;
arr = {1,2,3,4}; //编译错误,没有初始化对象!!!

实例:

package cn.Lucifer.arrays;

/**
* 测试数组的声明
* @author Lucifer
*/
public class TestNo1 {
   public static void main(String[] args) {
       /*
       声明一个整数的类型的数组
        */
       Integer[] arr01;
       /*
       给数组分配空间,声明数组的长度
        */
       arr01 = new Integer[10];
       String arr02[] = new String[5]; //声明一个String类型的数组
       User[] arr03 = new User[3]; //这个的意思是可以放三个User对象的数组
       /*
       这个时候这个数组是空的,大小也没有定义出来
       再JVM里面这个时候并没有为这个数组分配空间
        */
       /*
       数组的赋值
        */
       arr01[0] = 13; //数组的0号索引位的值为13,内存里面的0号所以的空间的值为13
       arr01[1] = 12; //通过索引下标赋值。索引下标:0,1,2,3,4,5,6,7,8,9
//       arr01[10] = 100; //编译能通过但是执行会报错---下标越界。索引下标的范围:从0开始到数组.length结束
       /*
       循环赋值
        */
       for(int i = 0; i < arr01.length; i++){
           arr01[i] = 10*i;
           System.out.println(arr01[i]);
      }
       /*
       这个length是一个方法
       通过循环初始化数组然后打印出结果
        */
  }
}

//创建一个User类
class User{
   private Integer id;
   private String name;

   /*JavaBean*/
   public void setId(Integer id){
       this.id = id;
  }

   public Integer getId(){
       return this.id;
  }

   public void setName(String name){
       this.name = name;
  }

   public String getName(){
       return this.name = name;
  }
}

声明数组时内存的变化如图:

数组可以是数据类型也可以是对象,如果是对象的话分配空间的意思是该空间内能存储多少个对象

对象数组声明与赋值实例:

package cn.Lucifer.arrays;
import cn.Lucifer.arrays.User;

public class TestNo2 {
   public static void main(String[] args) {
//       User arr03[] = new User[3]; //声明一个User类数组,给数组分配空间,开辟三个空间
       arr03[0] = new User(1001,"Lucifer"); //数组空间的0号索引位创建一个对象
       arr03[1] = new User(1002,"Harden");
       arr03[2] = new User(1003,"James");
//       UserNo2 u2 = new UserNo2();


       //遍历数组
       for(int j = 0; j < arr03.length; j++){
//           System.out.println(u2.toString(arr03[j]));
           System.out.println(arr03.getClass());
      }
  }
}

//新建一个类重写toString方法
class UserNo2{
   /*重写toString方法,不能再一个方法下重写另一个方法*/
   @Override
   public String toString(){
       return "这是一个地址";
  }
}

 

posted @ 2021-04-07 09:34  俊king  阅读(148)  评论(0编辑  收藏  举报