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. 最简单Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址

    条件 condition wan 和 wan6 是默认配置     Wan and wan6 are the default configurations 同时wan6可以获取到原生IPv6     ...

  2. 从k8s 的声明式API 到 GPT的 提示语

    命令式 命令式有时也称为指令式,命令式的场景下,计算机只会机械的完成指定的命令操作,执行的结果就取决于执行的命令是否正确.GPT 之前的人工智能就是这种典型的命令式,通过不断的炼丹,告诉计算机要怎么做 ...

  3. Java设计模式 —— 组合模式

    11 组合模式 11.1 组合模式概述 Composite Pattern: 组合多个对象形成树形结构以表示具有部分-整体关系的层次结构.组合模式使得客户端可以统一处理单个对象和组合对象. 组合模式关 ...

  4. vue表单绑定v-model

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CentOS 7 更改内网 IP

    打开网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-em2 修改配置文件如下 TYPE=Ethernet PROXY_METHOD=none BROWS ...

  6. CI框架内置分页代码

    Controller 控制器代码 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welc ...

  7. Cron表达式介绍与示例

      1. 概念介绍 Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X X X X X X X.其中X是一个域的占位符.最后一个代表年份的域非必须,可省略.单 ...

  8. Yolov8离谱报错

    YoloV8离谱报错 ​ 今天下午给一个研究生小姐姐跑数据集,用的是yolov8在恒源云上租的4070的GPU服务器,跑垃圾分类数据集(https://blog.csdn.net/m0_5488250 ...

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

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

  10. 最新版新款影视直播粉红色UI的CMS源码/带教程/支付已接

    demo软件园每日更新资源,请看到最后就能获取你想要的: 1.最新版新款影视直播粉红色UI的麻豆CMS源码/带教程/支付已接 基于苹果CMS v10影视系统框架开发的前端模板,带会员中心,可设置试看付 ...