Java基础复习之数组

//个人觉得重点的部分会用不同颜色标出

  • 数组的定义和访问

如果需要定义多个变量,那么我们建议使用容器,一次性保存多个数据,统一操作

 

1.容器:是将多个数据存储到一起,每个数据称为该容器的元素。

 

2.Java中容器: 数组,集合

 

数组:是一个长度固定的容器,而且容器中的元素的数据类型要一致

 

3.数组的定义

格式一: 指定数组的长度,每个元素由系统赋默认值

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

格式说明:

       数据类型: 代表数据中元素的类型

       []:数组的特殊定义格式

       数组名: 程序员自定义的标识符

       new : 固定格式,表示创建一个新的数组

       长度: 是指这个数组中一共有多少个元素

这种方式,由于只是指定了长度,没有给每个元素赋值,那么每个元素都有默认值

默认值和数据类型有关系:

byte short int long 默认值是0

float double 默认值0.0

char 默认值 ' '

boolean 默认值 false

引用类型的默认值是 null

格式二:指定数组中每个元素的值,长度系统自动计算

数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,值4....};

 

格式三:格式二的简洁版本

数据类型[] 数组名 = {值1,值2,值3,值4....};

以上这种格式专业称为"语法糖",语法糖只是格式简化,底层的原理是不变的

 

4.数组元素的访问

 

要想访问数组的元素,那么必须用到数组的索引/下标/角标(index)

本质就是数组的中元素的编号, 索引是从0开始的

格式:

System.out.println(数组名[索引])

数组名[索引] = 值;

 

比如:

//1.定义一个数组
int[] nums = new int[4];
//2.访问数组的元素
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums[2]);
System.out.println(nums[3]);
//3.也可以修改元素的值
nums[0] = 10;
nums[1] = 100;
nums[2] = 1000;
nums[3] = 10000;
System.out.println("=================");
//4.重写打印
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums[2]);
System.out.println(nums[3]);

5.数组的长度属性

长度属性: 就是数组中元素的个数

 

格式:

int 长度 = 数组名.length;  获取了数组的长度

比如:

//1.定义一个数组
int[] arr = {1,2,3,4,5,235,345,34,53,10};
//2.获取数组的长度
System.out.println(arr.length);

//特别注意:数组的长度属性,只能取值,不能赋值

 

  • 数组原理内存图

1.什么是内存

程序运行时,所占的那部分空间,断电丢失

2.Java的内存五大区

栈区(stack): 保存局部变量(我们目前学的所有变量,都在这个区)

堆区(heap): 保存对象(俗称new出来东西)

方法区(method area): 保存.class文件

本地方法区(native) : 和操作系统有关

程序计数器区 : 和CPU相关

 

 

数组的常见错误

1.数组越界异常(ArrayIndexOutOfBoundsException)

访问了不存在的索引的元素

 

比如:

//1.定义一个数组
int[] nums = {10,20,30};
//2.访问元素
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums[2]);
//3.访问了不存在的索引
System.out.println(nums[3]);//此处出异常了,ArrayIndexOutOfBoundsException

 

2.空指针异常(NullPointerException)

 

数组名中的地址清空后,继续访问数组的某个元素

 

比如

//1.定义一个数组
int[] nums = {10,20,30,40};
//2.nums中保存的是首地址
System.out.println(nums);
//3.清空nums中地址
nums = null;
//4.那么nums中已经没有地址了
System.out.println(nums[0]);//此处出异常了,NullPointerException

 

  • 数组的常见算法

 

1.数组遍历【重点】******************

遍历: 取出数组中的每个元素

遍历的标准代码:

//1.定义一个数组
int[] nums = {10,20,30,40,50,60,70,80,90};
//2.3 使用循环 产生 0-(数组长度-1)
for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
}

倒序遍历

for (int i = nums.length-1;i >= 0;i--) {
    System.out.println(nums[i]);
}

2.数组获取最大值元素

求出数组中最大的那个元素

//1.数组
        int[] nums = {32,54,3,754,6,13,4,53,6,34,645,7,568};
        //2.求数组的最大值
        //定义一个擂主变量
        int max = nums[0];
        //依次取出每个元素(遍历),不要第一个
        for(int i = 1;i < nums.length;i++) {
            //选手元素 nums[i]
            if (max < nums[i]) {
                max = nums[i]; //选手 大于 擂主 那么选手要成为新的擂主
            }
        }
        //所有元素都比较完毕之后,max中保存的就是最大值
        //3.打印
        System.out.println("最大值是:"+max);

如果想求数组的最小值只要修改判断语句中"<"变为">"即可,建议把变量名max改为min

3.数组反转(不能定义别的数组)

源数组:  1 2 3 4 5

反  转:  5 4 3 2 1

//1.定义数组
int[] nums = {10,20,30,40,50,60,70,80};
//2.反转数组
//两个指针(索引)
int min = 0;
int max = nums.length - 1;
//循环
while (min < max) {
    //交换
    //nums[min] 和 nums[max]
    //中间变量
    int temp = nums[max];
    nums[max] = nums[min];
    nums[min] = temp;
    //自增和自减
    min++;
    max--;
}
//3.打印数组
for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值