引言

  学习了好久的java,每次要写数组的声明和初始化代码,总是理不清。最近又碰到了一次这种情况。这次拿出《Thinking In Java》好好总结一翻。

数组声明

  对于数组的声明其实都没多大问题,推荐的写法是使用 数据类型 + [] + 数组名称的方式,因为这种方式可以很清楚的表明这是某一种类型的数组。例如,声明一整数类型的数组。

 int[] a;

数组初始化

  其实出现问题最多的就是数组的初始化。数组的初始化分为三种方式,再遇到初始话的时候,总是会搞不清楚。根据我个人的理解,数组的初始化操作分为三种方式。

  第一种:特殊初始化,不用new关键字完成,在数组声明的同时完成初始化操作,也被称其为静态初始化。主要原因是因为采用这种初始化的方式,数组的存储空间的分配是由编译器完成的。

     下面以整数数组初始化为例,完成一个静态数组初始化:

  int[] a = {1,2,3};
Integer[] b = {
new Integer(1),
new Integer(2),
3 //Autoboxing
};

  第二种:先使用new关键字创建数组,然后再分别为数组中的元素赋值,完成初始化操作。(注:如果数组元素类型为基本数据类型,在完成new 操作之后,数组中的元素会自动初始化为空值,可以直接使用,但是数组元素为引用类型,在完成new操作之后,没有给引用类型赋值,就直接使用数组中的元素,会产生运行时异常。)

    下面还是以整数数组初始化为例2,完成数组初始化:

         int[] a = new int[2];   //需要指定数组的长度
a[0] = 1;
a[1] = 2;

  第三种:使用new关键字创建数组,同时为数组中的元素赋值,完成出事化操作。

         int[] a = new int[]{1,2,3}; //与第二种方法不同,这里new不需要指定数组的长度,数组长度由其后的初始化操作确定

         int[] b = new int[]{
new Integer(1),
new Integer(2),
3
};

后记

  第一篇学习笔记小随笔,语言还稍显青涩,之后继续努力。

      

      

Java 数组声明与初始化的更多相关文章

  1. Java数组声明、初始化

    维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 ...

  2. Java数组声明与拷贝的几种方式

    Java数组声明的三种方式 第一种(声明并初始化):          数据类型[] 数组名={值,值,...};          例:int[] a = {1,2,3,4,5,6,7,8};    ...

  3. Java数组一定要初始化才能使用吗?

    数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.Java语言的数组变量是引用类型的变量,因此具有Java独有的特性. 在正常的Java开发中,使用Ja ...

  4. Java类对象数组声明和初始化

    Java是纯面向对象语言.类是其重要构成单位. 然后,在实际编程中,我们会自己定义一些类,如Point <span style="font-size:14px;">pu ...

  5. 【java】学习路线3-二维数组声明与初始化、Arrays类

    import java.util.Arrays;public class Learn02{    public static void main(String[] args){        Syst ...

  6. C++和Java多维数组声明和初始化时的区别与常见问题

    //C++只有在用{}进行初始化的时候才可以仅仅指定列数而不指定行数,因为可以通过直接//初始化时的元素个数自动计算出行数.而仅声明/创建数组而不初始化时,Cpp要求必须写明//行数和列数才能够创建数 ...

  7. Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组

    目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...

  8. Java 数组声明的几种方式

    Java数组定义声明的几种方法: 1. 类型名称[] 变量名=new 类型名称[length]; 2.类型名称[] 变量名={?,?,?}; 3.类型名称[] 变量名=new 类型名称[]{?,?,? ...

  9. java数组声明和变式--record1

    ​ java声明数组方式: String[] namelist; int numlist[];//此声明为动态声明,不能指定长度,numlist[10] 静态声明的方式: int a[]={1,2,3 ...

随机推荐

  1. ASP.NET 控件前缀命名规范

    标准控件 1  btn Button 2  chk CheckBox 3  ckl CheckedListBox 4  cmb ComboBox 5  dtp DateTimePicker 6  lb ...

  2. eclipse不显示Android SDK Manager标签

    新版的eclipse配置好android开发环境后没有显示在window菜单里显示Android SDK Manager,也没有在工具栏里出现android的工具图标.但可以通过android sdk ...

  3. ant学习简单例子

    1.下载ant,http://ant.apache.org/ 这个网站下载,然后配置环境变量 打开dos界面,输入ant -version,如果提示命令不存在,进入到ant包装目录bin下载,再次运行 ...

  4. 我的mysql测试环境

    版本:5.7 安装方式:yum 修改密码:alter user user() identified by 'root'; 修改配置文件: vi /etc/my.cnf 在my.cnf中添加 skip- ...

  5. OpenBSD内核之引导PBR

    OpenBSD引导的第二部PBR,也是活动分区的一个扇区的代码,由第一步的MBR加载到0x7C00处,manpage里详细的讲解了过程和大致实现 biosboot(8) (http://man.ope ...

  6. 判断 iframe 是否加载完成的完美方法

    一般来说,我们判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似:var iframe = document.createElement(" ...

  7. 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

    上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...

  8. 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)>我们通过对mybatis源码的简单分析,可看出,在mybatis配置文件中,在configuration根 ...

  9. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  10. 爹地,我找到了!15个极好的Linux find命令示例

    爹地,我找到了!15个极好的Linux find命令示例 http://blog.jobbole.com/48931/ 妈咪,我找到了!15个实用的Linux find命令示例 http://blog ...