zoukankan      html  css  js  c++  java
  • Java数组的一些使用方法及堆栈存储

     

    数组

    用于存储一组同一数据类型数据的容器

    数组会对放入其中的数据自动编号,编号是从0开始的---下标

    定义格式

    数据类型[] 数组名 = new 数据类型[数组的大小];---可以先声明再初始化

    int[] arr = new int[5];---定义了一个最多能存储5的整数的数组

    arr[3] = 4;

    arr[3]---通过数组名[下标]的形式来获取数组元素或者给对应的位置赋值

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

    int[] arr = new int[]{2,5,1,6,8};---在定义好数组中的初始元素的同时定义好了数组的大小,不能在改变大小

    数据类型[] 数组名 = {元素1,元素2……};---不可以先声明再初始化

    int[] arr = {2,5,3,6,1,8,9};

    内存

    栈内存、堆内存、方法区、本地方法栈(和其他语言交互)、寄存器(汇编)

    栈内存

    可以用于存储变量,栈内存对存入其中的变量不会自动赋值,变量在使用完成之后会立即移出栈内存释放空间

    堆内存

    用于存储对象的,堆内存对于存入其中的元素会自动的赋予初始值---byte/short/int-0,long-0L;float-0.0f,double-0.0,char- ‘u0000’,boolean-false,引用数据类型的默认值都是null,对象使用完成之后不会立即移出堆内存,而是在不定的某个时刻被回收

     

     

    数组的应用

    1. 获取数组元素---数组名[下标]

    2. 获取数组的长度---数组名.length

    3. 遍历数组---通过获取对应下标来获取对应位置上的元素----O(n)

    for(int i : arr){----增强for循环。把数组中的每个元素作为单独的变量来使用

    System.out.println(i);  

    }

    4. 数组元素排序

     

    Arrays.sort(arr);---会自动对数组排序,默认是升序排列

    5. 获取数组元素的最值---遍历

    6. 获取元素的位置---遍历

    如果元素有序,可以使用折半查找---O(log2n)

    7. 数组的反转

    8. 数组的扩容--数组的复制

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

    int[] arr2 = new int[8];

    System.arraycopy(源数组,源数组中的起始下标,目标数组,存放的起始下标,复制的元素的个数);

    源数组 = Arrays.copyOf(源数组,扩容之后的长度);

    arr = Arrays.copyOf(arr,2);

    int[] arr2 = new int[2];

    if(扩容之后的长度 < arr.length){

    System.arraycopy(arr,0,arr2,0,扩容之后的长度)

    } else {

    System.arraycopy(arr,0,arr2,0,arr.length)

    }

    arr = arr2;

    注意:

    如果下标超过范围,编译无错,运行时会出现ArrayIndexOutOfBoundsException---下标越界异常

  • 相关阅读:
    Lambda表达式效率问题
    设计模式之代理模式
    spring学习之AOP
    jq 中input为radio设置选中状态,attr问题
    css 清除float浮动方法整理
    jquery.ready可以在文档加载后尽快执行对文档的操作
    前端学习网址整理
    图片缓存未触发onload
    spring mvc 下,ajax调用后台controller方法时报415 (Unsupported Media Type)错误
    nodejs向前台send数据时Date类型数据格式问题
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/7201747.html
Copyright © 2011-2022 走看看