• 静态属性、静态代码块、静态方法、构造方法、普通方法的执行顺序


    一、

    静态代码块:

    是在当类被载入(内存)时,(最先被调用的),静态代码块被执行,且之被执行一次,静态块常用来执行类属性的初始化。执行类的载入之前就会调用。

    非静态代码块:

    是在当类的对象被创建载入(内存)时,(最先被调用的),每创建一个对象,即每载入一个对象,非静态代码块都执行一次。执行类对象的载入之前就会调用。

    对象载入之前,一定要是类先被载入。

    静态方法、非静态方法:都是调用时,才执行的。静态方法属于类的,加载完类就可以调用静态方法;非静态方法是属于对象的,加载完对象就可以调用非静态方法。

    加载类的动作没有什么标志性,但是加载对象的标志动作就是new动作,会去执行

    更精简:

    静态代码块:类每次加载到内存中调用一次,并最先调用

    非静态代码块:类的对象每次加载到内存中调用一次,并最先调用,然后是调用对应的构造方法

    静态方法、非静态方法:都是进行方法调用时才执行,调用静态方法,前提是:类已经加载到内存中;调用非静态方法,前提是类的对象已经加载到内存中。

    那么,

    类什么时候被加载/类加载时机:【即类被使用时,就会加载】
    第一:生成该类对象的时候,会加载该类及该类的所有父类;
    第二:访问该类的静态成员的时候;
    第三:class.forName("类名");

    代码块是自动的,方法是被动的。

    作用:静态代码块可以用来初始化一些项目最常用的变量和对象;静态方法可以用作不创建对象也可以能需要执行的代码。

    引申:JVM(内存)主要分区:程序计数器、本地方法栈、堆(heap)虚拟机栈(stack)方法区(method)     

    堆:放对象实例

    栈:局部变量表、操作数栈、动态链接、方法出口(程序上下文)

    方法区:被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码。

    http://www.tuicool.com/articles/eyI73u

    有类继承的情况也一样分析:先加载子类的类,那么要加载父类的类,之后new一个子类,那么之前也要new一个父类

     二、

    iterable接口:集合类实现了iterable接口,调用接口的iterator()方法可以生成一个迭代器。iterator迭代器也是一个接口,集合类不直接实现它的原因是调用iterator()方法可以生成下标从0开始的迭代器。

    enumeration接口:迭代器接口,类似于iterator。

    区别:enumeration只有hasMoreElements()、nextElement()两个方法,而iterator有hasNext()、next()、remove()三个方法,多了一个删除功能。

    vector可以使用enumeration,所有集合类都可以使用iterator。

    http://www.blogjava.net/seaairland/articles/44367.html

     三、

    在Java里面参数传递都是按值传递:(由不同角度考虑)

    按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,可以统称为按值传递。

    四、date

    五、

    java回调:

    就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call back”。

    http://www.brieftools.info/

    http://www.hztarena.org/Html/soft/201212/1762.html

    http://www.51cto.com/specbook/24/6720.htm

  • 相关阅读:
    SQL Server没有足够的内存继续执行程序 (mscorlib)的解决办法
    在IIS上搭建WebSocket服务器(一)
    端口号被占用
    2018年 年度总结
    一个人颓废的九大根源
    Arrays.asList() 踩坑
    电脑关机命令
    div 悬浮
    ajax中 踩过的坑
    oracle 密码过期问题
  • 原文地址:https://www.cnblogs.com/cyh123/p/3874416.html
Copyright © 2020-2023  润新知