先上代码

class A{
    int a;
    static {System.out.println("载入类时执行");}
    public A() {
        System.out.println("我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我");
       
    }
    {System.out.println("先执行我!");}
}
public class Html {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
        Class O=Class.forName("A");
        Class P=Class.forName("A");
        O.newInstance();
        A i=new A();
        A o=new A();
    }
}

代码执行结果是

载入类时执行

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

参考文章

http://www.cnblogs.com/xingzc/p/5760166.html

http://www.cnblogs.com/wangxin37/p/6397742.html

newlnstance()是一个方法

new是一个关键字

Class下的newlnstance()的使用有局限他只能调用无参的构造函数

new关键字生成对象(类的实例)没有这个限制

Class..forName()返回的是一个类

Class.forName().newlnstance()返回的是Object(类的实例)

初始化块

和构造方法一样用于初始化对象(赋值);

一个初始化块是在类中由一段花括号括起来的

它的作用就是想是把他放在类中每个构造方法最开始的位置

Static初始化块

和构造块的区别是声明中带有STATIC外,其它和初始化块一样。当类加载时执行,只能引用static成员

Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系的更多相关文章

  1. MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

    数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...

  2. 讨论SQL语句中主副表之间的关系

    在公司这么多些时间,自己在写SQL语句这方面的功夫实在是太差劲了,有时候自己写出来的SQL语句自己都不知道能不能使用,只是自己写出来的SQL语句是不报错的,但是,这对于真正意义上的SQL语句还差的真的 ...

  3. SQL语句、PL/SQL块和SQL*Plus命令之间的区别

    SQL语句.PL/SQL块和SQL*Plus命令之间的区别   原文链接:https://blog.csdn.net/liuzhushiqiang/article/details/12320941 在 ...

  4. SQL Server语句创建数据库和表——并设置主外键关系

    简单的创建数据库的 SQL 语句: use master go if exists(select * from sysdatabases where name='Test') begin select ...

  5. vue使用案例,vue初始化,vue初始化方法,vue条件语句,vue在js里面添加元素调用vue方法

     <div id="main" > <button id='but1' type="button" v-on:click="save ...

  6. 关于case语句中声明变量并初始化的注意事项

    今天看到一句对这个问题特别精辟的总结,记录如下: It is possible to transfer into a block, but not in a way that bypasses dec ...

  7. c#描述异常处理语句try、catch、finally执行时的相互关系

    try里面是执行代码,其中的代码"可能"产生异常. catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道 ...

  8. 数据库常用SQL语句(二):多表连接查询

    前面主要介绍了单表操作时的相关查询语句,接下来介绍一下多表之间的关系,这里主要是多表数据记录的查询,也就是如何在一个查询语句中显示多张表的数据,这也叫多表数据记录的连接查询. 在实现连接查询时,首先是 ...

  9. Java的哪些事

    Java的哪些事--------------------------------------------------Java学习分2个方面: Java语法与Java类库 Java: A simple, ...

随机推荐

  1. solr的域

    solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段. solr中内 ...

  2. 第十九节: 结合【表达式目录树】来封装EF的BaseDal层的方法

    一. 简介 该章节,可以说是一个简单轻松的章节,只要你对Expression表达式树.EF的基本使用.泛型有所了解,那么本章节实质上就是一个非常简单的封装章节,便于我们快捷开发. PS:在该章节对于E ...

  3. 五十、进程间通信——System V IPC 之共享内存

    50.1 共享内存 50.1.1 共享内存的概念 共享内存区域是被多个进程共享的一部分物理内存 多个进程都可把该共享内存映射到自己的虚拟内存空间.所有用户空间的进程若要操作共享内存,都要将其映射到自己 ...

  4. 「WC2018」通道

    没有代码能力... LOJ #2339 Luogu P4220 UOJ #347 题意 给定三棵树$ T1,T2,T3$,求一个点对$ (x,y)$使得$ T1.dist(x,y)+T2.dist(x ...

  5. 🍓 DOM常用基础知识点汇总(入门者适用) 🍓

    铛-今天又没啥事,来总结一下DOM的基础知识.(公司没活干我也很无奈

  6. underscore用法大全

    1._.find函数 var one = _.find(all, function (item) { return item.C_ID == selected; }); $('#C_NAME').va ...

  7. 给Ubuntu系统清理垃圾

    原文地址:https://blog.csdn.net/levon2018/article/details/81746613 1.清理下载的软件包  不过与你想象的可能有很大的不同,Ubuntu系统在运 ...

  8. Gin 路由解析树详解

    说明: 无意间看到gin 中有trees的属性,好奇想一探究竟,到底gin是怎样生成路由解析树的? 这是一个测试截图,图中大概可以了解到gin是怎样做路由解析的.配合源码的阅读,解析树大致如下: 通过 ...

  9. 翻译NYOJ

    #include<iostream> #include<string.h> #include<stdio.h> using namespace std; ; int ...

  10. 【原创】运维基础之Redis(1)简介、安装、使用

    redis 5.0.3 官方:https://redis.io/ 一 简介 Redis is an open source (BSD licensed), in-memory data structu ...