JavaSE核心基础-一维数组-知识点

1.数组概念
相同类型数据的集合,它在内存空间的存储是连续的。数组其实也是一个容器,用来存储固定个数相同类型的数据,数组中存储的数据叫做元素。

2.数组定义
    方式1:
    数据类型[] 数组名 = new 数据类型[数组长度];
    数据类型 数组名[] = new 数据类型[数组长度]
    int[] arr = new int[10];
    int arr[] = new int[10];
数组定义格式详解: 
1)数组存储的数据类型:创建的数组容器可以存储什么数据类型。
2) [] : 表示数组。
3) 数组名:为定义的数组起个名称,满足标识符规范,可以使用名字操作数组。 
4) new:关键字,创建数组使用的关键字。
5) 数据类型: 创建的数组容器可以存储什么数据类型。
6)[数组长度]:数组的长度,表示数组容器中可以存储多少个元素。 
【注意!!!】 数组有定长特性,长度一旦指定,不可更改。

    方式2:
    数据类型[] 数组名 = new 数据类型[]{值1,值2...};
    int[] arr = new int[]{1,2,3,4,5};
数组定义格式详解: 
1)在定义数组的时候,直接将数组元素的值传入
2)采用这种方式定义数组,那么一定不要定义长度,数组的长度是由具体元素的个数决定
        
     方式3:
     数据类型[] 数组名 = {元素1,元素2,元素3...};
     int[] arr = {1,2,3,4,5}; 
数组定义格式详解: 
1)这种方式第一数组,直接传入要操作数组元素的值
2)这种定义数组的方式使用的比较少

3.数组索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。

4.访问数组的格式
格式:
         数组名[索引/下标]   【索引/下标:元素在数组中的位置,位置是从0开始,比如获取第5个元素,arr[4]】

5.数组的长度属性
每个数组都具有长度,并且在定义数组之后就是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度。
格式:
         数组名.length 【属性length的执行结果是数组的长度,int类型结果。由此可得,数组的最大索引值为 数组名.length-1。】

6.索引访问数组中的元素
Ⅰ.在数组中可以通过索引赋值,也可以通过索引得到数组元素的值。
①.为数组元素赋值格式:
数组名[索引] = 值;
②.获得数组元素:
变量 = 数组名[索引];

Ⅱ.数组创建之后,内存会分配默认值
byte 、short、 int 、long类型的默认值是:0
float、 double类型的默认值是0.0
String类型的默认值是:null
char类型的默认值是:'\u0000',即 0
boolean类型的默认值是:false

小结:
①.定义数组的常用方式:数据类型[] 数组名=new 数据类型[长度]。
②.数组的长度为:数组名.length。
③.数组是通过索引名称赋值,也是通过索引访问。

7.内存的概述
1)内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 
2)Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。 

小结:
①.数组是引用数据类型。
②.引用数据类型的值存在堆空间中,由地址指向值。

8.数组的常见操作
1)数组越界异常 : ArrayIndexOutOfBoundsException 数组越界异常
2)数组空指针异常 : NullPointerException 空指针异常
3)数组的遍历
4)数组获取最大元素值元素
①.方法一:
定义变量,保存数组0索引上的元素 
遍历数组,获取出数组中的每个元素 
将遍历到的元素和保存数组0索引上值的变量进行比较 
如果数组元素的值大于了变量的值,变量记录住新的值
数组循环遍历结束,变量保存的就是数组中的最大值 

②.方法二:
导包:java.util.Arrays; 
调用Arrays中的sort()方法,对数组进行升序排序
数组中的最后一个元素即为最大值
5)数组的反转
分析:
实现反转,就需要将数组最远端元素位置交换 
定义两个变量,保存数组的最小索引和最大索引 
两个索引上的元素交换位置 
最小索引++,最大索引--,再次交换位置 
最小索引超过了最大索引,数组反转操作结束 
6)冒泡排序
冒泡排序原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:
①.依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
②.第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
③.第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
④.依次类推,每一趟比较次数-1;
【代码实现】
int[] arr = {2,3,4,6,1,8};
for(int i=0;i<arr.length-1;i++){//
    for(int j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
            int a = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = a;
        }
    }
}

for(int i=0;i<arr.length;i++){
    System.out.println(arr[i])
}

小结:
①.在操作数组的时候要避免出现数组下标越界异常和空指针异常。
②.使用for循环遍历数组。
③.求数组的最大值的前提是参与比较的值必须是数组中的元素。
④.冒泡排序的规则:外层循环n-1,内层循环n-1-i

9.数组作为方法的参数和返回值
1)数组作为方法的参数传递的是数组内存的地址
2)数组作为方法的返回值,返回的是数组的内存地址

小结:
①.方法的参数为基本类型时,传递的是数据值。
②.方法的参数为引用类型时,传递的是地址值。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程在手天下我有

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值