IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数组基础操作上(1) -> 正文阅读

[数据结构与算法]数组基础操作上(1)

1.数组的概述
在执行程序的过程中,经常需要存储大量的数据。
Java和许多高级语言都提供了一种称作数组(array)的数据结构,可以用它来存储一个元素个数固定且元素类型下相同的有序集。数组主要解决多变量多数据的存储问题,方便程序后期统一维护操作数据。数组的本质是什么呢?数组就是一系列空间大小相等且地址连续的一片存储空间。为什么空间大小是相等的呢?就是为了方便统一维护我们的数据,必须得保证数据之间的类型是一样的。为什么变量空间的地址是连续的呢?地址连续切大小相等方便计算后续元素的具体物理内存地址。

数组就是一片地址连续且空间大小一致的存储空间,但是每个空间存的还是其他数据的地址。数组存在于堆内存中,但凡在堆中存储的数据都称之为对象。数组提供下标来访问数组当中的元素。数组变量存的就是数组在堆内存中首元素的地址。数组通过下标来访问元素的具体计算方式是:所要访问数据的地址=首元素地址+下标+数据类型大小。数组一旦定义下来,其长度不可改变;数组中有几个地址?就看数组有几个元素空间(数组的长度)。创建数组时必须明确规定大小或内容。
2.一维数组的使用
创建数组只指定长度但不指定内容

int []array=new int[4];

**创建数组指定内容(同时长度就确定了)

int []array=new int[]{12,313,23};
int[]array={12,313,23};

不同类型的数组的默认值不同
在这里插入图片描述
定义并用运算符new为之分配空间后,才可以引用数组中的每一个元素;
数组元素的引用方式;数组名[数组元素下标]
数组元素下标可以是整数常量或者整型表达式。如a[3],b[i],c[6*1];
数组元素下标从0开始;长度为n的数组合法下标取值范围:0—>n-1;如int a[]=new int[3];可引用的数组元素为a[0]、a[1]、a[2]
每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度(元素个数)
数组一旦初始化,其长度是不可变的
3.一维数组操作
(1)数组遍历
擂台法:

public class $Testllll {
    public static void main(String[] args) {
        int []array={12,31,23,25,64,13};
        int max=array[0],maxIndex=0;
        for(int i=1;i<array.length;i++){
            if(array[i]>max) {
                max = array[i];
                maxIndex=i;
            }
        }
        System.out.println(max+"\n"+maxIndex);
    }
}

查找元素在数组中是否存在:

import java.util.Scanner;
public class $Testllll {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int []array={12,31,32,52,45,31};
        System.out.println("请输入要查找的数");
        int num=scanner.nextInt();
        int numindex=0;
        for(int i=0;i<array.length;i++){
            if(num==array[i]){
                numindex=1;
                break;
            }
        }
        if(numindex==1) {
            System.out.println(numindex);
        }else
            System.out.println("不存在");
    }
}

数组添加元素

import java.util.Arrays;
import java.util.Scanner;
public class $Testllll {
    public static void main(String[] args) {
       String []array={"tony","mike","lily","jack","allen"};
       Scanner scanner=new Scanner(System.in);
       String str=scanner.nextLine();
       String[]newarray=new String[array.length+1];
       for(int i=0;i<newarray.length;i++) {
           if (i == newarray.length - 1) {
               newarray[newarray.length-1] = str;
           } else {
               newarray[i] = array[i];
           }
       }
       array=newarray;
       System.out.println(Arrays.toString(array));
    }
}

Java中的方法copyOf

String[] newarr= Arrays.copyOf(array, array.length+1);
newarr[newarr.length-1]=addname;

数组删除元素

import java.util.Arrays;
import java.util.Scanner;
public class $Testllll {
    public static void main(String[] args) {
       String []array={"tony","mike","lily","jack","allen"};
       Scanner scanner=new Scanner(System.in);
       String str=scanner.nextLine();
       String[]newarray=new String[array.length-1];
       for(int i=0;i<array.length;i++) {
           if (array[i].equals(str)) {
               for(int j=0;j<newarray.length;j++) {
                   if (j<i) {
                       newarray[j] = array[j];
                   } else {
                       newarray[j] = array[j + 1];
                   }
               }
               array=newarray;
               System.out.println(Arrays.toString(array));
           }
       }
       System.out.println("查无结果");
    }
}

arraycopy方法

String []array={"tony","mike","lily","jack","allen"};
       String[]newarray=new String[array.length-1];
       System.arraycopy(array,3,newarray,0,2);
       System.out.println(Arrays.toString(newarray));
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:17:09  更:2022-02-04 11:19:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:43:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码