from : http://blog.csdn.net/jionjionyoushen/article/details/6223006

1.关于数组的特点

1)在Java中,无论使用数组或集合,都有边界检查。如果越界操作就会得到一个RuntimeException异常。

2)数组只能保存特定类型。数组可以保存原生数据类型,集合则不能。集合不以具体的类型来处理对象,它们将所有对象都按Object类型处理,集合中存放的是对象的引用而不是对象本身。

3)集合类只能保存对象的引用。而数组既可以创建为直接保存原生数据类型,也可以保存对象的引用。在集合中可以使用包装类(Wrapper Class),如Integer、Double等来实现保存原生数据类型值。

例码:int a = 10;

Integer integer = new Integer(a);

int b = integer.intValue();

System.out.println(a = b);

4)对象数组和原生数据类型数组在使用上几乎是相同的;唯一的区别是对象数组保存的是引用,原生数据类型数组保存原生数据类型的值。

2.关于数组定义

1)一维数组的声明方式:  type var[];      或type[] var;

声明数组时不能指定其长度(数组中元素的个数),

Java中使用关键字new创建数组对象,格式为:   数组名 = new 数组元素的类型 [数组元素的个数]

例码:int num[];

num=new int[3];

或  int num[]=new int[3];

2)可以这样定义二维数组。

例码:

int [][] num;

num=new int[3][];

num[0]=new int[5];

num[1]=new int[3];

num[2]=new int[2];

//定义了一个二维数组num,这个数组有三行,第一行5个元素,第二行3个元素,第三行2个元素。

3)关于数组初始化

*动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;

  1. public class TestD  {
  2. public static void main(String args[]) {
  3. int a[] ;
  4. a = new int[3] ;
  5. a[0] = 0 ;
  6. a[1] = 1 ;
  7. a[2] = 2 ;
  8. Date days[] ;
  9. days = new Date[3] ;
  10. days[0] = new Date(2008,4,5) ;
  11. days[1] = new Date(2008,2,31) ;
  12. days[2] = new Date(2008,4,4) ;
  13. }
  14. }
  15. class Date  {
  16. int year,month,day ;
  17. Date(int year ,int month ,int day) {
  18. this.year = year ;
  19. this.month = month ;
  20. this.day = day ;
  21. }
  22. }

*静态初始化:在定义数字的同时就为数组元素分配空间并赋值;

  1. public class TestS {
  2. public static void main(String args[]) {
  3. int a[] = {0,1,2} ;
  4. Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;
  5. }
  6. }
  7. class Time{
  8. int hour,min,sec ;
  9. Time(int hour ,int min ,int sec) {
  10. this.hour = hour ;
  11. this.min = min ;
  12. this.sec = sec ;
  13. }
  14. }

*默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。

  1. public class TestDefault {
  2. public static void main(String args[])
  3. {
  4. int a [] = new int [5];
  5. System.out.println("" + a[3]);
  6. }
  7. }

3.关于数组的相关操作

1)在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。

2)数组的复制:System.arraycopy()。

3)数组的排序:Arrays.sort()。

4)在已排序的数组中查找某个元素:Arrays.binarySearch()。

4.数组使用示例:

1) 循环初始化数组元素
             要求:初始化一个长度为100的int数组,数组中的元素依次为1-100。
             这是一个基本的使用,主要是熟悉数组的语法,在实际编写时,需要发现数组下标和数组元素值之间的规律即可。
             第一种思路:循环数组的下标0-99,则和下标对应的元素的值比数组下标多1。
             则实现代码如下:
                       int[] m = new int[100];
                       for(int i = 0;i < m.length;i++){
                                m[i] = i + 1;
                       }
             代码说明:声明并初始化一个长度是100的数组,使用循环循环数组的下标,下标的区间是[0,m.length-1],其中m.length表示数组的长度。在实际赋值时,把数组的下标做成变量,则当i的值为0时,则m[i]就是m[0],依次类推,按照题目的要求,则数值的规律是i+1,这样循环结束以后,数组m中的值就依次是1-100了。
             第二种思路:循环数组的值1-100,则下标比数组的值下1。
             则实现的代码如下:
                       int[] m = new int[100];
                       for(int i = 1;i <= 100;i++){
                                m[i – 1] = i;
                       }
             该代码中循环变量i的值从1循环到100,则数组的下标是i – 1,这样也可以实现题目要求的功能。
    2)输出数列
             要求:输出1 1 2 3 5 8 13……这样的数列,输出该数列的前20个数字。
             该题是一个基本的数字逻辑,在实际解决该问题时,首先要发现该数字的规律,然后按照该规律来设计数组即可。
             实现思路:数字的规律是除了数列里的前两个数字以外,其它的数字都满足该数字等于前两个数字的和,由于题目要求输出前20个数字,所以需要一个长度为20的数组,第一个和第二个数字直接赋值,后续的数字通过前两个数字元素得到。
             则实现的代码如下:
                       int[] num = new int[20];
                       num[0] = 1;
                       num[1] = 1;
                       //循环初始化
    for(int i = 2;i < num.length;i++){
                                num[i] = num[i – 1] + num[i – 2];
                       }
                       //循环输出
    for(int i = 0;i < num.length;i++){
                                System.out.print(num[i]);
                                System.out.print(‘ ‘);
                       }
                       System.out.println(); //换行

