大数据基础之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;
目录
相关文章
|
6天前
|
存储 前端开发 JavaScript
【前端学java】一篇文章带你精通java 中的数组(10)
【8月更文挑战第10天】一篇文章带你精通java 中的数组
9 3
【前端学java】一篇文章带你精通java 中的数组(10)
|
6天前
|
Java 索引
java中的栈(利用数组实现栈)
这篇文章通过Java代码示例介绍了如何使用数组实现栈操作,包括栈的初始化、入栈、出栈、判断栈满和空以及遍历栈的方法。
java中的栈(利用数组实现栈)
|
11天前
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
29 16
|
11天前
|
Java
Java数组几道练习题
Java数组几道练习题
27 11
|
11天前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
28 8
|
11天前
|
Java
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
36 4
|
11天前
|
存储 Java API
07 Java数组与数组操作(定义+遍历+排序+增删改查)(下)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
26 4
|
5天前
|
Java
Java中 字符串,字符串数组,整型数组初始化
Java中 字符串,字符串数组,整型数组初始化
6 0
|
11天前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
21 0
|
11天前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
10 0

热门文章

最新文章