Java零基础入门数组

作者:Tangable22 时间:2023-05-21 00:09:16 

认识数组

数组的定义

数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。

数组的四个基本特点

  • 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。

  • 其元素的类型必须是相同类型,不允许出现混合类型。

  • 数组类型可以是任何数据类型,包括基本类型和引用类型。

  • 数组有索引的:索引从0开始,到 数组.length-1结束

  • 数组变量属于引用类型,数组也是对象。

PS:数组变量属于引用类型,数组也是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。

Java零基础入门数组

数组下标从0开始

arr[0] == 12

arr[1] == 6

arr[2] == 27

…

arr[5] == 43

数组的初始化

数组的初始化方式总共有三种:默认初始化、静态初始化、动态初始化。

默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

int[] arr = new int[3];  //数组有默认的初始化值

基本数据类型数组的默认值:

byte[] : 0

short[] : 0

cahr[] : ‘\u0000’

int[] : 0

long[] : 0

float[] : 0.0

double[] : 0.0

boolean[] : false

引用数据类型数组的默认值:null

静态初始化

除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。

int[] arr = {12,23,45};
int[] arr = new int[]{12,23,45};

动态初始化

数组定义与为数组元素分配空间并赋值的操作分开进行。

int[] arr ;
arr = new int[3]
arr[0] = 12;
arr[1] = 23;
arr[2] = 45;

数组有关的问题

数组的遍历

两种方法

public class TestCode04 {
   public static void main(String[] args) {
       int[] arr1 = new int[]{1, 2, 3, 4, 5};
       int[] arr2 = {5, 4, 3, 2, 1};
       //方式1,使用普通for循环
       //arr1.length获取数组长度的方法
       for (int i = 0; i < arr1.length; i++) {
           System.out.print(arr1[i] + " ");
       }
       System.out.println();
       //方式2,使用增强for循环
       for (int a : arr2) {
           System.out.print(a + " ");
       }
   }
}

求最值问题

问题:给定一个数组int[] arr = {3,5,6,17,26,9,0,7}; ,求出数组中最大的数

public class TestCode05 {
   public static void main(String[] args) {
       int[] arr={3,5,6,17,26,9,0,7};
       int max=arr[0];//假设最大元素为数组arr[0]位置上的数
       //然后依次向后比较
       for(int i=1;i<arr.length;i++){
           //因为max=arr[0];可以从arr[1]位置开始比较
           if(arr[i]>max){
               max=arr[i];
           }
       }
       System.out.println(max);
   }
}

查询子元素

查询指定位置元素

给定一个数组,查询索引位置为2上的元素

public class TestCode06 {
   public static void main(String[] args) {
       int[] arr={3,5,6,17,26,9,0,7};
       //直接输出arr[2];
       System.out.println(arr[2]);
       //输出-->6
   }
}

上面代码体现了数组的一个优点:在按照位置查询的时候,直接一步到位,效率非常高

查询指定元素的位置&ndash;>找出元素对应的索引

public class TestCode07{
   public static void main(String[] args){
               //查询指定元素的位置-->找出元素对应的索引
               //给定一个数组:
               int[] arr = {12,34,56,7,3,56};
               //           0  1  2  3 4  5              
               //功能:查询元素12对应的索引:
               int index = -1; //这个初始值只要不是数组的索引即可
               for(int i=0;i<arr.length;i++){
                       if(arr[i]==12){
                               index = i;//只要找到了元素,那么index就变成为i
                               break;//只要找到这个元素,循环就停止
                       }
               }
               if(index!=-1){
                       System.out.println("元素对应的索引:"+index);
               }else{//index==-1
                       System.out.println("查无此数!");
               }
       }
}

Arrays工具类

为了方便我们对数组进行操作,系统提供一个类Arrays,我们将它当做工具类来使用。

下面通过代码演示Arrays类中常用的方法:

Arrays.toString(arr);//对数组进行遍历查看,返回的是一个字符串

Arrays.sort(arr);//对数组进行排序 -->升序

Arrays.copyOf(arr,index);//对数组的复制

Arrays.copyOfRange(arr,startindex,endindex);//区间复制

Arrays.equals(arr1,arr2);//比较两个数组的值是否一样

Arrays.fill(arr,1);//数组填充

