导航:首页 > 编程语言 > java静态块初始化

java静态块初始化

发布时间:2023-08-28 08:18:12

㈠ 关于java静态初始化器的一个小问题。

静态变量和静态块只在类加载的时候加载,有且只加载一次,所以创建s1时两个打印语句执行,但后面的s2创建时打印语句就不会再执行了

㈡ 关于Java显示的静态初始化

static{ cup1=new Cup(1);cup2=new Cup(2);} 这个就是java里的静态成员初始化语法。不是方法,只是给静态成员数据赋初始值。

Cup.cup1.f(99)可以看成两部分:
x = Cup.cup1 这是取出Cup类中的静态成员数据cup1,这里称之x

x.f(99) 这是调用对象x的成员函数f

㈢ java中静态初始化和动态初始化

静态初始化就是static,动态初始化就是new

所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间,

我觉得已经够通俗的了

㈣ java 静态数据初始化

从主类public class StaticInitialization 中的开始main函数开始。
在初始化对象时,开始 静态数据的初始化
譬如:
执行完
public class StaticInitialization {
public static void main(String[] args) {
System.out.println(
"Creating new Cupboard() in main");
后,然后
执行new Cupboard();这段代码
这时,程序就会跳到Cupboard这个类中,当实例化Cupboard这个类的对象的时候,Cupboard这个类的里面静态数据也同时被处理。

剩下的代码都一样。

㈤ 关于JAVA中static初始化问题

java虚拟机在首次主动使用类型的时候才会初始化(lazy-load的形式),主动使用包括以下6种情况

1. 创建类的实例
2. 调用类的静态方法
3. 操作类的非常量静态字段(非final static)
4. 调用特定的反射方法
5. 初始化一个类的子类
6. 指定一个类为虚拟机启动时的初始化类

所以说,你必须主动使用到这个类,这个类才会被初始化,这就能解释第一次有输出,而第二次没有输出的情况了

另外,值得一提的是,加载和初始化不是一个概念,比如,在main函数中写
Table a = null;
一样不会有输出。。Table类被加载了但是没有被初始化,因为这不属于上述6种“主动使用”情况之一,不信试试。。。

㈥ java静态初始化器对什么进行初始化

java静态初始化器对static进行初始化。

所谓的静态和动态是相对于程序运行是而言的,静态是在程序编译时就初始化好了的,动态初始化是在程序运行是才动态分配内存空间。

static变量初始值一定要是常量。static变量中文名叫静态变量。位置静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在。

作用:

对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。

对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内)。

但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同,且两次调用间变量值始终保持一致;必须注意,静态局部变量只能初始化一次,这是由编译器来保证实现。

对于静态成员变量来说,在C++中,在类的定义中以static声明的成员变量属于类变量,也即在所有类实例中共享,与之相对的就是过程变量。

㈦ java 中静态内部类字段什么时候初始化

不是的,只有在加载内部类的时候才初始化 //有问题可以继续交神瞎租流x0dx0a楼主只要看懂一下的代码x0dx0a那么对于类的加载x0dx0a基本上就没问神埋题了x0dx0a最后类的加载过程的解释x0dx0apublic class Test6 {x0dx0a public static void main(String[] args){x0dx0a new B();x0dx0a new A.C();x0dx0a }x0dx0a}x0dx0ax0dx0aclass A{x0dx0a private P p1 = new P("A--p1");x0dx0a static P p3 = new P("A--p3");x0dx0a public A(){x0dx0a System.out.println("A()");x0dx0a }x0dx0a private P p2 =new P("A--p2");x0dx0a static{x0dx0a new P("A--static"); x0dx0a }x0dx0a {new P("A{...}");}x0dx0a x0dx0a public static class C {x0dx0a private P p1 = new P("C--p1");x0dx0a static P p3 = new P("C--p3");x0dx0a public C(){x0dx0a System.out.println("C()");x0dx0a }x0dx0a private P p2 =new P("C--p2");x0dx0a static{x0dx0a new P("C--static"); x0dx0a }x0dx0a {new P("C{...}");}x0dx0a }x0dx0a}x0dx0ax0dx0aclass B extends A {x0dx0a private P p1 = new P("B --p1");x0dx0a static P p3 = new P("B -- p3");x0dx0a public B() {x0dx0a System.out.println("B()"); x0dx0a }x0dx0a public P p2 = new P("B -- p2");x0dx0a static {x0dx0a new P("B -- static");x0dx0a }x0dx0a x0dx0a {new P("B{...}");}x0dx0a}x0dx0ax0dx0aclass P {x0dx0a public P(String s) {x0dx0a System.out.println(s);x0dx0a } x0dx0a}x0dx0a/*x0dx0a x0dx0a有父类的情况x0dx0a1. 加载父类x0dx0a 1.1 为静态属性分配存储空间并赋初始值 x0dx0a 1.2 执行静态初始化块和静态初始化语句(从上至下)x0dx0a2. 加载子类x0dx0a 2.1 为静态属性分配存储空间x0dx0a 2.2 执行静态游兆初始化块和静态初始化语句(从上至下)x0dx0a3. 加载父类构造器x0dx0a 3.1 为实例属性分配存数空间并赋初始值 x0dx0a 3.2 执行实例初始化块和实例初始化语句x0dx0a 3.3 执行构造器内容x0dx0a4. 加载子类构造器x0dx0a 4.1 为实例属性分配存数空间并赋初始值 x0dx0a 4.2 执行实例初始化块和实例初始化语句x0dx0a 4.3 执行构造器内容x0dx0a5 回到main()x0dx0a内部类的加载过程也一样x0dx0a*/

阅读全文

与java静态块初始化相关的资料

热点内容
订购命令英语 浏览:653
java正则网址 浏览:777
程序员上班可不可以自学 浏览:428
空调压缩机排空气视频 浏览:283
centos72nginxphp 浏览:184
游戏平台用什么服务器好 浏览:753
保密柜里的图片是加密文件吗 浏览:909
php判断最后一个字符 浏览:635
pdf脑区 浏览:635
at命令已弃用 浏览:490
买点卖出指标源码 浏览:612
36位单片机 浏览:428
英雄联盟山东服务器地址 浏览:212
sd服务器什么意思 浏览:617
thinkphp去indexphp 浏览:62
电脑显示连接未加密 浏览:193
zao服务器怎么修改 浏览:244
php使用jsapi调起支付 浏览:891
vivo云服务器网 浏览:722
cmd远程连接命令行 浏览:961