大数据学习的第四天——一维和二维数组的学习以及做题遇到的一些细节

大数据学习的第四天——一维和二维数组的学习以及做题遇到的一些细节,第1张

大数据学习的第四天——一维和二维数组的学习以及做题遇到的一些细节

大数据学习的第四天——数组的学习以及一些细节

next()与nextLine()的区别:
1、单独使用的时候效果一样
2、nextLine()可以接收一些特殊字符 如空格 tab等,而next()直接忽略接收

一维数组:
需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。
假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行 *** 作,
这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。
那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话:
1、数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
2、数组既可以存储基本数据类型,也可以存储引用数据类型。

    语句定义格式:
        格式1:数据类型[] 数组名;
            举例:int[] arr;  推荐第一种方式。
        格式2:数据类型 数组名[];
            举例:int arr[]  定义一个存放int类型数据的数组。
            为什么不推荐使用第二种方式。
                从辨识度来看,第一种一眼就能识别是一个数组。
                从使用长久来看,今后使用的趋势是第一种,第二种渐渐会被淘汰。

   数组不初始化不能被使用,初始化?
        初始化就是给这个变量开辟一个内存空间,为将来的值提供存放的空间

   那么数组如何初始化呢?
        两种:
            1、动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
                动态初始化的语句格式:
                    存放元素的数据类型[] 数组名 = new 存放元素的数据类型[数组的长度];
                    举例:定义一个可以存放3个int类型数据的数组。
                        int[] bigdata15 = new int[3];
            2、静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

一维数组的静态初始化:初始化时指定每个数组元素的初始值,由JVM决定数组长度。(JVM根据我们给的元素个数自动推断长度)
静态初始化的语句格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4…};
举例:int[] arr = new int[]{11,22,33,44,55};
表示的是定义一个存放5个int类型元素的数组,元素分别是11,22,33,44,55
简化写法:
数据类型[] 数组名 = {元素1,元素2,元素3,元素4…};
举例:int[] arr = {100,200,300,400};
表示的是定义一个存放4个int类型元素的数组,元素分别是100,200,300,400

常见的错误:数组中常见的错误:
1、ArrayIndexOutOfBoundsException: 5 数组索引越界异常
访问了不该访问的索引。
2、NullPointerException 空指针异常

int[] arr = new int[3]{11,22,33}

由于上面的数组我们一眼就可以数清有多少个元素,所以在循环的时候,可以确定一个范围
//但是呢,真正的开发中,数组中的元素远远不止这么点,可能会有很多
//这时候我们再去数的话,不仅会数错,而且消耗大量时间
//那怎么办?我想要用for循环,就必须得确定一个范围
//如果有一个办法可以获取数组的长度就好了
//java中数组提供了一个属性供我们使用,可以获取数组的长度
//这个属性叫做:length
//使用格式:数组名.length
//当长度可以确定后,for循环的索引范围就能确定了:length-1

