首页 > 编程语言 >JAVA数组

JAVA数组

时间:2024-04-10 19:32:25浏览次数:32  
标签:arr JAVA int System 数组 println out

1.1 数组的概念

所谓数组(array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数组的长度(length)。

1.2 数组的分类

1、按照维度分:

一维数组: 存储一组数据

二维数组: 存储多组数据,(大肠包小肠).就是数组中的每个位置都放了一个一维的数组;

注意:无论数组的元素是基本数据类型还是引用数据类型,数组本身都是引用数据类型。

1.3 一维数组的声明和使用

        //推荐
//        元素的数据类型[] 数组名;例
        int[] arr1;

        //不推荐
//        元素的数据类型  数组名[];例
        int arr2[];

1.3.1 一维数组的静态初始化

初始化就是确认数组元素的总个数(即数组的长度)和元素的值.

静态初始化就是用静态数据(编译时已知,就是已确认的)为数组初始化.此时数组的长度有静态数据的个数决定.

        //声明 静态初始化
        //第一种
//        int[] ageArr = {1, 2, 3, 4, 5};//数组长度就为5
        //错误方式,不可以先声明再赋值
//        int[] ageArr1;
//        ageArr1 = {1,2,3,5};

//        //第二种 静态初始化
        引用数据类型
//        int[] ageArr=new int[]{1,2,3,5,5,6};//数组长度就为6
//        //可以先声明后赋值
//        int[] ageArr1;
//        ageArr1 = new int[]{1,2,3,4,5};//数组长度就为5

1.3.2 一维数组的使用

数组的长度属性:** 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为:`数组名.length` ,属性length的执行结果是数组的长度,int类型结果。

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index)或下标,可以通过数组的索引/下标访问到数组中的元素。

数组名[索引/下标]

1.3.3 一维数组的遍历

float[] score = {95f, 45, 96f, 87f};
//        0  ~ score.length-1
        for (int i = 0; i < score.length; i++) {
            System.out.println(score[i]);
        }

1.3.4 数组下标越界异常

当访问数组元素时,下标指定超出[0, 数组名.length-1]的范围时,就会报数组下标越界异常:ArrayIndexOutOfBoundsException。

1.3.5 一维数组的动态初始化

动态初始化就是先确定元素的个数(即数组的长度),而元素此时只是默认值,并不是真正的数据。元素真正的数据需要后续单独一个一个赋值。

//        动态初始化时,已经给了初始值
        int[] arr = new int[5];
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

输出结果:

数组元素类型元素
byte0
short0
int0
long0L
float0.0F
double0.0
char0或者为:'\u0000'(表现为空)
booleanfalse
引用类型null

1.4 一维数组的常见算法

1.4.1数组统计:求总和、均值、统计偶数个数等

        求和和平均值
        int str = arr[0];
        for (int i = 1;i < arr.length;i++){
                str+=arr[i];
                }
        System.out.println("总和为"+str);
        System.out.println("均值为"+str/(arr.length+1));
        求总乘积
        for (int i = 1;i < arr.length;i++){
            str*=arr[i];
        }
        System.out.println("乘积为"+str);
        奇数偶数个数
        int count1=0;//记录偶数个数
        int count2=0;//记录奇数个数
        for (int i = 0;i < arr.length;i++){
            if (arr[i]%2==0){
                System.out.println(arr[i]+"是偶数");
                count1++;
            }else {
                System.out.println(arr[i]+"是奇数");
                count2++;
            }
        }
        System.out.println("偶数有"+count1+"个");
        System.out.println("奇数有"+count2+"个");

1.4.2找最大值/最小值

