一、数组初始化

  数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥有这个数组的存储空间。要获取数组的存储空间,必须要写初始化表达式,最朴素的表达式类型如下

int[] a = {1,2,3};

  如果在编写程序时,不能确定数组的长度,可以使用如下方式,直接用new在数组里创建元素

int[] a = new int[3];

  当创建对象数组时,数组中的元素仅仅是对象的引用,当试图使用数组中的空引用时,会引起编译器运行期错误,这是需要注意的,可以使用用花括号括起来的列表初始化对象数组。

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

  数组类型还有两个使用很多的方法,一个是length()方法,用来返回数组的长度,一个是.toString()方法,会将数组以可视化的方法打印出来。

二、可变参数列表

  先举一个可变参数的例子。

 class A{

 }

 public class test{
static void print(Object... args){
for(Object obj:args){
System.out.print(obj + " ");
}
System.out.println();
}
public static void main(String args[]){
print(new Integer(1), new Float(2.0), new Double(3.0));
print("a", "b", "c");
print(new A(), new A(), new A());
} }

1 2.0 3.0 a b c test1.A@15db9742 test1.A@6d06d69c test1.A@7852e922

  这种方法的效果是可变参数列表和自动包装机制的和谐共处,使用了可变参数列表,当指定参数类型后,编译器会给你自动填充数组,即允许将一组事物当做列表传递给一个数组,并且将空参数列表传递给可变参数列表是可行的。除了object类型的参数列表,参数列表可以使用任何类型的参数,包括基本类型。

  使用可变参数列表,会使重载过程变得更加复杂,需要注意这种复杂带来的问题,以下是一个例子。

 public class test{
static void f(Character... args){
System.out.print("first");
for(Character c:args){
System.out.print(c + " ");
}
System.out.println();
} static void f(Integer... args){
System.out.print("first");
for(Integer c:args){
System.out.print(c + " ");
}
System.out.println();
} static void f(Long... args){
System.out.print("third");
} public static void main(String args[]){
f('a', 'b', 'c');
f(1);
f(2, 1);
f(0);
f(0l);
//f();
} }

  在这种情况下,不能调用f()方法,因为编译器会不知道该调用哪个方法了,这是可变参数列表带来的潜在的隐患。为了解决这种隐患,可以给每个参数列表都添加一个非可变参数,例如:

static void f(Integer i,Integer... args); static void f(float i, float... args);

Chapter5_初始化与清理_数组初始化与可变参数列表的更多相关文章

  1. Chapter5_初始化与清理_构造器初始化

    一.构造器初始化的基本顺序 在使用构造器进行初始化时,最需要注意的是初始化的顺序,这种方法可以给初始化的顺序带来很大的灵活性.看如下的一个例子. class Window{ Window(int ma ...

  2. Chapter5_初始化与清理_成员初始化

    在java中,成员初始化在使用之前应该都要保证已经完成初始化.对于在方法体中的局部变量,如果没有使用指定初始化的方法对成员变量进行初始化,编译器会提示一个错误.而对于类的数据成员,编译器会对这些成员赋 ...

  3. Chapter5_初始化与清理_用构造器初始化

    接下来进入第五章,java中初始化和清理的问题,这是两个涉及安全的重要命题.初始化的功能主要是为库中的构件(或者说类中的域)初始化一些值,清理的功能主要是清除程序中不再被需要的元素,防止资源过分被垃圾 ...

  4. Chapter5_初始化与清理_方法重载

    方法重载是java中编译器在方法调用时采用的一个重要机制.起初方法重载的初衷是方便构造器的调用,比如对于一个类,可以实现用不同的方法来初始化它,又由于构造器的名称都是一样的,所以必须使用到方法重载的机 ...

  5. pytest--fixture基本使用(主要用来进行测试环境的初始化和清理,fixture中的params参数还可以用来进行参数化)

    fixture fixture修饰器来标记固定的工厂函数,在其他函数,模块,类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作. 方法: fixture(scope=" ...

  6. (63)Wangdao.com第十天_预处理、预解析_函数 上下文对象、参数列表对象

    预解析.预处理 1. 在全局代码执行之前,js 引擎 就会创建一个栈来存储管理所有的 执行上下文对象 2. 在 全局执行上下文 window 确定以后,进行压栈 3. 在 函数执行上下文对象 确定以后 ...

  7. Python基础(六)_全局变量声明、可变参数、关键字参数

    1. global声明全局变量 #声明name这个变量为全局变量,只是写在函数里面 #写代码时,尽量不要用全局变量,会一直占用内存.       ------->{'name':'abc','s ...

  8. [THINKING IN JAVA]初始化和清理

    4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...

  9. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

随机推荐

  1. Python第7天

    其他内置函数: abs() 绝对值 all()均为真则为True any()有一个为真就为True bin()十进制->二进制 bool() 空,0,None为False,其余为True byt ...

  2. stm32 HAL库笔记(一)——串口的操作

    昨天分析了普通io口的使用,和初始化代码流程,回顾一下,首先定义一个配置io口功能的结构体,然后开启时钟,再去配置这个结构体里面的各个成员变量,每个成员变量都有很多种选择,可以看各个成员变量 后面的注 ...

  3. 深度学习原理与框架-图像补全(原理与代码) 1.tf.nn.moments(求平均值和标准差) 2.tf.control_dependencies(先执行内部操作) 3.tf.cond(判别执行前或后函数) 4.tf.nn.atrous_conv2d 5.tf.nn.conv2d_transpose(反卷积) 7.tf.train.get_checkpoint_state(判断sess是否存在

    1. tf.nn.moments(x, axes=[0, 1, 2])  # 对前三个维度求平均值和标准差,结果为最后一个维度,即对每个feature_map求平均值和标准差 参数说明:x为输入的fe ...

  4. web跨域问题(No 'Access-Control-Allow-Origin'..)

    1. 问题 angular开发中连接java服务时出现跨域问题(No 'Access-Control-Allow-Origin'..). 如下图 解决方法 2,原因分析 这个与安全机制有关,默认情况下 ...

  5. Hadoop HDFS常用命令

    1.查看hdfs文件目录 hadoop fs -ls / 2.上传文件 hadoop fs -put 文件路径 目标路径 在浏览器查看:namenodeIP:50070 3.下载文件 hadoop f ...

  6. layui时间控件,获取页面选中的时间值。

    先贴上html文档 <div class='layui-form'> <div class="layui-form-item"> <div class ...

  7. 查询当前局域网下所有IP和物理网卡地址

    WIN+R –> 打开cmd 键入 arp -a

  8. 基于IAR平台FreeRTOS移植

     开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...

  9. Java第一周作业

    Java第一周作业 本周作业: 参考<<教材学习指导(http://www.cnblogs.com/rocedu/p/7911138.html)) 学习第一章视频 参考<<使用 ...

  10. flock - 必应词典

    flock - 必应词典 美[flɑk]英[flɒk] v.聚集:群集:蜂拥 n.(羊或鸟)群:(尤指同类人的)一大群 网络羊群:大量:羊群,一群 变形复数:flocks:过去分词:flocked:现 ...