java static 什么时候初始化,java 中静态内部类字段什么时候初始化
大家好,今天小编来为大家解答以下的问题,关于java static 什么时候初始化,java 中静态内部类字段什么时候初始化这个很多人还不知道,现在让我们一起来看看吧!
在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的静态块和初始化块分别何时执行有什么区别
静态初始化块:当类第一次加载时执行。
非静态初始化块:非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被执行。
区别如下:
1、执行次数不同
静态块只执行一次,初始化块可以执行多次。
2、作用不同
静态初始化块仅能初始化类变量,即static修饰的数据成员。
非静态初始化块可以初始化类的实例变量。
扩展资料:
使用Java静态代码块注意事项:
1、它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
2、静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
4、一个类中可以有多个静态代码块。
5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
java static 什么时候初始化和java 中静态内部类字段什么时候初始化的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!