zoukankan      html  css  js  c++  java
  • day05 【数组】

    day05 【数组】

    第一章 数组定义和访问

    1.1 容器概述

    案例分析

    现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有50名员工,用前面所学的知识,程序首先需要声明50个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦,而且错误率也会很高。因此我们可以使用容器进行操作。将所有的数据全部存储到一个容器中,统一操作。

    容器概念

    • 容器: 是将多个数据存储到一起,每个数据称为该容器的元素。

    • 生活中的容器: 水杯,衣柜,教室

    1.2 数组概念

    • 数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

    1.3 数组的定义

    方式一

    • 格式:
    数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
    
    • 举例:

    定义可以存储3个整数的数组容器,代码如下:

    int[] arr = new int[3];
    

    方式二

    • 格式:
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
    
    • 举例:

    定义存储1,2,3,4,5整数的数组容器。

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

    方式三

    • 格式:
    数据类型[] 数组名 = {元素1,元素2,元素3...};
    
    • 举例:

    定义存储1,2,3,4,5整数的数组容器

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

    1.4 数组的访问

    • 索引访问数组中的元素:
      • 数组名 [索引]=数值,为数组中的元素赋值
      • 变量 =数组名[索引],获取出数组中的元素
    public static void main(String[] args) {
        //定义存储int类型数组,赋值元素1,2,3,4,5
        int[] arr = {1,2,3,4,5};
        //为0索引元素赋值为6
        arr[0] = 6;
        //获取数组0索引上的元素
        int i = arr[0];
        System.out.println(i);
        //直接输出数组0索引元素
        System.out.println(arr[0]);
    }
    

    第二章 数组原理内存图

    2.1 内存概述

    内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程
    序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。
    Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

    2.2 Java 虚拟机的内存划分

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

    • JVM 的内存划分:
    区域名称 作用
    寄存器 给CPU使用,和我们开发无关。
    本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
    方法区 存储可以运行的class文件。
    堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
    方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

    第三章 数组的常见操作

    3.1 数组越界异常

    创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运
    行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

    3.2 数组空指针异常

    arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候
    会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修
    改我们编写的代码。

    3.3 数组反转

    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        /*
          循环中定义变量min=0最小索引
          max=arr.length‐1最大索引
          min++,max‐‐
          */
        for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {
          //利用第三方变量完成数组中的元素交换
          int temp = arr[min];
          arr[min] = arr[max];
          arr[max] = temp;
        }
        // 反转后,遍历数组
        for (int i = 0; i < arr.length; i++) {
          System.out.println(arr[i]);
        }
    }
    

    第四章 数组作为方法参数和返回值

    4.1 数组作为方法参数

    • 数组作为方法参数传递,传递的参数是数组内存的地址。

    4.2 数组作为方法返回值

    • 数组作为方法的返回值,返回的是数组的内存地址。

    4.3 方法的参数类型区别

    总结:
    **方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.**

  • 相关阅读:
    java中的subList
    值传递和引用传递
    java程序中有异常处理和没有异常处理的区别
    正则表达式
    poj 3187 三角数问题
    poj 2718 切数问题 穷竭搜索
    ACM 广度优化搜索算法总结
    poj 3669 火星撞地球问题 bfs算法
    poj 2251 三维地图最短路径问题 bfs算法
    ACM 深度优化搜索算法小总结
  • 原文地址:https://www.cnblogs.com/dutf/p/13764765.html
Copyright © 2011-2022 走看看