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. Python标准异常topic

    Python标准异常topic AssertionError                            断言语句 (assert)                              ...

  2. 【转】安装第三方库出现 Python version 2.7 required, which was not found in the registry

    安装第三方库出现 Python version 2.7 required, which was not found in the registry 建立一个文件 register.py 内容如下. 然 ...

  3. hdu 5122

    只要一个数的后面有比它小的数,这个数就要移,于是从后往前一趟遍历,记录一下这些数的个数就可以了. #include"iostream" #include"stdio.h& ...

  4. HTML 5 视频(video)

    video 元素支持三种视频格式 IE Firefox Opera Chrome Safari 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件 No 3.5+ 10.5+ 5. ...

  5. ouath原理

    1.OAuth的简述 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是 ...

  6. PHP 天巡机票接口

    一个旅游网站项目,网站需要机票预订接入了天巡机票接口,获取机票信息,不搞不知道,一搞吓一跳比较麻烦. 搜索机票信息需要分2步,首先POST获得一个SESSION,2秒之后,根据这个SESSION,从一 ...

  7. 更换Mac记录

    1. 重装Mac (1)格式化硬盘 (2)重装系统 (3)修改各种配置:电脑名.键盘等 2. 安装必要软件 (1)QQ.微信.网易云音乐等 (2)火狐.谷歌.SourceTree等 (3)安装Git ...

  8. Redhat 一则关于路由及DNS配置的实例

    安装了Redhat 7.2, 配置路由, 但发现路由重启之后,不能生效. 配置路由: touch /etc/sysconfig/static-router, 然后编辑路由信息如下. any defau ...

  9. selenium python 安装

    环境为Win64位系统,默认已经安装python2.7到D:\Python27,此次使用的浏览器为chrome 下面是selenium的安装和chromedriver.exe的下载 1.安装selen ...

  10. IDEA +maven+ ContextLoaderListener not find

    tomcat 启动失败:SEVERE: Context [] startup failed due to previous errors 查看pox.xml 有spring-web依赖 查看tomca ...