数组基本--------[ java ]

定义:

数组:数据是同一种数据类型数据的集合容器

数组的定义格式:

数据类型[ ] 变量名 = new 数据类型[ 长度 ] ;

int [] arr = new int [50];

左边
int [] arr ----声明了一个 int 类型的数组变量,变量名为 arr 。
int---------- 表明该数组只能存储 int 类型的数据
[ ] ---------- 这是一个数组类型
arr--------- 变量名
右边
new int [50]; ---- 创建了一个长度为 50 的 int 类型数组对象。
new--------------- 创建数组对象的关键字
int ---------------- 表示该数组对象只能存储 int 类型的数据
[ ] ----------------- 表示是数组类型
50 ---------------- 该数组最多能存储 50 个数据,数组的容量

栈内存的特点
栈内存存储的都是局部变量,变量一旦出了自己的作用域{ },那么马上就会从内存中小时,释放内存空间

局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量
成员变量:成员变量就是定义在方法之外,类之内的
对象数据:除了八种基本数据之外的数据,都是对象数据

注意:凡事以 new 关键字创建的对象, jvm 都会在栈内存中开辟一个新的空间,用于创建一个新的对象

堆内存的特点:
堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时该对象才会消失,释放内存。
对象如果没有变量引用了,那么该对象就是一个垃圾对象了

public static void main( String [] args){
   int [] arr = new int[4];//定义一个数组
   arr[0] = 10;
   arr[1] = 20;
   arr[2] = 30;
   aee[3] = 40;
   System.out.println("arr[2] = " + arr[2]); //输出:  arr[2] = 30
   
   System.out.println("数组的容量:" + arr.length);//数组有一个length 的属性,可以看数组的 容量
   
    System.out.println(arr); //输出了一个地址
    //查看数组中的所有元素,需要进行遍历
    for( int index = 0 ; index < arr.length ; index ++){
        System.out.println(arr[index]);
    }
}

= --------------(赋值运算符),这里的 = 是把数组对象内存地址赋予给 arr 变量
在这里插入图片描述

数组的好处:

对分配到数组对象中每一个数据都分配一个编号(索引值、角标、下标、),索引值的范围:0 ~ 长度 - 1

数组的内存分析:

//1: 
public static void main( String [] args){
    int [] arr1 = new int [2];
    int [] arr2 = new int[2];
    arr1[1] = 10;
    arr2[1] = 20;
    System.out.println(arr1[1]); // 输出10
}

在这里插入图片描述

// 2: 
public static void main( String [] args){
    int [] arr1 = new int [2];
    int [] arr2 =arr1;
    arr1[1] = 10;
    arr2[1] = 20;
    System.out.println(arr1[1]); // 输出20
}

在这里插入图片描述

// 3 :
public static void main( String [] args){
    int [] arr1 = new int [2];
    arr1[1] = 100;
    int [] arr2 = arr1;
    arr1[1] = 10;
    arr2[1] = 20;
    System.out.println(arr1[1]); // 输出20
}

在这里插入图片描述

数组中最常见的问题:

1、NullPointerEptionxce 空指针异常

原因:引用类型变量没有指向任何对象,而访问了对象的属性或者调用了对象的方法(引用类型:除了八种基本数据之外的类型)

public static void main( String [] args){
    int [] arr = new int [2];
    arr = null; // Null 让该变量不要有任何的对象,不要记录任何的内存地址
    arr[1] = 10;
    System.out.println(arr1[1]); // 报错  NullPointerEptionxce	空指针异常
}

在这里插入图片描述

2、ArrayIndexOutOfBoundsException 索引值越界

public static void main( String [] args){
    int [] arr = new int [4];
    arr[0] = 10;
    arr[1] = 30;
    arr[2] = 40;
    arr[3] = 50;
    System.out.println(arr1[4]); //访问索引值为4 的内存空间存储的值   报错
}

在这里插入图片描述

数组的初始化方式:

1、动态初始化

数据类型 变量名 = new 数据类型 [ 长度 ] ;

2、静态初始化

数据类型 [ ] 变量名 = { 元素1, 元素2, … } ;

 public static void main( String [] args){
  //动态初始化
  // int [] arr = new int[10];
  //静态初始化
  int [] arr = { 10,20,304050};
  for( int index = 0 ; index < arr.length ; index ++){
      System.out.println(arr[index],);
  }
  System.out.println("")
}

如果程序一开就已经确定了数据,那么这时候建议使用静态初始化
如果一开始数据还不太明确,建议使用动态初始化

 public static void main( String [] args){
 int [] arr = new int[50];
 Scanner scanner = new Scanner(System.in);
 for( int index = 0 ; index < arr.length ; index ++){
     arr[index] = scanner.nextInt();
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值