重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

java怎么构造代码块,java构造方法代码

Java中,构造代码块和构造函数有什么区别?

构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块,只要对象一建立,就会调用这个代码块。

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都PE包装袋等,在网站建设公司营销型网站、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

构造函数:是给与之对应的对象进行初始化,它具有针对性。

Java的静态块和初始化块分别何时执行?有什么区别?

静态初始化块:当类第一次加载时执行。

非静态初始化块:非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被执行。

区别如下:

1、执行次数不同

静态块只执行一次,初始化块可以执行多次。

2、作用不同

静态初始化块仅能初始化类变量,即static修饰的数据成员。

非静态初始化块可以初始化类的实例变量。

扩展资料:

使用Java静态代码块注意事项:

1、它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。

2、静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。

3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。

4、一个类中可以有多个静态代码块。

5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)(变量、初始化块)构造器。

Java构造函数,构造代码块和静态代码块的区别

构造函数:执行时间比构造代码块时间晚,也是在对象初始化的时候运行。没有返回值,构造函数名称和类名一致。

构造代码块:执行时间比静态代码块晚,比构造函数早,和构造函数一样,只在对象初始化的时候运行。没有名字、参数和返回值。

静态代码块:最早执行,类被载入内存时执行,只执行一次。没有名字、参数和返回值,有关键字static。

静态代码块只会在类被载入内存时加载一次,是最先执行的,然后是构造代码块,最后才是构造函数。构造代码块和构造函数都是在对象创建的时候执行,有几个对象就会执行几次。

JAVA构造代码块所在区域

一.简介

首先说一下,Java中有哪些代码块.

普通代码块

就是在方法后面使用"{}"括起来的代码片段,不能单独执行,必须调下其方法名才可以执行.12

静态代码块

在类中使用static修饰,并使用"{}"括起来的代码片段,用于静态变量的初始化或对象创建前的环境初始化.12

同步代码块

使用synchronize关键字修饰,并使用"{}"括起来的代码片段.它表示在同一时间只能有一个线程进入到该方法快中,是一种多线程保护机制.12

构造代码块

在类中没与任何的前缀或后缀,并使用"{}"括起来的代码片段.12

简单的例子:

public class Client {

{//构造代码块

System.out.println("执行构造代码块");

} public Client() {

System.out.println("执行无参构造函数");

} public Client(String string) {

System.out.println("执行有参构造函数");

}

}12345678910111213

这是一丢按非常简单的代码,它包含了构造代码块,无参构造,有参构造.我先看一个问题,我们知道代码块不具有独立执行的能力,那么编译器是如何处理构造代码块的呢?很简单,编译器会把构造代码块插入到每个构造函数的最前端.这样 上面的代码就等同于:

public class Client { public Client() {

System.out.println("执行构造代码块");

System.out.println("执行无参构造函数");

} public Client(String string) {

System.out.println("执行构造代码块");

System.out.println("执行有参构造函数");

}

}12345678910111213

二.特性与应用

基本的理解后,我们再来看下其和构造函数的执行顺序.由于是插入到构造函数的的前面,自然在通过new关键字生成一个实例的时候会先执行构造代码块,然后在执行其他代码(注意:构造代码块不是在构造函数之前运行,而是依托于构造函数).接着我们来看一下两个主要的应用场景:

1.初始化实例变量

如果每个构造函数都需要初始化变量,即可通过构造代码块来实现.从而取代在每个构造函数调用初始化实例变量的方法.12

2.初始化实例环境

一个对象必须在适当的场景下才能存在,如果没有适当的场景,则就需要在创建对象的时候创建此场景.12

以上两个场景都是利用了构造代码块的两个特性:

1.在每个构造函数中都运行

2.在构造函数中它会首先运行123

三.构造代码块足够聪明

首先看一段代码,使用构造代码块做对象计数器.

public class Client { public static int count = 0;

{

count++;

} public Client() {

} public Client(int i) { this();

} public Client(String string) {

} public static void main(String[] args) { new Client(); new Client(1); new Client("1");

System.out.println(Client.count);

}

}123456789101112131415161718192021222324

这个代码真的达到我们预期的效果吗?你可能会对this()产生了质疑.

答案是:3.

显然Java编译器是足够聪明的.这是因为,在插入到每个构造函数中的时候,有个例外,就是如果遇到this关键字(也就是构造函数调用自身其他的构造函数时)不插入构造代码块.

那为什么编译器这么聪明呢?这是因为构造代码块的出现就是为了提取构造函数的共同量,减少各个构造函数的代码而产生的.

四.总结

灵活适当的使用构造代码块会让你的代码更加的简约和清晰.代码的质量自然很高很多,逼格也高了许多,有没有.

最后还有一点需要注意的,千万不要认为this是特殊情况,那super也会类似处理.其实不会,在构造代码块的处理上,super方法没有任何特殊的地方.编译器只是把构造代码块插入到super方法之后执行而已.

java构造代码块的作用是什么?

//构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。

public class CodeBlock02

{

{

System.out.println("第一代码块");

}

public CodeBlock02(){

System.out.println("构造方法");

}

{

System.out.println("第二构造块");

}

public static void main(String[] args){

new CodeBlock02();

new CodeBlock02();

new CodeBlock02();

}

}

/**

执行结果:

第一代码块

第二构造块

构造方法

第一代码块

第二构造块

构造方法

第一代码块

第二构造块

构造方法*/

Java常见代码块的作用与区别

1. 局部代码块

作用在方法当中,作用是控制变量的生命周期:

public void show(){

{

System.out.println("局部代码块运行!");

}

}123456

在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间。因此就有了局部代码块。

2. 构造代码块

作用在类的定义Body中,作用是给类的部分字段统一初始化:

public class Apple {

private String size;

//构造代码块

{

System.out.println("构造代码块运行!");

size = "E";

}

}

12345678910

构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。所以理所当然的,构造代码块在构造函数之前执行。

3. 静态代码块

作用有两个:

(1)给类的静态变量赋值;

(2)声明静态变量;

作用在类的Body中,对类中的静态变量初始化:

public class APP {

static int x, y; // 静态变量

static {

x = 5; // 给静态变量x赋值

}

public static void myMethod() {

y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值

}

public static void main(String[] args) {

x--;

myMethod();

System.out.println(x + y + ++x);

}

}

输出:23


网页标题:java怎么构造代码块,java构造方法代码
标题路径:http://cqcxhl.cn/article/dsiigdc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP