1.java中的数组是一种引用数据类型。不属于基本数据类型。数组的父类是Object。
2.数组实际上是一个容器,可以同时容纳多个元素。(数组相当于是一个数据的集合。)
  数组的字面意思是"一组数据"
3.数组当中可以存储"基本数据类型"的数据,也可以存放"引用数据类型"的数据。
4.数组因为是引用类型,所以数组对象是在堆当中的。(数组是存储在堆当中)
5.数组当中如果存储的是"java对象"的话,实际上存储的是对象的引用,或者叫内存地址。
6.数组一旦创建,在java中规定,长度不可变。
7.数组的分类:一维数组,二维数组,三维数组...多维数组(一维数组用的比较多,二维数组偶尔使用)
8.所有的数组对象都有一个length属性(java自带的),用来获取数组的个数。
9.java中的数组要求数组中的元素的类型统一。
  比如int类型的数组那么只能存储int类型,Person类型的数组只能存储person类型
10.数组在内存方面存储的时候,数组中的元素地址(存储的每一个元素都是有规则的挨着排列的)是连续的。
  这是数组存储元素的特点。数组实际上是一个简单的数据结构。
11.所有的数组都是拿第一个小方块的内存地址作为整个数组对象的内存地址。(数组中首元素的内存地址作为整个数组对象的内存地址)。
12.数组中每一个元素都是有下标的,第一个元素是0,以1开始递增 。最后一个元素的下标是length -1
下标非常重要,因为我们对数组中的元素进行"存取"的时候,都需要通过下标来进行。
12.数组这种结构的优点是什么?缺点是什么?、
优点:
  查询/检索某个下标上的元素效率极高。可以说是查询效率最高的数据结构。
为什么检索效率高?
  1.每一个元素的内存地址在空间存储上是连续的。
  2.每一个元素的类型是相同的,所以占用的空间大小一样
  3.知道每一个元素的内存地址,知道每个元素占用空间的大小,又知道下标记,
  所以通过一个数学表达式就可以算出来某个下标上元素的内存地址。直接通过内存地址定位元素,所以检索效率最高。
 
数组中存储100个元素或者100万个元素,在元素检索/查找方面,效率是相同的。
因为数组的元素不会一个一个去找,是通过数学表达式计算出来的(算出一个内存地址,直接进行定位)。
 
缺点:
  1.由于为了保证数组中每一个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候 ,效率较低,因为随机增删元素会导致后面的元素统一向前或者向后位移的操作。
  2.数组不能存储大数据量,为什么?
  因为很难在内存空间上找到一块特别大的连续的内存空间。
 
13.注意:对于数组中最后一个元素增删,是没有效率影响的。
14.怎么声明一个一维数组呢?
下面的是语法格式:
  int[ ]array1;
  double[ ]array2;
  boolean[ ]array3;
  String[ ]array4;
  Object[ ]array5;
15.怎么初始化一个一维数组呢?
  包括2中方式:一种是静态初始化一维数组,动态初始化一维数组。
  语法格式是:
    静态初始化一维数组:
    int[ ] array = {100,200,300,55};
  动态初始化一维数组:
    int[ ] array = new int[5]; //这里的5表示数组的元素个数
    //舒适化一个5个长度的int类型数组,每个元素默认值0
    String[ ] array = new String[ 6];
    //初始化6个长度的String类型数组,每个元素默认值为null.

