首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 静态、构造、构造函数执行顺序

出现继承时: 1.初始化父类的静态变量、静态代码,初始化的顺序按照出现的顺序。 2.初始化子类的静态变量,静态代码。 3.初始化父类的成员变量。 4.执行父类的构造函数。...6.构造代码创建对象时执行 7.执行子类的构造函数。...父类$$构造函数$$; n=100 m=50 父类%%静态%%调用; m=100 父类**构造**调用;n=10 m=200 父类$$构造函数$$;...**构造**调用;n=10 m=40 父类$$构造函数$$; n=100 m=50 父类%%静态%%调用; m=100 父类**构造**调用;n=10 m=200 父类$$构造函数$...%%静态%%调用; m=10 父类**构造**调用;n=10 m=20 父类$$构造函数$$; n=100 m=30 【 子类 】@@ 静态 @@调用; m=32 父类**构造

1.6K30

Java中静态代码、构造代码、构造函数、普通代码

在Java中,静态代码、构造代码、构造函数、普通代码的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。...("静态代码"); } }   ②、执行时机   静态代码在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码以及构造函数。...需要注意的是,听名字我们就知道,构造代码不是优先于构造函数执行,而是依托于构造函数,也就是说,如果你不实例化对象,构造代码是不会执行的。怎么理解呢?...③、构造代码的作用    和构造函数的作用类似,都能对对象进行初始化,并且只要创建一个对象,构造代码都会执行一次。...利用每次创建对象的时候都会提前调用一次构造代码特性,我们可以做诸如统计创建对象的次数等功能。 3、构造函数    1.构造函数的命名必须和类名完全相同。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Java中静态代码、构造代码、构造函数、普通代码

%d个执行\n", ++i); } } 控制输出: 静态代码代码第1个执行 执行main方法 构造代码第2个执行 构造函数第3个执行 普通代码第4个执行 执行顺序:  静态代码->...构造代码->构造函数->普通代码 注意事项: 普通代码可以嵌入其余任何一个代码中,且前三代码内部代码都是顺序执行的; main方法晚于静态代码执行,但是main内部的方法和其余三个代码是顺序执行的...子类的静态代码第3个执行 父类的父类的构造函数第4个执行 父类的构造函数第5个执行 子类的构造函数第6个执行  根据Demo-2代码实验可知,涉及继承的代码执行顺序是这样的:  父类的静态方法->...子类的静态方法->父类的构造代码->父类的构造函数->子类的构造代码->子类的构造函数 相关原理以及解释: 因为static修饰的代码在类加载的时候就进行执行,而类加载是先于对象创建的,所以子类和父类的静态方法要首先执行...所以有“父类的构造代码->父类的构造函数->子类的构造代码->子类的构造函数”如此的执行顺序。

1.5K20

构造代码、构造函数、静态代码 学习笔记

String naem; private Date date; //构造函数 public User(){ System.out.println("构造函数....,而且优先于构造函数执行。...构造函数的作用: 给对象进行初始化,对象一建立就运行。 构造函数和构造代码的区别: 构造代码是给所有对象进行统一初始化;而构造函数是给对应的对象初始化。...构造代码中定义的是不同对象共性的初始化内容。 静态代码的作用: 随着类的加载而执行,只执行一次,并优先于主函数,用于给类进行初始化。...初始化 3、在堆内存中开辟空间,分配内存地址 4、在堆内存中建立对象的特有属性,并进行默认初始化 5、对属性进行显示初始化 6、对对象进行构造代码初始化 7、对对象进行对应的构造函数初始化 8、将内存地址赋给栈内存中的

79910

【C语言】memcpy()函数(内存拷贝函数)

Network网站上memcpy()函数的基本信息: 函数功能 可以看到,memcpy()函数的功能是: 从源头指向的内存拷贝固定字节数的数据到目标指向的内存....第一个参数的类型是无类型指针(void*),它指向拷贝的目的地内存,它的作用是为函数提供目的地的内存起始地址,以便函数能够准确地将内容拷贝到我们需要的内存空间....它的作用是为函数提供拷贝源头内存起始地址,以便函数能够准确找到拷贝的源头进行拷贝....函数返回值 函数的返回值类型是无类型指针(void*),它的作用是在函数运行结束后返回拷贝后的目的地内存的起始地址. 函数头文件 该函数包含在头文件中....让我们再来看一下文章开头时C语言标准对memcpy()函数的定义: 也就是说,C标准是不要求memcpy()函数能够拷贝重叠内存的,如果我们期望使用可以重叠的内存拷贝函数,那么另一个C标准库函数

23210

Java 静态代码,构造代码,构造函数执行顺序

