永发信息网

java 中静态代码和非静态代码块的区别!

答案:4  悬赏:60  手机版
解决时间 2021-03-17 07:09
java 中静态代码和非静态代码块的区别!
最佳答案
区别很简单:
静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;
非静态代码块,在创建对象的时候(即new一个对象的时候)执行,每次创建对象都会执行一次

希望你能理解 谢谢
全部回答
这些是一些比较底层的知识。在实际开发中用的不多,主要就是在面试题中会用到,首先先来什么用到静态语句块以及他的作用
静态编码是直接,java在编译的时候已经编译生成了,整个程序就用这一个编译文件,共享内存。非静态代码则是随参数二动态编译的代码段,内存分配是动态随机分配到的。例如一个静态变量,一开始就生成了,大家共享这个变量内存地址,而动态变量则是随你自己声明而加载的,不会程序一开始就生成了。
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
    一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
例:
//普通类
public class PuTong {
public PuTong(){
System.out.print("默认构造方法!-->");
}

//非静态代码块
{
System.out.print("非静态代码块!-->");
}

//静态代码块
static{
System.out.print("静态代码块!-->");
}

public static void test(){
{
System.out.println("普通方法中的代码块!");
}
}
}

//测试类
public class TestClass {


public static void main(String[] args) {
PuTong c1 = new PuTong();
c1.test();

PuTong c2 = new PuTong();
c2.test();
}
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
ipad air2屏幕某处轻压出现水波纹,是正常现
以前的我唱歌很好听,声音很甜美,高音不是问
一份在快递分拨中心做主办会计月薪四千多,另
2015流行语言排行榜揭晓
黄冈住房公积金管理中心英山办事处地址在哪,
梅园百盛地址有知道的么?有点事想过去
野生映山红树桩冠幅50公分,高60公分,价格是多
故渔者歌曰中的曰是什么意思
麦穗代表什么意思?
中国是不是没有奢侈化妆品?本土品牌
小鸡模拟器的默认下载位置是在手机上还是SD卡
赵河镇计划生育服务中心地址在哪,我要去那里
梦见棺材是什么意思周公解梦
宝马和华晨宝马有什么区别;另外介绍一下大众
有谁买过葛闻华老师《21天打造一流的个人品牌
推荐资讯
398除以21约等于多少
一人一张一年的考勤表怎么做,从明细表里面汇
三商化妆品遂宁NO.2地址在哪,我要去那里办事
明天要去垫下巴了,有人做过吗
武汉的武广是哪里的简称
宝庆足银银手镯8.8算贵吗?
天美健诊所地址在什么地方,想过去办事
班学生想要考入北邮大概需要多少分
求由抛物线y^2=2x与直线x-y=4所围成的图形的
spss统计分析中数量级差距比较大的数据怎么处
铲车吊车叉车都可以开的证是什么证?
有一地球同步卫星A与地面四个科研机构B、C、D
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?