在该代码中,初始化一个长度为20的数组,首先将数组中的前两个元素赋值成1,然后循环对后续的元素的赋值,如果当前元素的下标是i,则它前一个元素的下标是i-1,再前面一个元素的下标是i-2,只需要将这2个元素的值相加,然后赋值给当前元素即可。后面使用一个循环,输出数组中所有的元素,元素和元素之间有一个间隔的空格,在输出所有的元素以后换行。

java 数组详解的更多相关文章

  1. 【Java学习笔记之五】java数组详解

    数组 概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ...

  2. Java - 数组详解(图解数组的基本操作)

    目录 什么是数组 数组的定义和内存分配 数组的赋值和访问 数组的注意事项 数组的内存图解 数组的插入 数组的删除 数组的扩容 数组的反转 首先 什么是数组 数组是一组地址连续.长度固定的具有相同类型的 ...

  3. JAVA数组详解

    package com.keke.demo; import java.text.ParseException;import java.text.SimpleDateFormat;import java ...

  4. Java 数组详解 - 用法、遍历、排序、实用API

    数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标. 组成数组的各个变量称为数组的分量,也称为 ...

  5. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  6. “全栈2019”Java第三十一章:二维数组和多维数组详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. “全栈2019”Java第三十章:数组详解(下篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. “全栈2019”Java第二十八章:数组详解(上篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. *HDU1969 二分

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  2. javascript 减少回流

    减少回流(REFLOWS) 当浏览器重新渲染文档中的元素时需要 重新计算它们的位置和几何形状,我们称之为回流.回流会阻塞用户在浏览器中的操作,因此理解提升回流时间是非常有帮助的. 回流时间图表 你应该 ...

  3. BSBuDeJie_01

    一. 基本配置 1 项目图标 将图片直接拖入Assets-AppIcon 2 启动图片     3 软件名称   4 删除Main.stroryboard   5 设置窗口的根控制器 - (BOOL) ...

  4. 第十周 psp

    团队项目PSP 一:表格     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 8:45 10:55 40 35 90 分析与 ...

  5. JS动态引入js,CSS——动态创建script/link/style标签

    一.动态创建link方式 我们可以使用link的方式.如下代码所示. 二.动态创建style方式 但是,这样的话,需要加载整个css文件,但是那样有可能浪费一个http请求并占用一个服务器请求数,并等 ...

  6. 在Windows 10下启用旧的照片查看器

    从Windows 10开始,默认只能通过“照片”来查看图片了,非常不方便!通过将下列文本保存在.reg文件后导入,即可找回Windows XP时代的“照片查看器”. Windows Registry ...

  7. socket - socketserver - start TCP server

    前面提到如何使用socket模块启动tcpserver: 创建socket:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 绑定ip: ...

  8. 转-HttpClient4.3 连接管理

    转 http://www.yeetrack.com/?p=782 2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间.Http连接需要的三次握手开销很大 ...

  9. PHP用星号隐藏部份用户名、身份证、IP、手机号等实例

    PHP用星号隐藏部份用户名.身份证.IP.手机号等实例 http://www.jb51.net/article/48800.htm 作者: 字体:[增加 减小] 类型:转载 时间:2014-04-08 ...

  10. Week 1:2015/4/27~2015/5/3

    Update everyday.(Last edit:4/30 01:00) Task 1:TPO X 2.5(finish 1,then finish 2 more) Task 2:TC Tarja ...