import java.util.Arrays;
public class TestCode08{
       public static void main(String[] args){
               //给定一个数组:
               int[] arr = {1,3,7,2,4,8};
               //toString:对数组进行遍历查看的,返回的是一个字符串
               System.out.println(Arrays.toString(arr));

//binarySearch:二分法查找:找出指定数组中的指定元素对应的索引:
               //这个方法的使用前提:一定要查看的是一个有序的数组:
               //sort:排序 -->升序
               Arrays.sort(arr);
               System.out.println(Arrays.toString(arr));
               System.out.println(Arrays.binarySearch(arr,4));

int[] arr2 = {1,3,7,2,4,8};
               //copyOf:完成数组的复制:
               int[] newArr = Arrays.copyOf(arr2,4);
               System.out.println(Arrays.toString(newArr));

//copyOfRange:区间复制:
               int[] newArr2 = Arrays.copyOfRange(arr2,1,4);//[1,4)-->1,2,3位置
               System.out.println(Arrays.toString(newArr2));

//equals:比较两个数组的值是否一样:
               int[] arr3 = {1,3,7,2,4,8};
               int[] arr4 = {1,3,7,2,4,8};
               System.out.println(Arrays.equals(arr3,arr4));//true
               System.out.println(arr3==arr4);//false ==比较左右两侧的值是否相等,比较的是左右的地址值,返回结果一定是false                
               //fill:数组的填充:
               int[] arr5 = {1,3,7,2,4,8};
               Arrays.fill(arr5,10);
               System.out.println(Arrays.toString(arr5));
       }
}

二维数组

本质上全部都是一维数组

二维数组初始方式

  • 静态初始化

int[][] arr = {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
int[][] arr =new int[][] {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
  • 动态初始化

int[][] arr = new int[3][]; //本质上定义了一维数组长度为3,每个“格子”中放入的是一个数组
arr[0] = new int[]{1,2};
arr[1] = new int[]{3,4,5,6};
arr[2] = new int[]{34,45,56};
  • 默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

int[][] arr=new int[3][3];//定义一个3*3的二维数组,默认值为0

二维数组的遍历

两个for循环

for (int i = 0; i < arr.length; i++) {
           for (int j = 0; i < arr[i].length; j++) {
               System.out.print(arr[i][j] + " ");
           }
           System.out.println();//换行
       }
   }

来源:https://blog.csdn.net/weixin_47383392/article/details/124141586

标签:Java,数组,定义
0
投稿

猜你喜欢

  • Java实现简单猜数字小游戏

    2023-11-28 08:10:07
  • Java @RequestMapping注解功能使用详解

    2022-08-15 11:06:10
  • VS2010中lib与dll文件的生成与使用方法

    2023-01-23 11:32:50
  • java 创建线程的几种方式

    2023-10-29 19:40:16
  • Unity学习之FSM有限状态机

    2022-09-10 06:18:33
  • C#中的try catch finally用法分析

    2021-06-20 18:31:28
  • Java SpringBoot项目如何优雅的实现操作日志记录

    2022-01-28 11:37:41
  • C#实现3步手动建DataGridView的方法

    2021-10-13 22:35:56
  • 解答为什么 Java 线程没有Running状态

    2021-08-25 13:10:33
  • Android用动画显示或隐藏视图

    2023-08-05 20:07:25
  • 基于SpringMVC入门案例及讲解

    2023-04-06 17:34:43
  • Java中异常处理之try和catch代码块的使用

    2021-11-21 13:30:23
  • 自定义mybatis插件如何实现sql日志打印

    2023-11-29 11:22:37
  • 解决Android横竖屏切换数据丢失问题的方法

    2021-05-24 04:26:16
  • java简单实现数组中的逆序对

    2022-06-26 02:23:17
  • Java实现图片验证码具体代码

    2021-06-30 13:16:35
  • Kotlin中常见内联扩展函数的使用方法教程

    2023-07-04 13:46:12
  • Java Structs框架原理案例详解

    2023-12-11 16:46:22
  • java利用Socket实现聊天室功能实例

    2022-11-10 01:25:43
  • 轻松实现功能强大的Android刮奖效果控件(ScratchView)

    2022-07-07 20:22:25
  • asp之家 软件编程 m.aspxhome.com