一.数组的基本概念

  • 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。
  • 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
  • 数组的元素可以是任何数据类型,包括基本类型和引用类型。
  • C和C++中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆上面的,因为JAVA中的数组是引用类型。

二.一维数组

一维数组的声明方式有2种:

  • 格式一:数组元素类型  数组名[ ];  即type var[ ];
  • 格式二:数组元素类型[ ] 数组名; 即type[ ] var;
  • 格式二声明数组的方法与C#上声明一维数组的方法一样。

例如:int a1[ ];   int[ ] a2;

double b[ ];

person[ ] p1;  String s1[ ];

注意:JAVA语言中声明数组时不能指定其长度(数组中的元素个数)

如:int a[5]; 这样声明一维数组是非法的。

三.数组的模型

  • 一维数组:一维数组就是一行,一行小格。
  • 二维数组:二维数组就是一行加一列组成的一个平面分成的小格,有行有列。
  • 三维数组:三维数组就是一个立方体。
  • 人类对最多认识到三维空间。

四.数组对象的创建

  JAVA中使用关键字new创建数组对象。

  格式为:数组名 = new 数组元素的类型[数组元素的个数]

例如:

五.元素为引用数据类型的数组

  注意:元素为引用数据类型的数组中的每一个元素都需要实例化。

例如:

class Date{

int year; int moth; int day;

Date(int y; int m, int d){

  year=y ;

    month=m ;

    day=d ;

  }

}

六.数组的初始化

  • 1.动态初始化

    数组定义与为数组元素分配空间和赋值的操作分开进行

例如:

 1 public class Test{
2 public static void main(String args[ ]){
3 int a[ ]; //定义数组,即声明一个int类型的数组a[ ]
4 a=new int[3]; //给数组元素分配内存空间。
5 a[0]=3; a[1]=9; a[2]=8; //给数组元素赋值。
6 Date days[ ];
7 days=new Date[3];
8 days[0]=new Date(1, 4, 2004);
9 days[1]=new Date(2, 4, 2004);
10 days[2]=new Date(3, 4, 2004);
11 }
12 }
13
14 class Date{
15 int year, month, day;
16 Date(int y, int m, int d){
17 year = y ;
18 month = m ;
19 day = d ;
20 }
21 }
22
  • 2.静态初始化

在定义数组的同时就为数组元素分配空间并赋值。

例如:

puclic class Test{
public static void main(String args[ ]){
int a[ ] = { 3, 9, 8}; //在定义数组的同时给数组分配空间并赋值。
Date days[ ] = {
new Date(1, 4, 2004),
new Date(2 ,4 ,2004),
new Date(3 ,4, 2004)
};
}
}
class Date{
int year, month, day;
Date(int y, int m, int d){
year = y ;
month = m ;
day = d ;
}
}

七.数组元素的默认初始化

  • 数组是引用类型,它的元素相当于类的成员变量,因此给数组分配内存空间后,每个元素也被按照成员变量的规则被隐式初始化。
 1 public class Test{
2 public static void main(String args[ ]){
3 int a[ ] = new int[5];
4 Date[ ] days=new Date[3];
5 System.out.println(a[3]);
6 System.out.println(days[2]);
7 }
8 }
9 class Date{
10 int year, month, day;
11 Date(int y, int m, int d){
12 year = y ;
13 month = m ;
14 day = d ;
15 }
16 }
  • 输出结果:

  System.out.println(a[3]);    打印出来的结果是:0。

  System.out.println(days[2]);  打印出来的结果是:null(空)

八.数组元素的引用

定义并用运算符new为之分配内存空间后,才可以引用数组中的每个元素,数组元素的引用方式为:arrayName[index], index为数组元素下标,可以是整型常量或整型表达式。如:a[3], b[i], c[6*i]。

  数组元素下标从0开始;长度为n的数组的合法下标取值范围为0 ~ n—1。

每个数组都有一个属性length指明它的长度,例如:a.length的值为数组a的长度(元素个数)。

九.二维数组

  

  

十、理解JAVA中的各个维度的数组模型

  

Java基础学习总结(21)——数组的更多相关文章

  1. java基础学习04(数组与方法)

    数组与方法 一.完成的目标 1. 掌握数组的定义.使用方法.引用传递 2. 掌握方法及其方法的重载 3. 使用方法接收和返回一个数组 4. java新特性对数组的操作支持 二.数组的定义和使用 数组是 ...

  2. 【java基础学习二】 数组相互转换,转成用逗号隔开的字符串等

    /** * int[],Integer[],List,List<Integer>,HashSet<Integer>相互转换,转成用逗号隔开的字符串 */ public stat ...

  3. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  4. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  5. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  6. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  7. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  8. Java基础学习(3)

    Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...

  9. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  10. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

随机推荐

  1. (转载)Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  2. 【原创】关于class.forname

    连接数据库前都要调用一下class.forname("driverName");然后使用DriverMnager获取连接,这是为什么呢? 首先jdbc标准要求,每个驱动必须向Dri ...

  3. ZBrush软件特性之3D图层

    用过Photoshop的小伙伴都知道图层的概念,在Photoshop中可以创建许许多多的图层,在每一图层中又可以分别编辑图像信息.ZBrush®中的3D图层,也可以简单理解成Photoshop中的图层 ...

  4. AJAX和JSON笔记

    ### 1. 响应正文  传统的处理请求时,响应的方式有转发或重定向,无论是哪种,最终都会直接呈现某个页面给客户端,这样做的缺点在于:  1. 用户体验可能不好,例如:用户注册时,提交的用户名被占用, ...

  5. 洛谷P2045 方格取数加强版 最小费用流

    Code: #include<cstdio> #include<cstring> #include<algorithm> #include<queue> ...

  6. [细节版]Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程

    参考网址:https://lnmp.org/faq/letsencrypt-wildcard-ssl.html 使用的dns服务商:阿里云 , 更多服务商地址可见参考网址. 遇见的问题一. [Sat ...

  7. CSS核心原理

    1.优先原则: 后解析的内容,会覆盖掉之前解析的内容: 同一个选择器:文件执行从上往下,后面的样式会覆盖前面的: 如下例中color最终为粉色: div { color:red; color:pink ...

  8. fdisk 添加逻辑分区

    [root@riyimei ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommend ...

  9. Building a Space Station POJ 2031 【最小生成树 prim】

    http://poj.org/problem?id=2031 Description You are a member of the space station engineering team, a ...

  10. V$ASM_OPERATION