java静态类什么时候加载(java中静态内部类什么时候加载)
大家好,今天小编来为大家解答java静态类什么时候加载这个问题,java中静态内部类什么时候加载很多人还不知道,现在让我们一起来看看吧!
java 静态常量加载时机问题
1.只有运行起来的程序才有内存一谈,编译只是把源代码翻译成字节码的过程,字节码是存放在硬盘上的文件,只有当字节码加载到JVM中即类被加载时,才有内存的概念,JVM才会为类中的静态常量分配内存。
2.当类被加载时,其中的所有静态域都会被分配内存,静态方法会被装载。
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静态类在什么时候使用
/*
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中静态内部类什么时候加载的答案你都知道了吗?欢迎再次光临本站哦!