构造代码块:

描述Teacher对象/实体:

package android.java.oop06;

public class Teacher {

    private int id = 007;
private String name = "零零发";
private int age = 98;
private float height = 1.78F; /**
* 静态代码块:当前Teacher类,被加载进内存时 就会执行此静态代码块里面的主体{}
* 可以说是最先执行的,可以在这里做一些静态成员的初始化工作
*/
static {
System.out.println("静态代码块:当前Teacher类,被加载进内存时 就会执行此静态代码块里面的主体{}");
System.out.println("");
} /**
* 构造代码块:每一个构造函数,的第三行执行者 就是构造代码块;
* 构造代码块可以给成员变量字段进行初始化工作等;
*/
{
System.out.println("构造代码块 被所有构造方法的第三行执行者 执行了...");
showAllValue();
} /**
* 构造函数是专门给对象实例化用的:
* new Teacher(); ---> public Teacher(){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Teacher() {
System.out.println("无参构造函数,我被new Teacher()实例化了");
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 构造函数是专门给对象实例化用的:
* new Student(9); ---> public Student(int value){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Teacher(int value) {
System.out.println("有参构造函数,我被new Teacher(int类型的值)实例化了 value:" + value);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 构造函数是专门给对象实例化用的:
* new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
* ...
*
* 就算不写构造函数 也会默认有一个无参构造函数;
* 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
*/
public Teacher(String name, boolean isSuccess) {
System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} // 打印所有的成员变量值
private void showAllValue() {
System.out.println("id:" + id + "\nname:" + name + "\nage:" + age + "\nheight:" + height + "\n");
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
}
}

main测试方法:

package android.java.oop06;

public class Demo01 {

    public static void main(String[] args) {

        // new Teacher();      --->        public Teacher(){}
Teacher teacher1 = new Teacher(); // new Student(9); ---> public Student(int value){}
Teacher teacher2 = new Teacher(9988); // new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
Teacher teacher3 = new Teacher("毛对皮", true); } }

执行结果:

分析打印执行的结果中,每次调用构造方法,构造方法都会,先调用构造代码块,这是为什么呢,等结束完(构造方法隐式三行)就明白了;




构造方法隐式三行

  1.分析打印执行的结果中,每次调用构造方法,构造方法都会,先调用构造代码块,这是为什么呢?;

    解释:因为在所有构造方法中,【第三行】隐式的 会调用构造代码块;

  2.为什么构造代码块中打印的成员变量是有值得呢?

    解释:因为【第二行】给所有成员变量赋值了,所以构造代码块可以打印成员变量的值;

  3.为什么构造方法中打印的成员变量是有值得呢?

    解释:因为【第二行】给所有成员变量赋值了,所以构造方法可以打印成员变量的值;

package android.java.oop06.teacher;

public class Teacher {

