引言

  学习了好久的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. error CS0117: `UnityEditor.EditorUtility' does not contain a definition for `GetAssetPreview'

    have to replace: EditorUtility by AssetPreview

  2. 利用Babel来转化你的ES2015脚本初步

    我们在前面已经安装和学习过babel 安装babel-cli 这是babel解释器的客户端主程序 npm install -g babel-cli 安装”编译”插件(babel的JSX语法转换器) n ...

  3. (48) odoo的button用法

    button 应用的比较多,这里来汇总一下 按钮<button>,支持的属性     icon  可用的icon在 addons/web/static/src/img/icons     ...

  4. PL/SQL导出到execl中,数据前面的0发生丢失的解决办法

    ERR出现的场景再现: 使用 PL/SQL导出按钮,选择‘CSV文件’,保存为1.csv,后用execl打开,复制到VuGen中作为login脚本的参数化文件username. ERR及发现过程: 在 ...

  5. 大家把做的公祭日的ps上传哦

    上传时图片保存为JPG,写上自己的学号,说说自己的创作构思

  6. DataFormatString 转

    数据绑定之DataFormatString 设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货 ...

  7. Windows Store App 全球化 资源匹配规则

    上面几个小节通过示例介绍了如何引用资源以及设置应用语言来显示不同语言的信息,这些示例都只是添加了简体中文和英语两种语言来显示资源,而在一些复杂的应用程序中,字符串资源可能会被定义成多种语言,文件资源也 ...

  8. zookeeper学习系列:四、Paxos算法和zookeeper的关系

    一.问题起源 淘宝搜索的博客 http://www.searchtb.com/2011/01/zookeeper-research.html  提到Paxos是zookeeper的灵魂 有一篇文章标题 ...

  9. Rendering Problems:android.support.v7.internal.widget.ActionBarOverlayLayout 解决方法

    不知道是不是android studio安装不对的问题,每次新建项目都有这个问题. 临时解决方法是: 打开 styles.xml 在Theme.AppCompat.Light.DarkActionBa ...

  10. python网络编程【四】(域名系统)

    域名系统(DNS)是一个分布式的数据库,它主要用来把主机名转换成IP地址.DNS以及相关系统之所以存在,主要有以下两个原因: (1).它们可以使人们比较容易地记住名字. (2).它允许服务器改变IP地 ...