首页 > 其他分享 >数组...

数组...

时间:2024-11-15 14:14:38浏览次数:3  
标签:返回 ... arr int 元素 数组 new

2.1.1什么是数组,为什么要使用数组?

java中存储数据的最小单元是变量,一个变量只能存储一个数据,如果需要存储大量的数据就需要使用大量的变量,因此需要一种新的数据类型能够存储大量数据的数据类型-数组

数组-用来存储大量相同数据的集合 。

2.1.2如何使用数组?

1)数组的初始化

数据类型[] 数组名 = {};

数据类型[] 数组名 = new 数据类型[]{数据};

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

数据类型 数组名[] = new 数据类型[数组长度];//不推荐使用,但是源代码中有这么定义的数组

img

2)数组中数据的存取

数组会对数组内的数据进行编号,也就是下标,下标从0开始,以数组的长度减一结束。

数组名[下标] = 数据;

eg:int a = arr[0]; //将arr[0]的值赋给a

2.1.3使用数组需要注意哪些问题》

1.数组只能存储相同类型的数据

2.使用new创建数组时,[]内的数应该是大于等于0的整数,为0时数组中什么都没有,数组长度若为负数,可以编译但运行时会报错

3.在取出数组中的数据时,是将和数据相同的值赋出去,而不是将自己给出去,也就是说

eg: arr[0] =10;

int a = arr[0];

结果:a =10

arr[0] =10

4.在遍历数组时要记住下标不能越界

  5.数组属于引用类型,数组型的数据本质是对象
​
  6.数组创建后,如果没有赋值,字符串数组的默认值为null,整数数组的默认值为0,小数数组的默认值为0.0,字符类型默认是nul,布尔类型默认是false。

2.1.4遍历数组有几种?

1)通过索引依次遍历

for(int i=0;i<arr.length;i++){
  int a = arr[i];
}
arr.fori

2)循环增强

for(int a : arr){
  System.out.print(a);
}

2.1.5数组有哪些方法?

  1. concat方法:用于合并两个或多个数组。此方法不会改变现有数组,而是返回一个新数组。

  2. every()方法:测试数组的所有元素是否都通过了指定函数的测试。如果所有元素都通过测试,则返回true;否则返回false。

  3. filter()方法:创建一个新数组,其包含通过所提供函数实现的测试的所有元素。

  4. fill()方法:用一个静态值填充一个数组从起始索引到终止索引内的所有元素。不包括终止索引。

  5. find()方法:返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。

  6. findIndex()方法:返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。

  7. forEach()方法:对数组的每个元素执行一次提供的函数。

  8. includes()方法:用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true,否则返回false。

  9. indexOf()方法:返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

  10. isArray()方法:用于判断一个对象是否为数组。如果是,则返回true;否则返回false。注意,这个方法实际上是Array.isArray(),而不是一个单独的数组方法。

  11. join()方法:将数组的所有元素连接成一个字符串。

  12. lastIndexOf()方法:返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回-1。注意这里的文本中“lastlndexOf”是一个拼写错误,正确应为“lastIndexOf”。

  13. map()方法:创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

  14. pop()方法:删除并返回数组的最后一个元素。

  15. push()方法:将一个或多个元素添加到数组的末尾,并返回新的长度。

  16. reverse()方法:反转数组的元素顺序。

  17. shift()方法:删除并返回数组的第一个元素。

  18. slice()方法:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝。原数组不会被修改。

  19. some()方法:测试数组中的某些元素是否通过了指定函数的测试。如果通过了测试,则返回true;否则返回false。

  20. sort()方法:对数组的元素进行排序。

  21. splice()方法:通过删除或替换现有元素或者添加新元素来修改数组,返回由被删除的元素组成的数组。

  22. unshift()方法:将一个或多个元素添加到数组的开头,并返回新的长度。

2.1.6数组和可变参数的区别

1,可变参数,可以是多个,或者没有。

2,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数;

3,如果一个方法有多个参数,可变参数应放到最后。

2.1.7数组的扩容和数组的缩小如何实现?

使用Arrays.copyOf()对数组进行扩充

格式:数据类型[] 新数组名 = Arrays.copyOf(原数组名,新数组长度)

int[] bbb = {1,2,3,4};
int[] ints = Arrays.copyOf(bbb, 8);

int[] bbb = {1,2,3,4};
int[] ints = new int[8];
for(int i=0;i<bbb.length;i++){
        ints[i] = bbb[i];
}
System.out.println(Arrays.toString(ints));

同样的,也可以使用Arrays.copyOf()对数组进行缩小

格式:数据类型[] 新数组名 = Arrays.copyOf(原数组名,新数组长度)

int[] bbb = {1,2,3,4};
int[] ints = Arrays.copyOf(bbb, 2);

int[] bbb = {1,2,3,4};
int[] ints = new int[2];
for(int i=0;i<ints.length;i++){
    ints[i] = bbb[i];
}
System.out.println(Arrays.toString(ints));

2.2

2.2.1什么是排序

排序是计算机科学中的一个基本概念,指的是将一组数据元素按照某种逻辑顺序重新排列的过程。这种逻辑顺序可以是从小到大的升序,也可以是从大到小的降序,或者是根据某种自定义的规则进行排序。

2.2.2冒泡排序的口诀

1数组排序指的是将数组中的元素按照一定的顺序(如升序或降序)重新排列的过程。

