首页编程java编程java static块什么时候执行(java static方法什么时候执行)

java static块什么时候执行(java static方法什么时候执行)

编程之家2023-10-1399次浏览

其实java static块什么时候执行的问题并不复杂,但是又很多的朋友都不太了解java static方法什么时候执行,因此呢,今天小编就来为大家分享java static块什么时候执行的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java static块什么时候执行(java static方法什么时候执行)

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

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

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

区别如下:

java static块什么时候执行(java static方法什么时候执行)

1、执行次数不同

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

2、作用不同

java static块什么时候执行(java static方法什么时候执行)

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

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

扩展资料:

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

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

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

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

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

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

在java中什么时候会用到static

当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static。

用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用

比如 person这个类里面有一个方法public static add(){}

那么可以直接用person类调用 person.add();当然也可以用下面的方法先出一个对象在调用也是可以

如果这个方法前面没有static比如 public add(){}

那么先要person p=new person();

然后用p.add();

类加载器在加载这个类的时候就已经实例化了这个类。

坏处:初始化加载,比较占内存,所以不经常用的方法,不建议加此关键字。

java static方法什么时候执行

当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static。

用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用

比如 person这个类里面有一个方法public static add(){}

那么可以直接用person类调用 person.add();当然也可以用下面的方法先出一个对象在调用也是可以

如果这个方法前面没有static比如 public add(){}

那么先要person p=new person();

然后用p.add();

类加载器在加载这个类的时候就已经实例化了这个类。

坏处:初始化加载,比较占内存,所以不经常用的方法,不建议加此关键字。

java中静态内部类什么时候加载

只有在加载内部类的时候才初始化

看懂以下的代码,那么对于类的加载,基本上就没问题了,最后类的加载过程的解释

public class Test6{

public static void main(String[] args){

new B();

new A.C();

}

}

class A{

private P p1= new P("A--p1");

static P p3= new P("A--p3");

public A(){

System.out.println("A()");

}

private P p2=new P("A--p2");

static{

new P("A--static");

}

{new P("A{...}");}

public static class C{

private P p1= new P("C--p1");

static P p3= new P("C--p3");

public C(){

System.out.println("C()");

}

private P p2=new P("C--p2");

static{

new P("C--static");

}

{new P("C{...}");}

}

}

class B extends A{

private P p1= new P("B--p1");

static P p3= new P("B-- p3");

public B(){

System.out.println("B()");

}

public P p2= new P("B-- p2");

static{

new P("B-- static");

}

{new P("B{...}");}

}

class P{

public P(String s){

System.out.println(s);

}

}

/*

有父类的情况

1.加载父类

1.1为静态属性分配存储空间并赋初始值

1.2执行静态初始化块和静态初始化语句(从上至下)

2.加载子类

2.1为静态属性分配存储空间

2.2执行静态初始化块和静态初始化语句(从上至下)

3.加载父类构造器

3.1为实例属性分配存数空间并赋初始值

3.2执行实例初始化块和实例初始化语句

3.3执行构造器内容

4.加载子类构造器

4.1为实例属性分配存数空间并赋初始值

4.2执行实例初始化块和实例初始化语句

4.3执行构造器内容

5回到main()

内部类的加载过程也一样

如果你还想了解更多这方面的信息,记得收藏关注本站。

java面试一般问什么 一般java面试都会问些什么问题java中account是什么意思,JAVA 编程创建Account 类模拟银行账户。