初始化与清理的理解六

1、数组初始化

数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号下标操作符[]来定义和使用的。要定义一个数组,只需在类型名后加上一对空方括号即可:int []  a1;
方括号也可以置于标识符后面:int  a1 [] ;
两种格式的含义是一样的,后一种格式符合C和C++程序员的习惯。不过,前一种格式或许更合理,毕竟它表明类型是“一个int 型数组”。
编译器不允许指定数组的大小。这就又把我们带回到有关“引用”的问题上。现在拥有的只是对数组的一个引用(你已经为该引用分配了足够的存储空间),而且也没给数组对象本身分配任何空间。为了给数组创建相应的存储空间,必须写初始化表达式。对于数组,初始化动作可以出现在代码的任何地方,但也可以使用一种特殊的初始化表达式,它必须在创建数组的地方出现。这种特殊的初始化是由一对花括号括起来的值组成的。在这种情况下,存储空间的分配(等价于使用new)将由编译器负责。例如:int []  a1 = { 1, 2, 3, 4, 5 } ;      int []  a2 ;
在Java中可以将一个数组赋值给另一个数组,所以可以这样:a2 = a1 ; 其实真正做的只是复制了一个引用。
所有数组(无论它们的元素是对象还是基本类型)都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改。这个成员就是length。与C和C++类似,Java数组计数也是从第0个元素开始,所以能使用的最大下标数是length-1。要是超出这个边界,C和C++会“默默”地接受,并允许你访问所有内存,许多声名狼藉的程序错误由此而生。Java则能保护你免受这一问题的困扰,一旦访问下标过界,就会出现运行时错误(即异常)。
如果在编写程序时,并不能确定在数组里需要多少个元素,可以直接用new在数组里创建元素。尽管创建的是基本类型数组,new仍然可以工作(不能用new创建单个的基本类型数据)。
数组元素中的基本数据类型值会自动初始化成空值(对于数字和字符,就是0;对于布尔型,是false)。
Arrays.toString()方法属于Java.util标准类库,它将产生一维数组的可打印版本。
一、可变参数列表
使用花括号定义的方式提供了一种方便的语法来创建对象并调用方法,以获得与C的可变参数列表(C通常把它简称为varargs)一样的效果。这可以应用于参数个数或类型未知的场合。由于所有的类都直接或间接继承于Object类,所以可以创建以Object数组为参数的方法。
标准Java库中的类能输出有意义的内容,但这里建立的类的对象,打印出的内容只是类的名称以及后面紧跟着的一个@符号以及多个十六进制数字。于是,默认行为(如果没有定义toString()方法的话)就是打印类的名字和对象的地址。
如果你有一组事物,可以把它们当作列表传递,而如果你已经有了一个数组,该方法可以把它们当作可变参数列表来接受。在可变参数列表中可以使用任何类型的参数,包括基本类型。
getClass()方法属于Object的一部分,它将产生对象的类,并且在打印该类时,可以看到表示该类类型的编码字符串。

 

转载于:https://www.cnblogs.com/zhishuiyushi/articles/11308190.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值