java有参无参构造器的的执行顺序
这里拿了用数组构造栈的一段代码说明一下
public class StackArray<E> {
private Object[] data = null;
private int maxSize; //栈容量
private int top = -1; //栈顶指针
/**
* 重写无参构造函数
*/
StackArray(){
this(10); //默认栈大小为10 (如果这行前面有代码,这行就会报错)
System.out.println("无参构造器执行");
}
/**
* 有参构造函数
*/
StackArray(int initialSize){
if(initialSize >= 0){
this.maxSize = initialSize;
data = new Object[initialSize];
top = -1;
}else{
throw new RuntimeException("初始化大小不能小于0:" + initialSize);
}
System.out.println("有参构造器执行");
}
public static void main(String[] args) {
new StackArray();
//new StackArray(20);
}
}
1)new StackArray()即无参的实例化过程:
找到无参构造器 > 初始化成员变量(引用类型初始化为null,int初始化为0) > this(10)调用有参构造器 > 来到有参构造器并初始化赋值形参(initialSize=10)> 成员变量赋值(例如top=-1)> 执行有参构造器内部代码(输出了“有参构造器执行”)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束
2)new StackArray(20)有参的实例化过程:
找到有参构造器 > 初始化赋值形参并初始化成员变量(引用类型初始化为null,int初始化为0) > 成员变量赋值(例如top=-1)> 执行有参构造器内部的代码 > 结束
3)如果无参构造器内没有调用有参构造器,new StackArray()的实例化过程:
找到无参构造器 > 初始化成员变量(引用类型初始化为null,int初始化为0) > 成员变量赋值(例如top=-1)> 执行无参构造器内部代码(输出了“无参构造器执行”)> 结束
java有参无参构造器的的执行顺序的更多相关文章
- 064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法 本文知识点:无参带返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法
063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法 本文知识点:无参无返回值方法 无参无返回值方法 案例 为什么使用方法?--方便复杂问题调用 ...
- 浅谈Java语言中try{}catch{}和finally{}的执行顺序问题
浅谈Java语言中try{}catch{}和finally{}的执行顺序问题 2019-04-06 PM 13:41:46 1. 不管有没有出现异常,finally块中代码都会执行: 2. 当t ...
- Java静态代码块、构造代码块执行顺序问题
package com.zxl.staticdemo; public class BlockTest { static { System.out.println("BlockTest静态代码 ...
- java基本数据类型,访问控制符,运算符执行顺序
1.java数据类型 内置数据类型:boolean(1), byte(8), char(16), short(8), int(32), long(64), float(32), double(64) ...
- Java学习笔记 - 类方法与代码块的执行顺序
类的初始化顺序 使用一个简单的父子类例子来做示范,代码执行顺序在代码后有标注. class Parent { public static String p_StaticField = "父类 ...
- JAVA类的无参方法
Java注释: //:单行注释 /**/:多行注释 /** */:JavaDoc注释 方法: ...
- SSM Controller 页面之间跳转 重定向,有参 无参问题
需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. (1)我在后台一个controller跳转 ...
- java 代码块,静态代码块,构造器等的执行顺序
写了一段测试代码,如下: public class ExecutionSequence extends fatherClass{ static{ System.out.printl ...
随机推荐
- LoadRunner性能测试-下载文件脚本
Action() { intflen; //定义一个整型变量保存获得文件的大小 longfiledes; //保存文件句柄 charfile[]="\0"; //保存文件路径及文件 ...
- Spring 让 LOB 数据操作变得简单易行
概述 LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型,前者用于存储大块的二进制数据,如图片数据,视频数据等,而后者用于存储长文本数据,如论坛的帖子内容,产品的详细描述等.值得注意的是: ...
- 记录magento通过csv文件与zip(图片压缩)上传产品到数据库的过程
1,前台使用input-file type按钮提交文件到magento指定的控制器,controllers获取.csv文件,因为magento是在zend框架上实现的,可以使用如下代码获取文件的上传信 ...
- POJ 1811
使用Pollard_rho算法就可以过了 #include <iostream> #include <cstdio> #include <algorithm> #i ...
- Rails中关联数据表的添加操作(嵌套表单)
很早就听说有Web敏捷开发这回事,最近终于闲了下来,可以利用业余的时间学些新东西,入眼的第一个东东自然是Ruby on Rails.Rails中的核心要素也就是MVC.ORM这些了,因此关于Rails ...
- 英语发音规则---B字母
英语发音规则---B字母 一.总结 一句话总结: 1.B发[b]音? bike [baɪk] n. 自行车 bus [bʌs] n. 公共汽车 bag [bæg] n. 袋:猎获物 baby ['be ...
- NEUOJ 1702 撩妹全靠魅力值 (三维偏序)
题目链接:http://acm.neu.edu.cn/hustoj/problem.php?id=1702 题目大意:就是问每个人三个属性同时不低于另外几个人....人不分先后 经典的三维偏序问题 解 ...
- [Swift]二进制、八进制、十进制、十六进制之间的转换
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- HTML5+Spring-MVC实现上传图片本地保存
以下就是具体的代码: 1.在jsp页面中的代码: <span style="font-size:24px;"><form method="post&qu ...
- python初始面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...