首页 > 其他分享 >一维数组

一维数组

时间:2024-08-07 14:07:11浏览次数:6  
标签:4.1 一维 int 元素 static 数组 public

4.1 一维数组


目录

4.1.1 认识数组

数组的定义

文字定义:数组是一种数据结构,用于存储多个相同类型的数据。

Java中 "类型[ ]" 即数组,并且索引下标从0开始。

int [] array1;//整型数组
char [] array2;//字符数组
Sting [] array3;//字符串数组

4.1.2 数组的创建及初始化

一维数组语法:

数组元素的数据类型[] 数组名 = new 数组元素的数据类型[数组的容量/长度/元素个数];
数组元素的数据类型[] 数组名 = {元素值1,元素值2,...};
数组元素的数据类型[] 数组名 = new 数组元素的数据类型[]{元素值1,元素值2,...};
 
// 例如:存储5名同学的成绩
double[] scores = new double[5];
double[] scores = {90, 80, 70, 60, 50};
double[] scores = new double[]{90, 80, 70, 60, 50};
 
// 赋值语法
数组名[下标] = 元素值;
 
// 例如:存储第 1 名同学的成绩
scores[0] = 90;
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        /* 静态创建数组 */
        int[] arr = {1, 2, 3, 4, 5};
        
        /* 动态创建数组*/
        int[] arr2 = new int[5];//没有初始化默认为0
        System.out.println(Arrays.toString(arr2));

        for (int i = 0; i < 5; i++) {
            arr2[i] = i + 1;
        }
        System.out.println(Arrays.toString(arr2));
    }
}

输出结果为:

[0, 0, 0, 0, 0]
[1, 2, 3, 4, 5]

4.1.3 遍历数组

for循环遍历
/* 数组遍历(使用for循环) */
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]+" ");
}

输出结果:

1 2 3 4 5 
foreach遍历
/* 数组遍历(使用forEach) */
for (int num : arr) {
    System.out.print(num+" ");
}

输出结果:

1 2 3 4 5

4.1.4 数组作为传参,调用该方法时,是否改变原数组?

在Java中,当你将数组作为参数传递给方法时,传递的实际上是数组的引用的拷贝,而不是数组本身。这意味着方法接收到的是原始数组引用的一个副本,但这个副本指向同一个数组对象。因此,如果你在方法内部修改了数组的内容(比如改变数组元素的值),这种修改会影响到原始数组,因为原始数组和方法内的数组引用都指向堆内存中的同一个数组对象。

然而,如果你在方法内部对数组引用本身进行操作,比如尝试将方法内的数组引用指向一个新的数组对象,这种改变不会影响到原始数组,因为原始数组的引用并没有改变。

以下是一些示例来说明这一点:

示例1:修改数组元素

public class ArrayTest {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3};
        changeArray(originalArray);
        for (int value : originalArray) {
            System.out.println(value); // 输出修改后的数组元素
        }
    }

    public static void changeArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i] = array[i] * 2; // 修改数组元素的值
        }
    }
}

在这个示例中,changeArray 方法修改了数组的元素值,因此原始数组 originalArray 也会被改变。

示例2:尝试改变数组引用

public class ArrayTest {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3};
        changeArrayReference(originalArray);
        for (int value : originalArray) {
            System.out.println(value); // 输出原始数组元素
        }
    }

    public static void changeArrayReference(int[] array) {
        array = new int[]{4, 5, 6}; // 尝试改变数组引用
    }
}

在这个示例中,changeArrayReference 方法尝试改变传入的数组引用,使其指向一个新的数组对象。然而,这种改变只影响方法内的局部变量 array,原始数组 originalArray 并不会受到影响。

总结来说,当你将数组作为参数传递给方法时,你可以修改数组的内容,但无法改变原始数组引用本身。


4.1.5 Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号 方法和说明
1 public static int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2 public static boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3 public static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4 public static void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

标签:4.1,一维,int,元素,static,数组,public
From: https://www.cnblogs.com/hweiling/p/18344501

相关文章

  • JavaScript 数组方法
    JavaScript数组的力量隐藏在数组方法中。把数组转换为字符串JavaScript方法toString()把数组转换为数组值(逗号分隔)的字符串。join()方法也可将所有数组元素结合为一个字符串。它的行为类似toString(),但是您还可以规定分隔符<pid="demo"></p><script>varfruits......
  • 请遍历一个数组 , 输出数组的各个元素值。
    1publicclassshuzu21{2//编写一个main方法3publicstaticvoidmain(String[]args){45//编写一个数组,输出数组的各个元素值6int[][]map={{0,0,1},{1,1,1},{1,1,3}};7//使用方法完成输出,创建MyTools对象89......
  • Cython将Numpy数组转为自定义结构体
    技术背景前面我们写过几篇关于Cython的文章,例如Cython计算谐振势、Cython与C语言的结合、Cython调用CUDAKernel函数。Cython有着非常Pythonic的编程范式,又具备着接近于C语言的性能,因此在很多对于性能有要求的Python软件中都会使用到Cython的性能优化。Cython的基本工作流程是,先......
  • Java中对数组的学习
    数组的概念目录数组的概念声明数组变量创建数组处理数组数组作为函数的参数数组作为函数的返回值数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变......
  • C语言——一维二维数组详解
    文章目录数组数组的概念一维数组的创建和初始化数组创建数组的初始化数组的类型一维数组的使用数组下标数组元素的打印数组的输入sizeof计算数组元素个数一维数组在内存中的存储二维数组的创建二维数组的概念二维数组的创建二维数组的初始化不完全初始化完全初始化按......
  • 《LeetCode热题100》---<5.②普通数组篇五道>
    本篇博客讲解LeetCode热题100道普通数组篇中的五道题第三道:轮转数组(中等)第四道:除自身以外数组的乘积(中等)第三道:轮转数组(中等) 方法一:使用额外的数组classSolution{publicvoidrotate(int[]nums,intk){intlen=nums.length;int[]newAr......
  • 【practise】删除有序数组中的重复项
    关于博主:今天分享一道简单的关于“双指针”算法的题目。算是双指针中非常基础的题目,有兴趣可以借鉴一波~目录1.题目介绍2.题解思路:`双指针法`3.代码示例1.题目介绍题目链接:LINK本题要求是:对给定的有序数组nums删除重复元素,使得每种元素仅在该数组中出现一次,......
  • 利用指针来升序数组,(冒泡排序)
    我们写完数组后,通过写函数来是代码清晰明了,第一个升序函数,通过传入arr与len,再用冒泡排序的方法即可将数组升序,这里注意,传入arr,也就是数组的首地址,函数用Int*arr接受,这里传入首地址,也就是指针的方法,这个首地址(指针)允许函数内部通过数组索引的方法来访问数组中的其他元素,......
  • 栈、队列和数组有哪些主要区别
    1、数据存储和访问原则栈(Stack):存储原则:后进先出(LIFO,LastInFirstOut)。即最后加入的元素最先被移除。访问方式:只能访问栈顶元素。栈的插入(push)和删除(pop)操作都只能在栈顶进行。队列(Queue):存储原则:先进先出(FIFO,FirstInFirstOut)。即最早加入的元素最先被移除。访问方......
  • 栈、队列和数组的具体实例
    1、栈的具体实例1、自助餐厅的托盘:在自助餐厅中,托盘通常被堆叠在一起,顾客从顶部取出一个托盘,然后服务员会在底部补充一个新的托盘。这个过程体现了栈的后进先出(LIFO)特性。2、网页浏览器的历史记录:当你在网页浏览器中浏览网页时,浏览器会将你访问的网页地址保存在一个栈中......