类调用时,先执行静态代码,然后才执行主函数的,总的来说,静态代码是和类一起的,优先级最高,类加载的同时,静态代码同时也执行,但只执行一次,所以作用一般是用来加载一些配置代码,或者加载某些文件配置。...构造函数 构造函数的作用是用于给对象进行初始化,对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。 构造代码 构造代码的作用同样是给对象进行初始化。...对象一建立就运行构造代码了,而且优先于构造函数执行。这里要强调一下,有对象建立,才会运行构造代码,类不能调用构造代码的,而且构造代码与构造函数的执行顺序是前者先于后者执行。...构造函数和构造代码的区别: 构造代码与构造函数的区别是:构造代码是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象...也就是说,构造代码中定义的是不同对象共性的初始化内容。 运行结果: 可以看出来,静态代码只执行一次,而每次创建对象都会调用共同的构造代码,而构造函数也只在创建对象时执行该对象的构造函数

75810

静态代码、构造代码以及构造函数的加载顺序

这是子类的静态代码 before new Child() 这是父类的构造代码 这是父类的构造方块 这是子类的构造代码 这是子类的构造方法 结论: 首先,静态代码,构造代码...,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。...构造函数:构造函数的命名必须和类名完全相同,它没有返回值,也不能用void来修饰。 执行顺序优先级:静态>main()>构造>构造方法。...接着开始在堆内存中对实例变量进行默认初始化, 然后执行构造代码,对object进行对应的构造代码的初始化, 最后进行构造函数的初始化,对object进行对应的构造函数初始化。...作用分析 静态代码用于给类初始化,类加载的时候就会被执行; 构造代码用于给对应对象初始化,只要创建对象就会被执行,而且执行的顺序优先于构造函数; 构造函数用于给对应对象初始化,只要创建对象,就会选择相应的构造函数进行初始化

69220

函数作用域和作用域

作用域 尽管函数作用域是最常见的作用域单元,但是其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀、简洁 除 JavaScript 外的很多编程语言都支持作用域...,变量的声明应该距离使用的地方越近越好,并最大限度地本地化 作用域就是对之前的最小授权原则进行扩展的工具, 作用域 with with不仅是一个难以理解的结构,同时也是作用域的一个例子(作用域的一种形式...作用域在 es6 引入了新的关键字 let 之后成为了一个非常有用的机制 let 关键字可以将变量绑定到所在的任意作用域中,为其声明的变量隐式地劫持了所在的作用域 同样,const 也可以创建作用域变量...本质上,声明一个函数内部的变量或函数会在所处的作用域隐藏起来,这是有意为之的良好软件的设计原则。 但函数不是唯一的作用域单元。作用域指的是变量和函数不仅可以属于所处的作用域,有可以属于某个代码。...在 ES6 引入了 let 关键字,用来在任意代码中声明变量,if(…) { let a = 2 } 会声明一个劫持了 if 的的变量,并且将这个变量添加到中。

2.4K20

【C语言】memmove()函数(拷贝重叠内存函数详解)

Network网站上memmove()函数的基本信息: 1.函数功能 可以看到,memmove()函数的功能是: 从源头指向的内存拷贝固定字节数的数据到目标指向的内存,并且源头的内存与目标内存可以重叠...,const在*右边表示指针的指向不可修改)的无类型指针(void*),它指向拷贝数据的来源内存,它的作用是为函数提供拷贝源头内存起始地址,以便函数能够准确找到拷贝的源头进行拷贝. 3>.size_t...二.memmove()函数的具体使用 memmove()函数的使用场景是: 当我们想拷贝一个整型数组/结构体/枚举常量等strcpy()函数无法拷贝的数据,并且目的地内存和源头内存可能会有重叠的时候...,我们可以考虑使用memmove()函数来完实现这一诉求,当然,想要使用memmove()函数拷贝字符串数据或者拷贝目的地内存和源头内存不重叠也是可以的....(但是会有些杀鸡用牛刀的感觉哈哈哈) 下面是拷贝时源内存与目标内存重叠的情况示意图: 1.使用memmove()函数完成拷贝整型数组数据(目的地与源重叠) 因为拷贝目的地内存与源内存不重叠的情况我们已经在

14010

【C语言】memset()函数(内存初始化函数)

Network网站上memset()函数的基本信息: 1.函数功能 memset()函数的功能是:将一内存空间的每个字节都设置为指定的值。...它指向要填充的内存的指针, 它的作用是告诉函数要填充的一空间的起点在哪. 2>.int c 第二个参数的类型是int(整形), 它是要填充的值,通常是一个无符号字符, 它的作用是告诉函数这块空间要填充成哪个值..., 它的作用是告诉函数一共需要将多少个字节的空间设置成要填充的值. 3.函数返回值 函数的返回值类型是void*(无类型指针),它的作用是在函数运行结束后返回这块空间的起始地址. 4.函数头文件...二.memset()函数的具体使用 memset()函数的使用场景是:当我们想初始化一个内存空间,或者清空一个内存空间时,我们可以使用memset()函数来实现这一诉求. 1.使用memset()函数完成初始化数组...arr数组全部初始化为0了. 2.使用memset()函数完成结构体清空 关于memset()函数在结构体中的运用,大家可以移步我的另一篇博客,里面有详细的memset()函数在通讯录程序项目中的运用,

8710

Java中静态代码、代码以及构造函数执行顺序详解

