java学习笔记(四)数组

本文详细介绍了Java中的数组,包括数组的定义、赋值、访问及遍历。此外,还探讨了基本和引用数据类型在内存结构上的差异。文章通过一系列实践案例,如存储偶数、奇数、数组操作、计算平均值、查找最大最小值、数组合并、拆分、去零、排序以及用户认证等,深入解析了数组的使用技巧。
摘要由CSDN通过智能技术生成

数组

数组是一组数据类型相同的数据的组合,将这些数据统一管理起来
数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型
1.数组是一个引用数据类型
2.数组是在堆内存中的一串连续的地址存在
4.数组在初始化时必须指定长度
4.堆内存的数组长度一旦确定 不能再次发生改变
5.栈内存的变量中存储的是数组的地址引用
6.数组内部存储的类型可以是基本的 也可一是引用

1.数组的定义(声明)

数据类型[] 数组名字
int[] x;
char[] y;
boolean[] z;
String[] m;

int[] x; ---->比较规范
int x[];
int []x;

2.数组的赋值(初始化)

静态初始化 有长度 有元素
     int[] array=new int[]{10,20,30,40,50};
     int[] array={10,20,30,40,50};
     
     int[] array;
     一百行
     array=new int[]{};//此时编译器无法确定变量类型,必须要创建(new)
动态初始化 有长度 没有元素(不是真的没有 默认值)
    int[] array =new int[5];
    整数默认值---0
    浮点数默认值---0.0
    字符型默认值---  0--char 97-a   65-A  48-'0'      
    布尔型默认值---false
    引用数据默认值---null

3.数组元素的访问

通过元素在数组中的位置来访问
位置---->index索引
索引是有取值范围的 [从0开始----数组长度-1]
如果数组的索引超过了上述范围
会出现一个运行时异常 ArrayIndexOutOfBoundsException

4.数组元素的遍历(轮询)

通过循环的方式访问数组的每一个元素
for(;;){
}
JDK1.5版本 javaSE5.0 增加了新的特性: 增强for循环 加强for forEach
for(自己定义的变量(接收数组内每一个元素):遍历数组array){
}

正常的for循环已及加强的for循环都要熟练掌握
1.正常的for  有三个必要条件 index索引 找到某一个元素的位置
        可以通过index直接访问数组的某一个位置 取值 存值都可以
        不好在于写法相对来说比较麻烦
2.增强for    有两个条件 用来取值的变量 用来遍历的数组 没有index索引
        好处写法相对比较容易
        不好只能取值 不能存值
        没有index索引 找不到元素哪一个
public class TestArray{
    public static void main(String[] args) {
         String[] array=new String[5] ;
         for(String value:array){
            System.out.println(value);
         }

//        int[] array=new int[]{10,20,30,40,50};
       //通过元素在数组中的位置index(索引 下标)来访问
       //array[index] index从0开始
       //从数组内取得某一个位置的元素
       //int value =array[0];
       //System.out.println(value);
       //向数组内的某一个位置存入元素
       //array[3] = 400;
       //索引有范围的
       
       //int value=array[5];
       //System.out.println(value);
       //异常 ---运行时异常   
       //ArrayIndexOutOfBoundsException 数组索引越界
       //index索引  0开始----数组(长度-1)结束  
       
       //将数组中的每一个元素都拉出来看一看
     /*
       for(int index=0;index<array.length;index++ ){ //每一次做一样的事情 取数组的值 5次 
          int value =array[index];
          System.out.println(value);
       }    
       System.out.println("-----我是一个华丽的分隔符-----");
       
       for(int value:array){
       System.out.println(value);
       }
       */
    }
}

5.基本数据类型和引用数据类型在内存结构上的区别

所有的变量空间存储在栈内存
变量空间可以存储基本数据类型 可以存储引用数据类型
如果变量空间存储的是基本数据 存储的是值 一个变量改变 另一个不会跟着改变
如果变量空间存储的是引用数据类型 存储的是引用(地址) 一个变量地址对应的值改变 另一个跟着改变
在这里插入图片描述

public class TestArray2{
    public static void main(String[] args) {
         int a = 10;
         int b=a;
             b=100;
         System.out.println(a);//? 10
 
         int[]x=new int[]{10,20,30};
         //栈内存中的小容器 类型定义了只能存储这种东西 容器中只能存一份
         //见到new 关键字 相当于 在 堆内存中申请开辟一块新的空间
         //数组在堆内存的空间形态 是一串连续的地址
         //基本类型变量空间存储的是值 传递的是值 一个改变 另一个不变
         //引用类型变量空间存储的是地址(引用) 传递的就是引用 一个改变 另一个跟着改变
         int[] y =x;
         y[0] =100;
         System.out.println(x[0]);//?100

    }
}

需求 容器(变量 数组)

1.创建一个数组 用来存储1-100之间的偶数
public class SavaNum {
   public static void main(String[] args) {
        //1.需要创建一个数组
        int[] array =new int[50];
        //2.需要将1-100之间的偶数存入数组内
       for(int i=0;i<array.length;i+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值