    private int id = 007;
private String name = "零零发";
private int age = 98;
private float height = 1.78F; /**
* 构造代码块:每一个构造函数,的第三行执行者 就是构造代码块;
* 构造代码块可以给成员变量字段进行初始化工作等;
*/
{
System.out.println("构造代码块 被所有构造方法的第三行执行者 执行了...");
showAllValue();
} /**
* 每一个构造函数/所有构造函数都是这样的
* 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作
* 隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的
*/
public Teacher() {
// 【第一行】super(); 调用父类的 无参构造方法
/**
* 【第二行】
* 给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0
* 就是执行了【第二行】才会去执行-->给id=赋值为007 name=赋值为="零零发" age=98)
*/
// 【第三行】调用-->(构造代码块) System.out.println("无参构造函数,我被new Teacher()实例化了");
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 每一个构造函数/所有构造函数都是这样的
* 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作
* 隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的
* @param value
*/
public Teacher(int value) {
// 【第一行】super(); 调用父类的 无参构造方法
/**
* 【第二行】
* 给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0
* 就是执行了【第二行】才会去执行-->给id=赋值为007 name=赋值为="零零发" age=98)
*/
// 【第三行】调用-->(构造代码块) System.out.println("有参构造函数,我被new Teacher(int类型的值)实例化了 value:" + value);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} /**
* 每一个构造函数/所有构造函数都是这样的
* 就以此构造函数为例:来介绍隐式 第一行 第二行 第三行 执行操作
* 隐式的第一行、第二行、第三行、执行操作是默认执行的,是看不到的 隐式的
* @param name
* @param isSuccess
*/
public Teacher(String name, boolean isSuccess) {
// 【第一行】super(); 调用父类的 无参构造方法
/**
* 【第二行】
* 给所有成员属性赋值 例如:一开始这些成员变量的值是id=0 name=null age=0
* 就是执行了【第二行】才会去执行-->给id=赋值为007 name=赋值为="零零发" age=98)
*/
// 【第三行】调用-->(构造代码块) System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess);
showAllValue();
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
} // 打印所有的成员变量值
private void showAllValue() {
System.out.println("id:" + id + "\nname:" + name + "\nage:" + age + "\nheight:" + height + "\n");
return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
}
}

Android-Java构造代码块&构造方法隐式三行的更多相关文章

  1. java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题

    今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...

  2. Java面试题 静态代码块 构造代码块 构造方法 的执行顺序

    JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...

  3. Java类中代码的执行顺序 静态代码块>构造代码块>构造方法

    一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...

  4. Java学习之代码块(静态,构造代码块,构造方法)执行顺序

    静态代码块   static{ 代码 } 随着类的加载而加载,随类的消失而消失,存在于类中,方法外,最先执行,且只加载1次,可用来加载驱动及初始化对象属性. 构造代码块   {   } 也存在于类中, ...

  5. JAVA 构造代码块

    class G{ G(){ System.out.println("我是无参构造方法"); } G(String name){ System.out.println("我 ...

  6. Java:构造代码块,静态代码块

    本文内容: 局部代码块 构造代码块 静态代码块 补充 首发日期:2018-03-28 局部代码块: 局部代码块用于限制变量的生命周期,如果希望某些变量在某一过程之后直接失效而不希望被后面继续操作时,可 ...

  7. java构造代码块详解

    一.简介 首先说一下,Java中有哪些代码块. 普通代码块 就是在方法后面使用"{}"括起来的代码片段,不能单独执行,必须调下其方法名才可以执行. 静态代码块 在类中使用stati ...

  8. java构造代码块,构造函数和普通函数的区别和调用时间

    在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间.构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行.构造函数:运行时间比构造代码块时间晚,也 ...

  9. java构造代码块与静态代码块

    一:构造代码块 1.概述 作用:给对象初始化. 优先级:优先于对象的构造函数之前执行. { /*构造代码块的代码*/ } 给所有的对象统一的初始化,而构造函数只是给特定的对象初始化,因为构造函数可以重 ...

随机推荐

  1. How To Configure SAMBA Server And Transfer Files Between Linux & Windows

    If you are reading this article it means you have a network at home or office with Windows and Linux ...

  2. Laravel Many to Many Polymorphic Relationship

    Many to many Polymorphic relationship is also a little bit complicated to understand. For example, i ...

  3. 条件随机场_CRF

    无向图 举例:“Bob drank coffee at Starbucks” 标记方式1:(名词,动词,名词,介词,名词) 称为l 标记方式2:(名词,动词,动词,介词,名词) 挑选出一个最靠谱的: ...

  4. python连接Linux服务器

    import paramikoimport os #当前脚本路径CUR_PATH = os.path.dirname(__file__) #服务器ipHost=''Port=22#登录用户名Usern ...

  5. python 函数调用顺序

    def foo(): print ('in the foo') bar() def bar(): print ('in the bar') foo() 1.foo函数进入内存 2.bar函数进入内存 ...

  6. activiti 清库脚本(转)

    在使用activiti 的时候会经常遇到需要清空数据库中的数据,因此本文重点讲解如何解决该问题. 再删除数据的时候,需要注意有主外键约束的问题?下面罗列的DDL可以结合自身的业务需求进行灵活改造. D ...

  7. 解疑网络监控卡壳 视觉体验400ms延时

    http://security.zol.com.cn/413/4130220.html 我的眼睛可以轻松判断出400ms延时误差,你可以吗?很多用户都反映手机移动监控.PC远程监控视频会卡顿,抛开设备 ...

  8. gcc 库路径里同时有相同文件名的动态库和静态库

    找不到库的处理方案 有两种方法: 一.可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig(要有root权限才行). 二.把当前路径加 ...

  9. 2019.02.09 bzoj1042: [HAOI2008]硬币购物(完全背包+容斥原理)

    传送门 题意简述:有四种面值的硬币,现在qqq次询问(q≤1000)(q\le1000)(q≤1000),每次给出四种硬币的使用上限问最后刚好凑出sss块钱的方案数(s≤100000)(s\le100 ...

  10. 2019.01.21 bzoj1758: [Wc2010]重建计划(01分数规划+长链剖分+线段树)

    传送门 长链剖分好题. 题意简述:给一棵树,问边数在[L,R][L,R][L,R]之间的路径权值和与边数之比的最大值. 思路: 用脚指头想都知道要01分数规划. 考虑怎么checkcheckcheck ...