一起学技术——java中的数组

本文详细介绍了Java中的数组,包括数组的概念、数据的创建与初始化(动态和静态)、遍历数组的方式、作为方法参数使用,以及一些基本的数组练习,如数组转换为字符串、冒泡排序、二分查找和奇数偶数排序。同时,还讨论了二维数组及其使用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、什么是数组

  • 数组本质上就是让我们能“批量”创建相同类型的变量(一次定义N个相同数据类型的变量)
  • 什么是数据结构(把一堆数字保存起来的结构),数据结构关心的是如何高效的读写数据

二、数据的创建和初始化

一旦创建了数组 , 就不能再改变它的大小 ( 尽管可以改变每一个数组元素)

1.数据的动态初始化

数据动态初始化:

  • 数据类型[] 数组名称 = new 数据类型[] {初始化数据}
  • 数据类型[] 数组名称 = new 数据类型[num]
  • 注:在创建数组时,若没有使用{}来初始化每个元素的值,每个元素都是该数据类型的默认值
  • 数据类型 数组名称[],也可以用来声明数组,只是大多数程序员喜欢第一种风格,因为它将类型与变量名分割开来。

定义代码如下(示例):

        int[] arr1 = new int[]{
   1,2,3,4};
        int[] arr2 = new int[4];

2.数组的静态初始化

数组的静态初始化:

  • 数据类型[] 数组名称 = {初始化数据}
  • 数组的静态初始化其实就是语法糖
  • 注:javac编译后,静态初始化就是动态初始化
  • 语法糖:只存在编译期之前的语法,编译器为了方便程序员简化写法
        int[] arr = {
   1,3,5,7,9}
  • 获取一个数组的长度,使用数组名.length
    在这里插入图片描述

如何访问数组元素

  • 使用数组名称[要访问的元素相对于第一个元素的偏移量]
  • 使用数组名称[元素的索引]
    索引其实就是“偏移量”,相较于数组的第一个元素的单位长度
  • 注:数组的元素下标是从0开始
  • 注:数组在内存中存储是,每个元素之间都是顺序存、储的

遍历数组

在这里插入图片描述

  • 两种不同的for循环遍历数组
  • 第一种for循环里的i表示数组中每个元素的下标,注意是从0开始
  • 第二种叫做for-each循环,是指从数组的第一个元素开始取值,把数组中的每一个元素拷贝一份,知道遍历结束
    注:第二种循环只能读取数组中每一个元素的值,无法修改数组中的元素,知识一种拷贝
    可以看出for-each循环并不能更改数组中的元素
    在这里插入图片描述

数组作为方法参数

之前说过,我们如果想交换两个数值型变量,是不能交换成功的,需要利用引用类型数组
在这里插入图片描述

这里是为什么呢,这就涉及到JVM内存中的栈区和堆区问题,首先JVM将内存分为6个区域,现在先涉及堆区和栈区。

  • 栈是一个先进先出的数据结构,方法的调用时在栈区进行的,每个方法的调用,都会伴随着入栈和出栈的过程
  • 方法的局部变量和形参都存储在栈区,并且随着方法的调用结束,临时变量被销毁
    +堆区是所有对象的存储区域,比如数组对象,类的实例化对象,接口对象等
  • int[] arr = new int[5];这是数组的一个引用,引用就是将这个对象起一个别名,保存的数值是这个对象的地址,对于数组来说,arr保存的就是这个长度为5的数组
  • new这个关键字,就是在堆中开辟一块新的内存空间

三、数组的一些基本练习

1. 数组转换为字符串

  • 实现一个方法 toString, 把一个整型数组转换成字符串. 例如数组 {1, 2, 3} , 返回的字符串为 “[1, 2, 3]”,注意 逗号 的位置和数量.

在这里插入图片描述

2.数组的排序之冒泡排序

在这里插入图片描述
算法思路:每次尝试找到当前待排序区间中最小(或最大)的元素,放到数组最前面(或最后面)

代码实现

 public static void main(String[] args) {
   
            int[] arr = new int[]{
   1,4,5,2,8,6};
            maopao(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值