卡码网Java基础课 | 6. 数组的倒序与隔位输出

卡码网Java基础课|6. 数组的倒序与隔位输出

数组

Java中的数组是一种用于存储相同数据类型的元素的数据结构。

  • 相同数据类型的元素指的是数组中的所有元素都必须是相同的数据类型;
  • 固定大小,连续存储,下标访问。

Java中声明数组的方式为dataType[] arrayName或者为dataType arrayName[]。

  • dataType表示数组元素的类型,比如int、double、char等;
  • arrayName是为数组指定的名称,类似于变量名称。
int[] nums; 
double scores[]; 

这里只是声明了一个数组,既没有为数组指定大小,也没有为数组填充数据,也就是说此时数组在计算机中并没有开辟内存空间,想要为数组分配存储空间,必须对其进行初始化。
Java中的数组可以使用不同的方式进行初始化,包括动态初始化和静态初始化。

  • 动态初始化:在声明数组后,使用 new 关键字来分配内存并初始化数组元素。
// 动态初始化一个包含3个整数的数组
int[] numbers = new int[3]; 
  • 静态初始化:在声明数组时,同时为数组分配内存并指定初始值。
int[] numbers = {1, 2, 3}; 
int value = numbers[2]; //答案是3
numbers[0] = 100; //修改元素
int length = numbers.length; //长度

操作

import java.util.Arrays;
Arrays.sort(list)//排序
Arrays.fill(int[] a, int fromidx, int toidx, int value);
type[] list1 = Arrays.copyOf(type[] list,int newlength) //newlength指定新长度,如果大于原来长度补0或者null
type[] list1 = Arrays.copyOfRange(type[] list, int fromidx, int toidx) 

二分查询

如果找不到的话,输出是-插入点

import java.util.Arrays;
Arrays.sort(a);
int idx = Arrays.binarySearch(type[] a, key)
int idx = Arrays.binarySearch(type[] a, int fromidx, int toidx, key)

ArrayList

数组的长度是固定的,但是我们往往并不知道一组数据的大小,这个时候直接使用数组并不太满足需求,可以考虑使用ArrayList
在Java中,ArrayList 是 java.util 包中的一个类,可以在运行时对其动态添加和删除元素以满足我们的操作需要。

import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<Integer>();
//添加元素
nums.add(10);
nums.add(100);
//获取第一个元素
int firstNumber = nums.get(0);
//删除第二个元素
nums.remove(1); 
//获取 ArrayList 的大小
int size = nums.size(); 

增强for循环

for (elementType element : collection) {
    // 在此处处理 element
}
  • elementType 是元素的数据类型
  • element 是在每次迭代中表示一个元素的变量
  • collection 是要迭代的数组或其他的对象(比如后面讲到的集合)
for (String name : names) {
    System.out.println(name);
}

6. 数组的倒序与隔位输出

这是不行的,因为System.out.println(nums);,直接输出一个数组是不可以的,会得到[I@677327b6

import java.util.Scanner;
import java.util.ArrayList;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n]; 
        int i = n;
        ArrayList<Integer> nums1 = new ArrayList<Integer>();
        while(i-->0){
            nums[i] = sc.nextInt();
            System.out.println(nums[i]);
            if(i%2==0){
                nums1.add(nums[i]);
            }
        }
        System.out.println(nums);
        System.out.println(nums1);
        sc.close();
        
    }
}
import java.util.Scanner;
import java.util.ArrayList;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<Integer> nums = new ArrayList<Integer>();
        while(sc.hasNextInt()){
            nums.add(sc.nextInt());
        }
        
        for(int i=n-1; i>=0; i--){
            System.out.print(nums.get(i));
            System.out.print(' ');
        }
        System.out.println();
        for(int i=0; i<n; i+=2){
            System.out.print(nums.get(i));
            System.out.print(' ');
        }
        sc.close();
    }
}
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值