public class Test11ArrayMax {
    public static void main(String[] args) {
        int[] arr = {4,5,6,1,9};
        //找最大值
        int max = arr[0];
        for(int i=1; i<arr.length; i++){//此处i从1开始,是max不需要与arr[0]再比较一次了
            if(arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println("max = " + max);
    }
}

1.4.3 数组的元素查找(重点)

1、顺序查找

顺序查找:挨个查看

要求:对数组元素的顺序没要求

        int[] arr = {5,8,6,2,3};
            //按照循环设定目标位置
        for (int i = 0;i<arr.length;i++){
            //目标后面的元素进行一一对比
            //记录对比的两个值中更小的那个一的索引
            int index = i;
            //记录对比的两个值中更小的那个一的数值
            int min =arr[i];
            //将数组中每轮对应的值与该值后的每一位进行对比,如果对比的值更小,就将更小的值赋给min,将更小值的索引记录在index
            for (int j = i+1;j<arr.length;j++){
                if (arr[j]<min){
                    min = arr[j];
                    index=j;
                }
            }
 //交换数值,如果初始开始与其他值对比的值也就是arr[i]不是最小值,那就把在循环中找到的最小值与其进行互相转换
            int temp;
            if (index != i){
                temp = arr[i];
                arr[i]=arr[index];
                arr[index] = temp;
            }
        }
        for (int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
2、二分查找

        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入查找的目标值");
        int target = scan.nextInt();
        //设置起始的下标位
        int left = 0;
        //设置结尾的下标位
        int right = arr.length-1;

        int index = -1;//记录目标的索引下标
        while (left<=right){
            //设置一个再数组中间位置的数字
            int mid = (left+right)/2;
//      也可以这么写      int mid = left+(right-left)/2;
            //判断比较
            if (arr[mid]==target){
                index=mid;
                break;
            }else if(target>arr[mid]){
                left=mid+1;
            }else {
                right=mid-1;
            }
        }
        //判断是否找到目标
        if (index !=-1){
            System.out.println("索引下标为"+index);
        }else {
            System.out.println("没有找到");
        }
3、冒泡排序
//        趟数
        int tang = 0;
//        每趟比较的次数
        int count = 0;
        int[] arr = {6, 3, 12, 4, 8};
//        趟数 每趟产生一个最值在最右端
        for (int i = 0; i < arr.length - 1; i++) {
//            假设数组已经是有序的
            boolean flag = true;
//            比较的次数  由于每次都减少一个比较熟所有减去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;
                    flag = false;
                }
                count++;
            }
//            如果flag为true,则代表排好顺序
            if(flag){
                break;
            }
            tang++;
        }
        System.out.println("次数"+count);
        System.out.println("趟数"+tang);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
1.4.4 排序算法排序

标签:arr,JAVA,int,System,数组,println,out
From: https://blog.csdn.net/Sapphire_Veg/article/details/137580576

相关文章

  • JAVA L2-041 插松枝
    【22年真题】这是一道并不完美的题解,还有很多纰漏但已经是我的极限了...记录一下importjava.io.StreamTokenizer;importjava.util.ArrayDeque;importjava.util.Deque;importjava.util.Iterator;importjava.io.InputStreamReader;importjava.io.BufferedReader;i......
  • Java8 Stream API全面解析——高效流式编程的秘诀
    文章目录什么是StreamApi?快速入门流的操作创建流中间操作filter过滤map数据转换flatMap合并流distinct去重sorted排序limit限流skip跳过peek操作终结操作forEach遍历forEachOrdered有序遍历count统计数量min最小值max最大值reduce聚合collect收集anyM......
  • 小美的数组构造(美团2024届秋招笔试第二场编程真题)
    题面核心思想dp[i][j]表示前i个数字和为j时的组合数那么第i个数的取法有1<=k<=j需要遍历第i个数取k前i-1个数取j-k时dp[i][j]=(dp[i][j]+dp[i-1][j-k])%MOD;注意是和为j第i个数取k所以是dp[i][j]。同时需要判断第i个数不能和a数组取相同的......
  • 数组1
    (一),一维数组(1)一维数组的创建和使用数组时一组相同元素的集合type_t   arr_name   [const_n];//type_t 是指数组的元素类型//const_n是一个常量表达式,用来指定数组的大小(2)一维数组的大小1,strlen和sizeof没有什么关联2,strlen是求字符串长度的-只能针对字符......
  • java基础语法(16)| 集合
    前言Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~1.集合概述什么是集合集合:集合是java中提供的一种容器,可以用来存储多个数据,并且可以存储任意类型......
  • Java基础语法(14)| Object类、String类
    1.Object类Object类概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。例如:publicclassMyClass{ }publicclas......
  • JavaScript 中的深度学习
    JS-PyTorch是一个JavaScript库,从头开始构建,以紧密跟随PyTorch的语法。它以一种文档完备、单元测试和可解释的方式实现,因此可以帮助其他JavaScript学习者进入机器学习!欢迎尝试Web演示!(本文视频讲解:java567.com)1.简介src/tensor.ts包含一个完全功能的张量(Tensor)对象,可以......
  • Java登陆第四十二天——Axios拦截器
    如果想在axios发送HTTP请求之前。或者是接收响应之前做一些额外的工作,可以通过拦截器完成。Axios拦截器分为请求拦截器,响应拦截器。分别在请求或响应时生效。一图了解Axios拦截器提供了两种文本函数:名字太长,直接看语法语法格式如下://请求拦截器,f1对应请求发送成功函数,f2......
  • 最大连续子数组和(最大子段和)
    include<stdio.h>//函数用于返回给定数组的最大子段和intmaxSubArraySum(inta[],intsize){intmax_so_far=a[0];//初始化最大子段和为数组的第一个元素intcurr_max=a[0];//初始化当前子段和为数组的第一个元素for(inti=1;i<size;i++){//......
  • java中实现Runnable接口
    在Java中,要实现Runnable接口,你需要创建一个类,并让这个类实现Runnable接口中的run方法。Runnable接口是一个只有一个抽象方法的函数式接口,该方法是run。以下是一个简单的例子,展示了如何实现Runnable接口:java//实现Runnable接口的类publicclassMyRunnableimplementsRunnabl......