public class ArrayDemo9 {
public static void main(String[] args) {
int[] arr = {43,31,123,1,21};//{43,31,123,1,21} ==> {21,1,123,32,43}
System.out.print(“数组逆序之前:”);
printArray(arr);

    //将0索引位置的元素与length-1位置上的元素进行交换
    //将1索引位置的元素与length-1-1位置上的元素进行交换
    //直到length/2
    int temp = arr[0];
    arr[0] = arr[arr.length-1];
    arr[arr.length-1] = temp;

    int temp2 = arr[1];
    arr[1] = arr[arr.length-1-1];
    arr[arr.length-1-1] = temp2;

    //调用方法遍历数组
    System.out.print("rn数组逆序之后:");
    printArray(arr);

    System.out.println("rn==================用for循环改进实现数组逆序1:==================");
    int[] niXuArray1 = niXu(arr);
    printArray(niXuArray1);

// System.out.println("rn用for循环改进实现数组逆序2(创建新的数组):");
// int[] niXuArray2 = niXu2(arr);
// printArray(niXuArray2);

    System.out.println("rn==================用for循环改进实现数组逆序3(定义指针):==================");
    int[] niXuArray3 = niXu3(arr);
    printArray(niXuArray3);


}


public static int[] niXu3(int[] array){
    for(int start=0,end=array.length-1;start<=end;start++,end--){
        int temp = array[start];
        array[start] = array[end];
        array[end] = temp;
    }
    return array;
}


public static int[] niXu2(int[] array){
    int[] arr2 = new int[array.length];
    for(int i=array.length-1;i>=0;i--){
        arr2[arr2.length-1-i] = array[i];
    }
    return arr2;
}


public static int[] niXu(int[] array){
    for(int index=0;index

}

二维数组
二维数组概述
我们数加科技的大数据班每个班有很多个学生,所以,可以用数组来存储,而我们又同时有很多个大数据班。
这个也应该用一个数组来存储。如何来表示这样的数据呢?Java就提供了二维数组供我们使用。
由此可见:其实二维数组其实就是一个元素为一维数组的数组。

   二维数组的语句定义格式:
        数据类型[][] 变量名 = new 数据类型[m][n];  (推荐这种写法)
            m表示这个二维数组有多少个一维数组
            n表示每一个一维数组的元素个数
        举例:
            int[][] arr = new int[3][2];
            定义了一个二维数组arr
            这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
            每个一维数组有2个元素,可以通过arr[m][n]来获取
            表示获取第m+1个一维数组的第n+1个元素

   还有可能看到以下几个写法,它们也是正确的:
        1、int[] arr[] = new int[3][2];
        2、int arr[][] = new int[3][2];

二维数组第二种定义格式:
数据类型[][] 变量名 = new 数据类型[m][];
举例:int[][] arr = new int[3][];
二维数组中第三种格式:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
举例:int[][] arr = new int[][]{{1,2},{3,4,5},{1,2,34,5}};
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:int[][] arr = {{1,2},{3,4,5},{1,2,34,5}};
表示的是:二维数组arr中有三个一维数组,分别是{1,2},{3,4,5},{1,2,34,5}

第四天学习总结:
1、数组:存放同一种数据类型元素的集合,也可以看作是一个容器。
特点:
1、元素的数据类型一致,可以存放基本数据类型,也可以存放引用数据类型。
2、数组的长度是固定的。

数组的定义格式:
    1、数据类型[] 数组名; (推荐使用第一种)
    2、数据类型 数组名[];

数组的初始化方式:
    1、动态初始化:在定义时候只给定数组的长度,值是由系统默认给出的。
        语句定义格式:数据类型[] 数组名 = new 数据类型[元素的个数];
        举例:int[] arr = new int[3];
            表示的是定义一个长度为3并且元素是int类型的一维数组。
            
    2、静态初始化:在定义的时候,就手动给出元素值。
        语句定义格式:数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2...};
        简化格式:数据类型[] 数组名 = {元素值1,元素值2...};

JVM将内存划分成的5个部分,
栈:局部变量和方法的调用
堆:new出来的东西都在堆里面
方法区(面向对象的时候讲解)
本地方法区
寄存器

数组遍历:
    获取的长度的属性:length
    使用格式:数组名.length

2、二维数组:元素是由一维数组组成的数组
定义格式一:
数据类型[][] 数组名 = new 数据类型[m][n];
m:表示的是有多少个一维数组
n:表示的一维数组的元素个数
举例:int[][] arr = new int[3][2];
表示的是定义一个有3个长度为2的一维数组组成的二维数组。

定义格式二:
    数据类型[][] 数组名 = new 数据类型[m][];
    m:表示的是有多少个一维数组
    举例:int[][] arr = new int[4][];

定义格式三:
    数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2,元素3...},...};
    简化格式:数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2,元素3...},...};

注意:
    1、以下几种写法也是二维数组
        数据类型[] 数组名[];
        数据类型 数组名[][];
    2、格式3不能与格式1、格式2混合使用。
        错误格式:int[][] arr = new int[2][]{{1,2},{3,1,2}};

需要掌握二维数组的遍历方式,结合着一维数组遍历方式去看

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5700244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存