静态代码,代码,构造方法执行顺序 前段时间面试,做到一个笔试题主要考察的是静态代码,代码,构造方法的执行顺序,由于自己没复习所以这个题肯定没做出来,回家后在Idea中进行代码测试运行。...可以看出到实际上执行顺序应该是父类静态代码——>子类静态代码——>父类代码——>父类构造方法——>子类代码——>子类构造方法。 为什么先执行父类的静态代码呢? 但是为什么会这样呢?...静态代码在Java是最优先执行的,且只会执行一次,当子类的super在调用父类的构造方法时所以先回去执行父类的静态代码,然后执行子类的静态代码,所以会执行父类静态代码再执行子类静态代码。...为什么第二个执行代码? 讲完了静态代码是最优先执行的,但是为什么代码的执行顺序会比构造方法先呢?我们通过反编译工具来看一下 ?...,所以此时就会执行父类的代码以及构造方法,当super执行完毕回到子类时,由于子类的代码也被放到了构造方法中,且在super之后所以执行子类代码再执行子类构造方法。

1.3K30

静态代码、非静态代码、构造函数三者执行顺序

主要探讨一下关于静态代码,非静态代码,构造函数的执行顺序。 如有错误,欢迎指出。 首先: 静态成员变量和静态代码的优先级是一样的,先定义的先执行。...在创建一个对象的时候会执行非静态代码和构造函数 再者是执行顺序: /* * *(1)父类静态成员和静态初始化,按在代码中出现的顺序依次执行。...* *(2)子类静态成员和静态初始化,按在代码中出现的顺序依次执行。 * *(3)父类实例成员和实例初始化,按在代码中出现的顺序依次执行。 * *(4)执行父类构造方法。...* *(5)子类实例成员和实例初始化,按在代码中出现的顺序依次执行。 * *(6)执行子类构造方法。...2.在创建一个对象的时候会执行非静态代码和构造函数

45820

点击,让小块动起来 - 函数封装

今天我们要来学习简单的页面交互效果 - 点击,让运动起来。...2 代码46行step变量的值赋值给标签的margin-left的值,需要注意的是不要忘记属性值的单位; 3 每次点击标签(触发click事件),小块会向左移动1px; 4 代码的封装与优化 现在点击,...这样会产生代码冗余,所以我们需要对代码进行封装与优化; 函数封装 函数: 什么是函数呢?简单的说,函数就是把多条语句封装起来,可以在任意地方放置,也可以在任意地方调用执行。..., '陈能堡'); 函数的参数: 在定义函数的时候括号中的参数叫做形参,调用函数的时候,括号中的参数叫做实参。...; 2 代码21~25总共三次调用sum功能函数,共用相同的代码实现不同的效果; 3 利用函数封装可以减少代码冗余,提升代码的可读性和复用性; 4 函数封装的另外一个好处在于,你不需要了解函数里面的实现原理

1.6K120

Java——代码(普通、构造、静态

代码编写中,使用{}声明的程序就属于代码,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码、构造、静态、同步代码(多线程中涉及) 1、普通代码 在方法中使用{}定义起来的一段代码...将普通代码中提取到类中使用,就形成了构造代码。...3、静态代码 如果代码中使用了static关键字定义,则该代码为静态代码: 在非主类中定义的; 在主类中定义的; 【举例】:非主类中定义的静态 protected void onCreate...System.out.println("构造"); } static { //静态 System.out.println("静态"); }...以上可以发现,静态优于主方法先执行。 4、总结 代码对于现阶段开发意义不大,了解即可。

1.9K10

JavaScript 级作用域 与 自执行函数

ES6出现了一个可以替代自执行函数的东西。 拿实例说话 就算没仔细看过jquery源码,想比你也见过开头的这种代码: 这是一种典型的自执行函数,也就是立即执行函数。...underfined 1.2 作用域 var v = "hello"; if(true){ console.log(v); var v = "world"; } 输出:hello ES6...之前是没有作用域这个概念了,这对编程产生了很大的影响,不过,聪明的程序猿们还是想出了解决的方法。...4. let关键字的使用 ES6以后,出现了个牛逼的关键字 -- let let关键字的出现,也象征着JavaScript出现了级作用域。...电子版:http://es6.ruanyifeng.com/#docs/let 大致就是:let声明的变量,只在let命令所在的代码内有效。它要求变量必须先声明后使用。

1.3K00

【Java基础-2】构造函数与构造代码

构造函数与构造代码 1 构造函数 构造函数是Java中的一个重要概念,它的作用是对对象的数据进行初始化。怎么去理解呢?...多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同 构造函数与普通函数的区别: 一般函数是用于定义对象应该具备的功能。...构造函数没有返回值类型。 2 构造代码 构造代码存在的意义在于提取多个构造方法中相同的代码。每个构造方法执行前,会首先执行构造代码。...,代码还包括局部代码和静态代码: 局部代码:用于限定变量的生命周期,及早释放,提高内存利用率。...静态代码、构造代码、构造方法的顺序:静态代码 > 构造代码 > 构造方法

42220

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券