zoukankan      html  css  js  c++  java
  • Day4:数组

    1、数组的定义:

    概念

    同一种类型数据的集合。其实数组就是一个容器。

    数组的好处

    可以自动给数组中的元素从0开始编号,方便操作这些元素。

    格式1:

    元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

    示例:int[] arr = new int[5];

    格式2:

    元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

    int[] arr = new int[]{3,5,1,7};

    int[] arr = {3,5,1,7};

    class ArrayDemo 
    {
        public static void main(String[] args) 
        {
            /*
            数组的定义方式:
            元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
            好处:数组可以存储多个数据,而且可以对数据进行编号,
            从0开始。操作元素完成可以通过编号(索引)完成。
            */
            int[] arr = new int[3];//通过new关键字创建了一个长度为3,元素类型是int的数组实体。
        
            System.out.println(arr[1]);
    
            /*
            Java对内存空间的划分:五部分:
            栈,堆,方法区,本地方法区,寄存器。
            
            栈内存:存储都是局部变量。只要是在方法中定义的变量都是具备变量。
                    一旦变量的生命周期结束该变量就被释放。
    
            堆内存:存储都是实体(对象)
                    每一个实体都有一个首地址值。
                    堆内存的变量都有默认初始化值。不同类型不一样。int-0  double-0.0  boolean-false char-'u0000'
                    当实体不在使用时,就会被垃圾回收机制处理。
            */
        }
    }

    2、数组内存结构

    Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

    栈内存

    l 用于存储局部变量,当数据使用完,所占空间会自动释放。

    堆内存

    l 数组和对象,通过new建立的实例都存放在堆内存中。
    l 每一个实体都有内存地址值
    l 实体中的变量都有默认初始化值
    l 实体不在被使用,会在不确定的时间内被垃圾回收器回收

    方法区,本地方法区,寄存器

    3、数组操作的常见错误

    数组脚标越界异常(ArrayIndexOutOfBoundsException)

    int[] arr = new int[2];

    System.out.println(arr[3]);

    访问到了数组中的不存在的脚标时发生。

    空指针异常(NullPointerException)

    int[] arr = null;

    System.out.println(arr[0]);

    arr引用没有指向实体,却在操作实体中的元素时。

    class ArrayDemo2 
    {
        public static void main(String[] args) 
        {
    
            int[] arr = new int[3];
    
    
            //System.out.println(arr[3]);//ArrayIndexOutOfBoundsException:访问到了数组不存在的索引时,会发生该异常。
    
            arr = null;
            System.out.println(arr[0]);//NullPointerException:当使用没有任何实体指向的引用变量操作实体时,运行会发生该异常。
        }
    }

    4、数组的遍历

    class ArrayDemo3 
    {
        public static void main(String[] args) 
        {
            //数组定义格式二:
            //int[] arr = new int[]{34,12,89};
    
            int[] arr = {34,12,89,50,11,78};
            //如何获取数组的长度呢?通过数组的属性 length
            System.out.println(arr.length);
            for(int x=0; x<arr.length; x++)
            {
                System.out.println("arr["+x+"]="+arr[x]);
            }
        }
    }

    5、数组的运算操作

    class ArrayTest 
    {
        public static void main(String[] args) 
        {
    
            int[] arr = {23,14,22,88,45,90,17};
            int[] arr2 = {3,1,45,7,9};
            int sum = add(arr2);
    
            System.out.println("Hello World!");
        }
        //获取多个数的和的功能。
        /*
        明确1:结果?和 int。
        明确2:参数?多个数,定义多个参数合适吗?既然是一组数,数组。
        */
        public static int add(int[] arr)
        {
            //1,定义变量记录和。
            int sum = 0;
            //2,通过循环对数组进行遍历。
            for(int x=0; x<arr.length; x++)
            {
                sum = sum + arr[x];
            }
    
            return sum;
        }
    
    
        //两个整数求和的功能。
        public static int add(int a,int b)
        {
            return a+b;
        }
        //三个整数求和。
        public static int add(int a,int b,int c)
        {
            return a+b+c;
        }
    }

    6、获取数组中的最大值

    class ArrayTest 
    {
        public static void main(String[] args) 
        {
            int[] arr = {23,14,22,88,45,90,17};
            int[] arr2 = {3,1,45,7,9};
            int sum = add(arr2);
    
            System.out.println("Hello World!");
        }
        //获取多个数的和的功能。
        /*
        明确1:结果?和 int。
        明确2:参数?多个数,定义多个参数合适吗?既然是一组数,数组。
        */
        public static int add(int[] arr)
        {
            //1,定义变量记录和。
            int sum = 0;
            //2,通过循环对数组进行遍历。
            for(int x=0; x<arr.length; x++)
            {
                sum = sum + arr[x];
            }
            return sum;
        }
    
        //两个整数求和的功能。
        public static int add(int a,int b)
        {
            return a+b;
        }
        //三个整数求和。
        public static int add(int a,int b,int c)
        {
            return a+b+c;
        }
    }

    7、数组内存图解

  • 相关阅读:
    Sybase:游标用法以及嵌套用法
    EasyUI:获取某个dategrid的所有行数据
    EasyUI:所有的图标
    Sybase:SAP IQ学习笔记
    Sybase:SybaseIQ的几个系统过程
    Sybase:解锁
    Python3:文件读写
    Android Studio 1.0.2 设置内存大小
    关于Android的margin(当前视图与周围视图的距离)和padding(当前视图与内部内容的距离)
    《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误
  • 原文地址:https://www.cnblogs.com/vijay/p/3502795.html
Copyright © 2011-2022 走看看