zoukankan      html  css  js  c++  java
  • 数组

    数组是指一组数据的集合,数组中的每个数据被称作元素。

    在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致

    1数组的定义和初始化

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

    (数据类型就是两种:基本数据类型和引用数据类型)

    int[] x = new int[100];

    这条语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0。

    数组长度用一个属性length表示:x.length。

    1.1 Java虚拟机运行时数据区包括五部分

    Java是在虚拟机上运行,而虚拟机是在内存运行,

    Jvm在内存上开辟一块空间,分五部分:(345重要)

    1)寄存器:处理cpu相关的

    2)本地方法栈:与操作系统有关的

    3)方法和数据共享区:class文件进入的地方

    4)栈:程序中所有方法进入的地方,变量也进栈,基本数据类型进栈

    5)堆:程序中所有容器和对象进入的地方,引用数据类型进堆

     

    class Demo04
    {
        public static void main(String[] args)
        {
            //定义数组1
            int[] arr=new int[3];
     
            //赋值
            arr[0]=2;
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
     
            System.out.println(arr);  //结果是一个地址
            System.out.println(arr.length);  //数组长度
        }
    }

    可以再定义一个数组等于这个数组,但是类型必须相同:

    Int[] arr1=arr;  //就是把地址赋值给新的数组变量

    变量引用数组的情况图示说明:

    步骤说明:

    1).class文件进入方法和数据共享区,找到main方法

    2)main方法进入栈,遇到new,就创建一个数组容器,进入堆

    3)数组长度是3,就在堆中开辟了三块空间,分别有一个“门牌号”,就是下标:0,1,2,并分别存入默认值0

    4)给数组分配一个地址

    5)把这个地址赋值给变量arr

    6)通过arr找到数组的地址,然后找到下标为0的元素,改变其值为2

    7)通过arr找到数组元素,并打印出里面的值:2,0,0

    在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式称作动态初始化

    在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:

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

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

    为了简便,建议采用第二种方式 

    class Demo04
    {
        public static void main(String[] args)
        {
    //定义数组2
            String[] arr2=new String[]{"中国","你好","DG","shit"};
            System.out.println(arr2[0]);
            System.out.println(arr2[1]);
            System.out.println(arr2[2]);
            System.out.println(arr2[3]);
        }
    }

    数组遍历

    在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。

    使用for循环来遍历数组:

    class Demo05
    {
        public static void main(String[] args)
        {
            //遍历数组
            int[] arr={1,2,3,4,5,6,7,8,9,10};
            for(int i=0;i<arr.length;i++){
                System.out.println(arr[i]);
            }
        }
    }

    数组最值

    例:获取数组中元素的最大值

    public class ArrayDemo{
        public static void main(String[] args){
            int[] arr = { 4, 1, 6, 3, 9, 8 };
            int max = arr[0];  //假设第一个元素为最大值
     
            //遍历数组
            for (int x = 1; x < arr.length; x++) {
                if (arr[x] > max) {  //比较 arr[x]的值是否大于max
                    max = arr[x];  //条件成立,将arr[x]的值赋给max
                }
            }
            System.out.println("max=" + max);
        }
    }

     

    数组越界异常

    每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错。

    class NullPoint
    {
        public static void main(String[] args)
        {
            int[] arr = new int[4];
            System.out.println(arr[4]);
        }
    }

    空指针异常

    在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常。

    class NullPoint
    {
        public static void main(String[] args)
        {
            String[] arr2={"aaa","bbb","ccc"};
            arr2=null;      //把地址置为空,就找不到数组了
            System.out.println(arr2[0]);  //这时再访问数组元素就是空指针异常
        }
    }

  • 相关阅读:
    cmake的安装
    安装cmake过程g++: 错误:unrecognized command line option ‘-std=gnu++14’
    进程空间分配
    git 基本操作
    nm命令
    container_of 宏
    cmake
    fiddler修改Requests之前的数据和response 之后的数据
    Fiddler抓包请求前设置断点
    jmeter连接mysql数据库
  • 原文地址:https://www.cnblogs.com/qq1312583369/p/10879071.html
Copyright © 2011-2022 走看看