大数据基础之JAVA数组

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据基础之JAVA数组

1 数组简介
什么是数组

在java中储存多个相同类型数据的容器就是数组

数组的定义

public static void main(String[] args) {

    //动态初始化:
    //我们给出数组长度,系统初始化值
    //方法一:数组中存放数据的类型[] 数组名称 = new 数据类型[数组长度]; (推荐写法)
    int[] arr1 = new int[5]; // 推荐写法
    //方法二:数组中存放数据的类型 数组名称[] = new 数据类型[数据长度];
    int arr2[] = new int[5]; // 不推荐这样写,但是不错

    //静态初始化
    //我们给出值,系统判断长度
    //方法一:数组中存放数据的类型[] 数组名称 = new 数据类型[] {数据1, 数据2.....};
    int[] arr3 = new int[]{11, 22, 33, 44, 55};
    //方法二:数组中存放数据的类型[] 数组名称 = {数据1, 数据2 .....}; (推荐)
    int[] arr4 = {11, 22, 33, 44, 55};  //推荐写法

    // 基础数据类型,如果只定义不赋值,不能进行使用
    int a;
    // System.out.println(a);  // java: 可能尚未初始化变量a
    // 引用型数据,如果没有赋值,会自动赋一个默认值
    System.out.println(arr1); // [I@1b6d3586
    System.out.println(arr1[0]);  // 0

    //如果定义一个数组,是int类型, 动态初始化时,每一个元素都会附一个0;
    //如果定义一个数组,是double类型, 动态初始化时,每一个元素都会附一个0.0;
    double[] arrD = new double[5];
    System.out.println(arrD[0]);
    //如果定义一个数组,是boolean类型, 动态初始化时,每一个元素都会附一个false;
    boolean[] arrB = new boolean[5];
    System.out.println(arrB[0]);
    //如果定义一个数组,是String类型, 动态初始化时,每一个元素都会附一个null;
    String[] arrS = new String[5];
    System.out.println(arrS[0]);

}

数组的基本用法

package cn.itcast.demo07_array;
/*

数组中有索引,从左至右, 从0开始依次递增
arr : {11,22,33,44,55}
index: 0  1  2   3  4

使用数组中的元素  arr[index]
修改数组中的元素  arr[index] = value
获取数组中元素的个数, 或者说获取数组的长度:arr.length

*/
public class Demo02 {

public static void main(String[] args) {
    //1.定义一个长度为5的int类型的数组.
    int[] arr = new int[5];
    //2.打印数组中的第3个元素.
    System.out.println(arr[2]);
    //3.设置数组中的第一个元素值为11.
    arr[0] = 11;
    //4.获取数组中的第一个元素值, 并将其赋值给变量a, 然后打印.
    int a = arr[0];
    System.out.println(a);
    //5.打印数组的长度. 强调:length中没有括号,证明其实一个属性,不是方法
    System.out.println(arr.length);
}

}
数组的内存图解

创建出来的对象(new)都储存在堆区

方法和变量都储存在栈区

new时会先去堆区开辟空间再给默认值

数组在开辟空间时都会先给默认值,如果是静态初始化,会根据长度开辟空间赋默认值,然后再根据索引修改为我们自定义的值

数组的常见异常

数组中常出现的两个小问题:
数组越界ArrayIndexOutOfBoundsException:获取元素所使用的下标,在数组中不存在
空指针异常(不仅是数组,所有的引用类型都可能出现)NullPointerException: 因为应用类型的值为null 所以所在空间内的数据无法提取
数组的常见操作

public class Demo05 {

public static void main(String[] args) {
    int[] arr = {5, 15, 2000, 10000, 100, 4000};
    // 思路:
    // 1.创建一个变量储存颜值最大值
    int yanMax = arr[0];
    // 2.循环遍历arr 获取每一个元素 与最大值进行比较
    for (int i = 1; i < arr.length; i++) {
        // 3. 如果比最大值大就将其替换
        if (arr[i] > yanMax) {
            yanMax = arr[i];
        }
        // 4. 如果比最大值小,开启下一次循环
    }
    System.out.println("颜值最大值为:" + yanMax);
}

}

public static void main(String[] args) {

int[] arr = {11, 22, 33, 44, 55};
//1.新建一个与arr长度相同的空数组
int[] arrNew = new  int[arr.length];
//2. 遍历arr数组
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
    /*
    i = 0  要给 第 4个元素赋值
    i = 1 要给第3个元素赋值
    .....  此时被赋值的数组的下标为arr.length - i - 1
     */
    //3. 将每一个数组中的元素,按倒序赋值给新数组
    arrNew[arr.length - i - 1] = arr[i];
}
System.out.println(arrNew); // [I@1b6d3586
System.out.println(Arrays.toString(arrNew)); // [55, 44, 33, 22, 11]

}

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
16天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
24天前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
31 4
|
24天前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
22 2
|
1月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
1月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
22 3
|
1月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
23 1
|
1月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
28 1
|
1月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
35 0
|
1月前
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
32 0