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

Java中持有对象的方式,大概有三种:通过对象的Field去持有一个对象(通过组合的方式),通过数组,通过集合容器。这里先看一下通过数组与集合容器持有对象的不同,通过数组持有对象一般是明确我要持有对象的类型,也就是说数组用来持有同一种类型的对象,在jdk1.5之前,相对于集合容器来说,这是数组的一大优点,因为在没有引入泛型之前,可以把任意类型的对象都丢进集合容器中,当把一个对象丢进容器之后,这个对象的类型在运行时,就很难知道了,要想再次使用这个对象,就要进行不安全的向下转型(丢进集合中的对象被向上转型为Object),在jdk1.5引入泛型之后,集合容器也能只持有同一种类型的对象了,所以数组的这一个优势在jdk1.5之后丧失了。相对于集合容器,数组还有一大劣势,就是一个数组对象创建之后,这个数组的大小就固定了,在后续的对于这个数组的操作中,不能扩展这个数组的长度。对于集合容器,创建一个集合容器对象时,无需说明集合容器的大小,想放多少对象在集合中都行。至此,貌似一切都在暗示:集合比数组更方便,数组能做的集合照样可以完成。其实就是这样的,《Java编程思想》的作者也建议:能用集合就不用数组。但是数组作为一个轻量级的持有对象的数据类型,在代码中还是很常见。

其实要想彻底理解数组,只要理解数组作为一种数据类型,在内容中是如何存储的。这样无论是数组的创建,还是初始化,还是数组元素的赋值...都好理解。

(图一张)

1.数组对象的创建:

数组变量的申明有两种方式: int a[] 和 int[] a ,推荐使用后者,因为可以明确这就是一个装有int值的数组。

数组作为一种引用类型的数据类型,数组变量存放的数组对象在堆内存中的引用地址。

一维基本类型的数组:

关于java中的数组的更多相关文章

  1. 慕课网-安卓工程师初养成-6-3 如何使用 Java 中的数组

    来源:http://www.imooc.com/code/1525 Java 中操作数组只需要四个步骤: 1. 声明数组 语法:  或者  其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简 ...

  2. 如何使用 Java 中的数组

    Java 中操作数组只需要四个步骤: 1. 声明数组 语法:  数据类型[ ] 数组名: 或者   数据类型 数组名[ ]: 其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简单地说,就是指 ...

  3. 【转】java中byte数组与int类型的转换(两种方式)----不错

    原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...

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

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

  5. 第81节:Java中的数组

    第81节:Java中的数组 本节介绍数组的基本概念,数据就是一种数据结构,可以用来存储多个数据,每个数组中可以存放相同类型的数据.比如,在学校,我们是一个班,这里的班级中每个同学都是这个班级数组中的元 ...

  6. Java中对数组的操作

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对于数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素.如:声明一个数组变量,numbers[100]来 ...

  7. Java中的数组初探

    1.数组的类型? Java中的数组为引用类型. 2.数组的三种初始化方式 1. int[] arr1=new int[] {1,2,3,4,}; 2. int[] arr2= {1,2,3,4,}; ...

  8. Java中的数组与集合

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

  9. 【java】解析java中的数组

    目录结构: contents structure [+] 一维数组 1,什么是一维数组 2,声明一维数组的三种方式 二维数组 1,什么是二维数组 2,声明二维数组的3种方式 3,二维数组的遍历示例 数 ...

  10. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

随机推荐

  1. tp3.2 URL_MODEL为2 配置

    1. tp项目index.php同级目录  add . htaccess文件 ,rewirte重写 内容为: <IfModule mod_rewrite.c> Options +Follo ...

  2. 【BZOJ2946】公共串(后缀数组)

    [BZOJ2946]公共串(后缀数组) 题面 权限题... 只有CJOJ题面啦 Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: 读入单词,计算最长公共子串的 ...

  3. 【BZOJ3527】力(FFT)

    [BZOJ3527]力(FFT) 题面 Description 给出n个数qi,给出Fj的定义如下: \[Fj=\sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{ ...

  4. linux字符集介绍及解决中文乱码实战

    字符集对应配置文件:/etc/sysconfig/i18n 先备份再修改: 备份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20150521 ...

  5. nginx学习之rewrite

    rewrite 语法学习 什么是rewrite nginx的rewrite主要功是实现URL地址重写.nginx的rewrite规则需要PCRE的支持,既可以通过Perl兼容正则表达式进行规则匹配.n ...

  6. syskey——让你的电脑更加安全

    我之前介绍过一个绕过系统登录密码的工具kon-boot,今天介绍的就是可以防止这个工具的方法,也能让你的电脑更加的安全. 这个方法也是我在Youtube上看见的一个方法,还是不错. 方法: win+R ...

  7. Canvas 画布组件(官网翻译)

    Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...

  8. install-scp

    centos6 minilize system will not scp command install: yum -y install openssh-clients and another mac ...

  9. 【重要】ionic和Angular的安装步骤

    首先搭建好npm和node环境的最新版本安装:: 一:开始安装ionic: 1. npm install -g ionic(全局安装ionic) 2. ionic start 新建的项目名称 +模板样 ...

  10. Netty实现客户端和服务端通信简单例子

    Netty是建立在NIO基础之上,Netty在NIO之上又提供了更高层次的抽象. 在Netty里面,Accept连接可以使用单独的线程池去处理,读写操作又是另外的线程池来处理. Accept连接和读写 ...