首页编程java编程java静态类什么时候加载(java中静态内部类什么时候加载)

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

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

大家好,今天小编来为大家解答java静态类什么时候加载这个问题,java中静态内部类什么时候加载很多人还不知道,现在让我们一起来看看吧!

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

java 静态常量加载时机问题

1.只有运行起来的程序才有内存一谈,编译只是把源代码翻译成字节码的过程,字节码是存放在硬盘上的文件,只有当字节码加载到JVM中即类被加载时,才有内存的概念,JVM才会为类中的静态常量分配内存。

2.当类被加载时,其中的所有静态域都会被分配内存,静态方法会被装载。

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

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

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

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

public class Test6{

public static void main(String[] args){

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

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静态类在什么时候使用

/*

static(静态\修饰符)

1. static修饰成员变量:如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。

静态成员变量的访问方式:

方式1:可以使用对象进行访问。

格式:对象.变量名。

方式二:可以使用类名进行访问。

格式:类名.变量名;

注意:

1.非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。

2.千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候

才使用static修饰。

static修饰成员变量的应用场景:如果一个数据需要被所有对象共享使用的时候,这时候即可好实用static修饰。

2. static修饰成员函数:

*/

class Student{

static String name;//非静态成员变量

static String country="中国";//静态的成员变量

public Student(String name){

this.name= name;

}

}

class Demo10{

public static void main(String[] args)

{

Student s1= new Student("狗娃");

Student s2= new Student("狗剩");

//System.out.println("国籍:"+ Student.country);

System.out.println("名字:"+ s1.name);

System.out.println("名字:"+ s2.name);

}

}

java static方法什么时候执行

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

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

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

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

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

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

然后用p.add();

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

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

文章分享结束,java静态类什么时候加载和java中静态内部类什么时候加载的答案你都知道了吗?欢迎再次光临本站哦!

8670m 8670米合多少千米java artifact是什么意思,maven中的groupId和artifactId到底指的是什么