static{}静态代码块与{}普通代码块和构造代码块之间的区别

 

 

public class TestStatic {{System.out.println("构造代码块");}TestStatic() {System.out.println("构造函数代码块");}//类级别的初始化,只是在类加载的时候做一次static {System.out.println("static静态代码块");}
}

1.静态代码块,在虚拟机类加载的时候就会加载执行,而且只执行一次。
2.非静态代码块,在对象创建的时候执行,每次创建信对象都会执行一次。
3.执行顺序: 静态代码块 > 非静态代码块 > 构造方法

4.一个程序可以有多个静态和非静态代码块。相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,

一般在代码块中对一些static变量进行赋值。.

另外static块中只能使用static修饰的属性。

程序中的static{}块只是为了加载properties文件信息,这个加载只会被加载一次。

不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。

静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new

一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行

1.静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面。
2.静态代码块里面的变量都是局部变量,只在本块内有效。
3.静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他的类。
4.一个类中允许定义多个静态代码块,执行的顺序根据定义的顺序进行。
5.静态代码块只能访问类的静态成员,而不允许访问实例成员。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程编程(三)--创建线程之Thread VS Runnable

前面写过一篇基础的创建多线程的博文: 那么本篇博文主要来对照一下这两种创建线程的差别。 继承Thread类: 还拿上篇博客的样例来说: 四个线程各自卖各自的票,说明四个线程之间没有共享,是独立的线程。每一个线程平等。…

用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 答: 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。 代码 public class TestFinal {private static final StringBuffer a new S…

Intellij IDEA中maven更新不下来pom中的jar包,reimport失效

问题: Intellij IDEA中使用maven reimport包,一直失败 即使我将本地已存在的一个jar包目录删除了,pom文件那里也没飘红提示找不到 解决方法: maven设置中去掉离线下载。 Work offline:勾选上时不会走maven远程仓…

Java+XML+MVC框架StrutsCX简介[转]

StrutsCX是一个以Struts为基础的XML解决方案的框架,和Struts不同,它使用XML(确切的说是XSLT)作为表现层,而不是像Struts那样是以JSP作为表现层。 目前它的最新版本是0.9.5,这个也就意味着它还没有完全稳定和…

oracle高资源消耗sql,Oracle中定位重要(消耗资源多)的SQL

在分析SQL性能的时候,经常需要确定资源消耗多的SQL,总结如下: 1 查看值得怀疑的SQLselect substr(to_char(s.pct,在分析SQL性能的时候,经常需要确定资源消耗多的SQL,,总结如下:1 查看值得怀疑的…

@PostContruct注解的使用

PostConstruct是Java自己的注解. PostConstruct该注解被用来修饰一个非静态的void()方法. PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次. PostConstruct在构造函数之后执行,init()方法之前执行. 如果我们知道servlet的生命周期&#xff…

《Vim实用技巧》阅读笔记 --- 移动及跳转

1、在对实际行的操作之前加上g,即可对屏幕行进行操作,例如:gj表示向下移动一个屏幕行,g^表示移动到屏幕行的第一个非空白字符等等 2、Vim有两组面向单词正向及反向移动的命令: w 正向移动到下一个单词的开头b 反向移动…

oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle

金算盘财务软件后台数据库为Oracle,OA系统中虽然提供了金算盘财务软件的接口,但由于版本较低,无法直接采集金算盘财务软件的备份数据。我们发现,在已试验的金算盘财务软件的凭证表中,科目字段中既有科目编码也有科目名…

Unity GeometryShader(从一个线框渲染的例子开始)

GeometryShader这个概念,已经出现很久了,但由于性能不佳,所以使用的并不多。甚至移动平台根本就不支持。移动平台的硬件更新速度也是越来越快,GS的应用普及应该不会太远。就现阶段而言,GS来做一些辅助效果也是有一定用…

为什么SimpleDateFormat不是线程安全的?以及解决方法说明

一:概述 SimpleDateFormat 类主要负责日期的转换与格式化等操作,在多线程的环境中,使用此类容易造成数据转换及处理的不正确,因为 SimpleDateFormat 类并不是线程安全的,但在单线程环境下是没有问题的。 SimpleDateF…

《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...

概念 编译时编译时顾名思义就是正在编译的时候。那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码。(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言。比如Java只有JVM识别的字节码,C#中只有CLR能识别的MSIL。…

MQ介绍

一:MQ介绍 1:异步 2:解耦 3:削峰 二:MQ优缺点 三:Kafka和RabbitMQ和RocketMQ比较

转:A/B测试:实现方法

概念:http://www.aliued.cn/2010/09/13/ab-testing-basic-concept.html 我们先来看一个图: (注:感谢Algo提供本图。) 上图展示了 A/B 测试的实现原理。从左到右,四条较粗的竖线代表了 A/B 测试中的四个关键…

mac修改host

1.打开终端 2.输入sudo vi /etc/hosts 3.输入密码 4.进入文件hosts,然后按“i”,进入编辑模式 5.把你的host添加到最后 6.esc推出编辑模式 7.输入:wq,保存退出

语法之知识点的改进(Func/Action)

上一章我们讲到关于面向对象思想上C#和JAVA之差别。笔者分别从面向对象的三大特性入手。而本章主要讲一些C#改进的知识点。在.NET Framework 2.0之后出现很多新的知识点。这些知识点更是让C#在写法上更加的多样性。有些写法还真的让笔者觉得很有不错。由于这一部分的知识更多是…

linux取字符串的前面,Linux Shell 截取字符串

shell中截取字符串的方法很多${var#*/}${var##*/}${var%/*}${var%%/*}${var:start:len}${var:start}${var:0-start:len}${var:0-start}下面用几个例子展示一下:1) 获得字符串的长度语法:${#var}示例代码:str"http://www.fengbohello.xin…

idea修改新的git提交地址

更换git地址步骤 1、点击VCS 2、点击Git 3、点击Remotes 点击框中链接即可在右边看到一个铅笔字样的按钮,即可看到如图所示弹窗 点击铅笔(编辑),看到新的弹窗,链接已经被默认选中这时候粘贴新的git地址,点…

mac idea实现全局替换

点击Edit ----- Find ----- Replace in Path 例如要把项目中的cc替换为aa 点击Replace All