关于java静态代码块的详细运行过程问题
发布网友
发布时间:2022-05-16 17:31
我来回答
共4个回答
热心网友
时间:2023-11-06 11:28
废话,静态块先执行,类加载的时候就执行,一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述!
不是说运行到Chinese.sing();时输出了static code,Chinese.sing();是什么?是方法调用,Chinese是类,sing是该类的静态方法,你要想调用sing方法,首先第一步就是类加载,类都没加载,Java虚拟机都不认识他,运行个屁呀!
所以第一步是类加载,注意!static块,也就是静态块,在类加载的时候就执行了,而且只执行一次,因为不可能进行第二次类加载,从这个意义上说,静态的成员是第一时间执行的,然后才轮到别人!
热心网友
时间:2023-11-06 11:28
static 块仅在该类被加载时执行一次
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Static block initialized.");
b = a * 4;
}
public static void main(String args[]){
meth(42);
}
}
一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。 注意:在一个static 方法中引用任何实例变量都是非法的。
下面是该程序的输出:
Static block initialized.
x = 42
a = 3
b = 12
热心网友
时间:2023-11-06 11:29
静态块在实例化类 自动调用 而不要自己写代码调用 同时他只调用一次
当没有在实例化的时候 只要你调用任何静态方法 或者是静态的属性 都会自动调用静态块、
调用的机制也是一样 只调用一次 在调用静态的任何对象之前调用
热心网友
时间:2023-11-06 11:29
static
{
count =2;
System.out.println("static code");
}
这是首先执行啊!没写方法名,就像在一条分叉路口,不管你选择哪条路(方法)你总要在分叉口经过吧!
关于java静态代码块的详细运行过程问题
废话,静态块先执行,类加载的时候就执行,一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述!不是说运行到Chinese.sing();时输出了static code,Chinese.sing();是什么?是方法调用...
Java静态代码块何时执行
Java静态代码块在类首次加载时执行。一次加载,执行一次。其主要用途在于初始化全局共享的资源或设置初始值,确保所有对象使用相同的预设状态。在类实例化或被调用前,静态代码块确保所需资源已准备就绪,从而避免了在每个对象创建时重复执行初始化操作。简而言之,静态代码块在类初次被加载到内存时执行,用于...
关于JAVA的一道静态代码块的方法执行顺序的问题,输出什么
Invalid argument to operation ++/-- 建议改成如下:static {int x = 5;}static int x, y;public static void main(String args[]) {x--;myMethod();System.out.println(x + y + ++x);}public static void myMethod() {y = (x++) + (++x);}输出结果为:3 ...
静态代码块什么时候执行
静态代码块在Java中会在类加载时执行一次。详细解释如下:静态代码块是Java中一种特殊的代码块,它在类加载时执行,并且只执行一次。静态代码块在类加载到内存时自动执行,不需要创建类的实例。这意味着无论创建多少个类的实例,静态代码块都只会被执行一次。当JVM开始加载类时,静态代码块就会被执行,...
java中详解静态代码块,构造代码块,构造方法。求简单易懂的解释
静态代码块:只要一用到某个类,那么这个类的静态代码块就先执行,比如:public class Dog(){ int i = 0; static { i = 1; } public Dog(){ i = 2; } }当你new 一个Dog()对象时,首先i= 1 会执行,然后才执行 public Dog(){}这个方法。pulic Dog() 是...
java 静态代码块中方法执行的一个问题,求解释
static{},这段代码名为静态代码块, {}中的内容会在该类加载时执行,作用是给全局的静态变量,或者常量导入初始值.可以调用其他static方法,目的都是赋值.System.out.printlt(x=3);可以执行,是因为在括号中给x赋值了.如果你想更加了解静态代码块的作用与含义,百度一下静态代码块就知道了.这里就不多做...
什么是静态代码块?static静态代码块使用教程
在文件3-18,Example09.java中,main方法里创建了两个Car对象,c1和c2,看似平常的代码背后,却揭示了静态代码块的微妙之处。当程序运行时,如图3-10所示,你会注意到一个关键点:静态代码块的内容只被执行了一次,无论创建了多少个Car对象。这正是静态代码块的独特之处——它仅在类加载时执行,...
Java静态初始化块的问题
1、首先打开电脑上的eclipse软件,配置好jdk的,如下图所示。2、点击左上角的file,点击new,点击Javaproject,如下图所示。3、新建一个class文件,自己取名字,勾引main选项,自动调用main方法。4、然后输入代码arrint[] arr = new int[5]; //动态初始化,在内存中开辟连续的5块空间。5、这时控制台...
java静态代码块什么时候执行
在这个类第一次被调用或实例化的时候就会被执行。静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
java初学提问 关于执行过程 和继承的一些问题,请各位大虾帮忙 谢谢_百度...
1.首先,你的main方法是写在Demo类里的,当运行这个main方法时,执行A a = new A()时;需要new一个A类的对象,在new出这个对象之前,JVM会在堆中装载A类,这时候,会初始化A类的所有静态成员,所以static会被执行一次,然后执行new A()。不过,所有静态成员都只会初始化一次。(静态成员...