2两两比较,相邻交换,大数冒泡,沉到末端;

  1. 两两比较:在冒泡排序的过程中,会不断地对相邻的两个元素进行比较。

  2. 相邻交换:如果相邻的两个元素的顺序(大小关系)是错误的(即前一个元素大于后一个元素,对于升序排序来说),则将它们交换位置。

  3. 大数冒泡:在每一次遍历的过程中,较大的元素会像“冒泡”一样逐渐“浮”到数列的末端(对于升序排序来说)。

  4. 沉到末端:经过多次遍历和交换后,最大的元素最终会被移动到数列的最后一个位置,而较小的元素则会逐渐移动到数列的前面。

//冒泡排序
int[] arr = {1, 5, 3, 7, 9, 2};
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 temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
    System.out.println("第"+(i+1)+"轮"+ Arrays.toString(arr));
}
System.out.println(Arrays.toString(arr));

2.3对象数组

2.3.1什么是对象数组/

如果一个数组中的元素是对象类型,则称该数组为对象数组。

可以将对象数组的声明和创建用一条语句来完成。例如:定义一个学生类对象数组,可以用下面的语句

定义:Student stu[ ]=new Student[30];

2.3.2为什么使用对象数组?

当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。

2.3.3如何使用对象数组?

/ 静态初始化对象数组
Person[] people = {
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
 };
// 动态初始化对象数组并修改元素
Person[] morePeople = new Person[2];
morePeople[0] = new Person("David", 40);
morePeople[1] = new Person("Eva", 28);


// 修改数组元素
morePeople[1].age = 29;

标签:返回,...,arr,int,元素,数组,new
From: https://blog.csdn.net/weixin_62192155/article/details/143798418

相关文章

  • 16年后微软的“古董”复活!开发者用C#重构经典VB6 IDE,网友:遗留的“屎山”代码有救了...
    http://ide.vb6.pro/ 出品|CSDN(ID:CSDNnews)C#发展多年以来,很多程序员喜欢用它来编写各种工具类软件。近日,向来奉行「TalkisCheap,Showmethecode」的程序员又开始了新一轮的“整活”,其中一位名为BartoszKorczynski的软件工程师心血来潮地用C#重建了16年前被微软废......
  • JavaScript常用对象方法二:数组(array)
    1.concat()用于连接两个或多个数组。该方法不会改变现有的数组,而是返回一个新的数组。个人感觉es6出来的扩展运算符比这个方法要简洁一些扩展运算符的方法:constarr1=[1,2];constarr2=[3,4];constarr3=[...arr1,...arr2];console.log(arr3);//[1,2,......
  • 旋转数组的最小数字
    题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{2,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.解题思路看到“递增数组”和“查找最小值”,就要想到二分法。有两种切割方法,一......
  • leetcode 数组专题 06-扫描线算法(Sweep Line Algorithm)
    扫描线专题leetcode数组专题06-扫描线算法(SweepLineAlgorithm)leetcode数组专题06-leetcode.218the-skyline-problem力扣.218天际线问题leetcode数组专题06-leetcode.252meetingroom力扣.252会议室leetcode数组专题06-leetcode.253meetingroomii力扣.253......
  • C语言:数组(一维数组,二维数组,数组越界,数组作为函数参量,冒泡排序)
    1、一维数组的创建和初始化1.1、数组的创建数组是相同类型元素的集合•数组中可以存放1个或者多个数据•数组中存放的数据,类型是相同的数组的创建方式:元素类型自定义数组名(常量表达式)比如:intarr[10]doublearr[5]chararr[8+5]错误写法:intarr[n];......
  • 代码随想录:有序数组的平方
    代码随想录:有序数组的平方仍然是双指针,一开始也想到了双指针,不过很笨的创造了两个数组,一个负数的一个正数的,两个数组比大小后插入。但其实可以直接把原数组平方后,从左右两边插入。有两点值得注意:1.已知数组大小的情况下,可以直接倒着插入数组。2.创建vector时需要指定元素的个数......
  • 郝玩的数据结构2——树状数组(待upd)
    首先,拉张图树状数组,相对于线段树来说,空间复杂度更小,但是可以处理的信息具有局限性常用于处理区间(矩阵)查改(差分转化为单点查改),单点查改板子题1Accode:点击查看代码#include<bits/stdc++.h>#definelowbitx&-xusingnamespacestd;intn,m,s[500005];voidchange(intx......
  • Java 数组操作:反转、扩容与缩容
    在Java中,数组是一种固定长度的数据结构,一旦创建,其大小无法更改。然而,常常在实际编程中,我们需要对数组进行扩容、缩容或其他操作。本文将介绍如何通过Java实现数组反转、扩容和缩容的操作,并在代码中演示这些常见的数组操作。1.数组反转数组反转是一个常见的操作,通常用于......
  • 代码随想录算法训练营第一天| 704. 二分查找、35.搜索插入位置、27. 移除元素、977.有
    文档讲解:代码随想录视频讲解:代码随想录状态:完成4道题一、数组理论基础数组:连续内存空间,存储类型相同的元素集合,适合读不适合写注意:Python里可以存储不同类型的元素,但刷题时都是按照相同元素去做的相同元素占用存储的空间大小是一样的,下一个元素的位置就确定了数组时间......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59. 螺旋矩阵 II
    文档讲解:代码随想录视频讲解:代码随想录状态:完成2道题滑动窗口滑动窗口:两个指针一前一后组成滑动窗口,并计算滑动窗口中的元素的问题适用场景:字符串匹配问题、子数组问题、定长问题滑动窗口模板:如果一个字符进入窗口,应该增加windows计数器;如果一个字符将移除窗口的......