大数据基础之JAVA数组

简介: 大数据基础之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]

}

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
9天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
2月前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1天前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
10 0
|
1天前
|
Java 索引
JAVA刷题之数组的总结和思路分享
JAVA刷题之数组的总结和思路分享
|
12天前
|
Java
java 数组转字符串 和字符串转int
【4月更文挑战第11天】java 数组转字符串 和字符串转int
13 2
|
28天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
24 4
|
2月前
|
Java
java 8 数组转字符串并以逗号分隔
java 8 数组转字符串并以逗号分隔
12 0
|
2月前
|
Java
【Java】数组中的拷贝方法与初步理解深浅拷贝
【Java】数组中的拷贝方法与初步理解深浅拷贝
13 0
|
2月前
|
存储 Java C语言
【Java】以数组为例简单理解引用类型变量
【Java】以数组为例简单理解引用类型变量
15 1
|
2月前
|
存储 Java 索引
Java数组
Java数组
7 0