
正文
java静态代码和构造器,java静态代码分析
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中静态代码块和构造代码块的区别
1、相同点:每创建一个对象,构造代码块和构造函数都执行一次,不同点:执行的顺序不同,先执行构造代码块,再执行构造方法。
2、构造代码块:执行时间比静态代码块晚,比构造函数早,和构造函数一样,只在对象初始化的时候运行。没有名字、参数和返回值。静态代码块:最早执行,类被载入内存时执行,只执行一次。没有名字、参数和返回值,有关键字static。
3、构造代码块:是在类中直接定义的,用“{}”括起来的代码。每次调用构造方法前执行,都会 先执行构造代码块。静态代码块:他在类中的成员位置,用“{}”括起来的代码。
4、也就是说,构造代码块中定义的是不同对象共性的初始化内容。所以理所当然的,构造代码块在构造函数之前执行。
5、静态块在一个程序里面只执行一次;而构造块是,只要建立一个对象,构造代码块都会执行一次。
6、构造器的执行顺序是:静态代码块→代码块→构造器。再说作用:静态代码块是用于初始化类的(在加载类时执行,只执行一次),代码块是用于初始化对象的(在创建对象时执行,每次创建对象时都执行),构造器是用于创建对象的。
相关问答
Q1: java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被...
java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中的。类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。
只有运行起来的程序才有内存一谈,编译只是把源代码翻译成字节码的过程,字节码是存放在硬盘上的文件,只有当字节码加载到JVM中即类被加载时,才有内存的概念,JVM才会为类中的静态常量分配内存。
类的加载时机:当这个类被实例化的时候如:new A();或者执行这个类里面的static(静态方法时)如:main方法,这个类才会被加载。你说的30个类它不会一下被加载,只有出现以上2种情况的时候才会加载。
Q2: Java构造器的特点
1、多个构造器每个类可以有一个以上的构造器。多个参数构造器可以有0个,1个以及多个参数。无返回值构造器没有返回值(与void明显不同,构造器不会返回任何东西,你别无选择。
2、Java类中构造器的特点如下: 名字与所在类同名; 构造器函数误返回值; 构造器总是伴随new操作而被调用,且不能对一个已经存在的对象调用构造函数来达到重置实例域的目的。
3、功能和作用的不同 构造器是为了创建一个类的实例。用来创建一个对象,同时可以给属性做初始化。这个过程也可以在创建一个对象的时候用到:Platypusp1=newPlatypus();相反,方法的作用是仅仅是功能函数,为了执行java代码。
Q3: 关于java构造器的疑问:构造器也是类的静态方法?
程序创建第一个对类的静态成员的引用时,就会加载这个类 我的理解:程序运行到这一行,加载该类.class文件,但是只是在方法区里的代码区里,由于没有new对象,所以堆区都没有分配空间,那你说构造器(构造方法)搁哪里分配。
静态的东西是属于类的,非静态的东西是属于实例的。没有静态的构造函数。静态的先执行,然后才是非静态的。
所以在写有参的构造方法时最好把无参的也写上 内存表现步骤 类加载到方法区 加载到方法区的同时。
能调用其他方法,构造器也是方法,不能方方法里定义方法。控制符没有要求。没有返回值,没有参数要求。
关于java静态代码和构造器和java静态代码分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