Java 数组及数组的优点与缺点的更多相关文章

  1. JAVA数据结构--Array数组实现

    所谓数组,是有序的元素序列. [1]  若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编 ...

  2. Java编程基础-数组

    一.数组的定义. 1.数组的含义:数组是一组具有相同数据类型的元素的有序集合.数组可以分为一维数组和多维数组.(数组是一个引用类型的容器,从0开始编号存储相同数据类型的数据.) 2.数组的定义语法格式 ...

  3. 黑马程序员——JAVA基础之数组

    ------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...

  4. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  5. 关于java中的数组

    前言:最近刚刚看完了<Java编程思想>中关于数组的一章,所有关于Java数组的知识,应该算是了解的差不多了.在此再梳理一遍,以便以后遇到模糊的知识,方便查阅. Java中持有对象的方式, ...

  6. Java中的数组与集合

    此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ...

  7. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...

  8. (转载)Java里新建数组及ArrayList java不允许泛型数组

    java中新建数组: String[] s;//定义的时候不需要设置大小 s = new String[5];//为数组分配空间时就要设置大小   对于ArrayList, ArrayList< ...

  9. Java反射遍历数组

    日志中有时候需要查看数组中的值,但是重载很多的打印函数,觉得很别扭.所以想通过反射,获取数组中的值,打印出来.Java提供了数组反射操作的类,之前没有关注过,提供的方法简单易用. public sta ...

  10. 《数据结构》 java的一维数组的内存结构与其特性

    1{数组的概念: 数组是相同类型变量的集合,可以使用共同的名字引用它.数组也可以被定义为任何类型,可以是一维或者二维的.数组的访问时通过其对应的下标来实现的.数组提供了一种将有联系的信息便利分组的方式 ...

随机推荐

  1. stm32的学习笔记1

    一 目录结构管理 Libraries是放官方固件库的 MDK-ARM是放产生的文件的,工程存放的目录 USERS是放自己写的代码的 然后是一个解释文件README 在MDK-ARM目录里还要创建两个文 ...

  2. 镜像搬运工 skopeo

    镜像搬运工 skopeo 介绍 skopeo 是一个命令行工具,可对容器镜像和容器存储进行操作. 在没有dockerd的环境下,使用 skopeo 操作镜像是非常方便的. 安装 # 安装 skopeo ...

  3. [MAUI 项目实战] 手势控制音乐播放器(三): 动画

    @ 目录 吸附动画 确定位置 平移动画 回弹动画 使用自定义缓动函数 多重动画 点击动画 项目地址 上一章节我们创建了手势容器控件PanContainer,它对拖拽物进行包装并响应了平移手势和点击手势 ...

  4. Spring入门系列:浅析知识点

    前言 讲解Spring之前,我们首先梳理下Spring有哪些知识点可以进行入手源码分析,比如: Spring IOC依赖注入 Spring AOP切面编程 Spring Bean的声明周期底层原理 S ...

  5. Nvidia GPU池化-远程GPU

    1 背景 Nvidia GPU得益于在深度学习领域强大的计算能力,使其在数据中心常年处于绝对的统治地位.尽管借助GPU虚拟化实现多任务混布,提高了GPU的利用率,缓解了长尾效应,但是GPU利用率的绝对 ...

  6. 最好用的.NET敏捷开发框架-RDIFramework.NET V3.6版全新发布 100%源码授权

    RDIFramework.NET,基于.NET的快速信息化系统敏捷开发框架.10年沉淀.历经上千项目检验,致力于企业智能化开发,帮助提升软件开发效率.最好用的.NET开发框架,100%源码授权. 1. ...

  7. LAL v0.35.4发布,OBS支持RTMP H265推流,我跟了

    Go语言流媒体开源项目 LAL 今天发布了v0.35.4版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. OBS支持RTM ...

  8. Runtime类继Robot类自动登录QQ后改进版2.0

    自动登录QQ2.0上线!!! 最近呢,有很多人问我自动登录QQ的小程序不够完善.看过我上一篇博客的人都知道,在登录QQ时运行Robot移动鼠标不够严谨,有时候会移动出错.很多小伙伴就会说了," ...

  9. SpringSecurity+Token实现权限校验

    1.Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配 ...

  10. 使用ServiceSelf解决.NET应用程序做服务的难题

    1 ServiceSelf 为.NET 泛型主机的应用程序提供自安装为服务进程的能力,支持windows和linux平台. 功能 自我服务安装 自我服务卸载 自我服务日志监听 2 自我服务安装 虽然. ...