java 代码块 作用_Java核心(三):代码块的作用

Java中用{ }括起来的代码段就是代码块,他分为如下几种类型

位置

作用

局部代码块

在方法当中使用,作用是控制变量的生命周期。

局部代码块的变量,只能在代码块内部使用,在执行结束后会被Java回收

构造代码块

在类的成员位置使用。

在每次执行构造方法前先执行构造代码块,

可以将多个构造方法中的相同的代码放到构造代码块中,对对象进行初始化.

静态代码块

在类的成员位置,代码块前添加static修饰符。

一般用于给类初始化,被静态修饰的代码块仅执行一次.

静态代码块、构造代码块、构造方法的优先级为:静态代码块 > 构造代码块 > 构造方法;

需要注意的是:

静态代码块和构造代码块,是在创建对象new的时候就开始执行了,匿名对象也可以调用。

静态代码块,一般用于某些需要在类执行之前就要执行的代码,和静态方法类似,优先级都高于类,两者的不同是静态方法需要手动通过类名.方法名来调用,而静态代码块是自动执行的,在加载类前会先执行类中的静态代码块。

对象实例化的时候,先检查类中是否有静态代码块,若有则先执行静态代码块,再检查是否有构造代码块,最后执行构造方法。

在继承关系中,对象实例化的时候,会先执行父类的静态代码块,然后是子类的静态代码块,然后再执行父类的构造代码块和父类无参构造方法,最后执行子类的构造代码块和无参构造方法。

举例一:

package com.study;

class Block {

static {

System.out.println("我是静态代码块"); //只在第一次调用的时候执行,优先级最高

}

{

System.out.println("我是构造代码块"); //每次被新对象调用时都执行,优先级在静态代码块之后

}

public Block() {

super();

System.out.println("我是无参构造方法");

}

public void method() {

System.out.println("我是成员方法");

}

}

public class APPTEXT {

public static void main(String[] args) {

{

String a = "我是局部代码块";

System.out.println(a);

}

//System.out.println(a); 报错局部代码块内的变量在代码块外不能访问,代码块执行完后就会被回收

System.out.println("********");

Block b = new Block();

System.out.println("********");

b.method();

System.out.println("********");

Block c = new Block();

System.out.println("********");

c.method();

}

}

程序执行结果,输出如下:

我是局部代码块

********

我是静态代码块

我是构造代码块

我是无参构造方法

********

我是成员方法

********

我是构造代码块

我是无参构造方法

********

我是成员方法

本博客转载自CSDN

作者:liuchonghua

原文:https://blog.csdn.net/liuchonghua/article/details/79977496

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

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

相关文章

【日常排雷】 .Net core 生产环境appsetting读取失败

关键词System.ArgumentNullException: String reference not set to an instance of a String. (Parameter s)1.问题出现某年某月某日,把webapi开发完了,也通过了swagger进行了单元测试。dotnet build dotnet publish -o publish dotnet .\publish\xx.We…

男人必看得5个故事

男人必看得5个故事 1、 情况不同 一只小猪、一只绵羊和一头乳牛,被关在同一个畜栏里。有一次,牧人捉住小猪,牠大声号叫,猛烈地抗拒。绵羊和乳牛讨厌牠的号叫,便说:「他常常捉我们,我们并不大呼小…

java1.8 lambda表达式_java1.8之Lambda表达式

行为参数化为了应对多变的需求,难道我们就要因为客户每提出一个需求,我们就要写一个方法去实现吗?显然这样做很冗余,而且维护性大大降低,这说明代码的设计不够好。好在已经有前人帮我们提出了行为参数化思想(即将一段代…

ABP vNext 自动注入,暗藏天坑如斯

导言我们在使用ABP vNext框架时,都知道该框架为我们实现了自动依赖注入(实现自动注入需要在项目里面创建Module类,并且将Module类上的DependsOn到相应的启动Module类或调用Module类,这步很关键)自动注入示例只要我们实现如下接口:…

Community Server系列之四:Ajax在CS2.0中的应用1

Ajax技术在时下很热门,当然在CS2.0中也不例外的运用到了此技术,CS2中没有使用任何第三方Ajax控件,这就给我们提供一个研究Ajax机理的好地方,现介绍一下在CS2中Ajax的一些简单应用,并分析应用的原理。 我想要研究此技术…

为什么人和人的差距这么大?

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份这是一篇去年写的旧文,不少读者从这篇文章中获得了一些方法和力量,于是再分享下:工作和生活中不光要埋头干活,还要抬头看天。思考总结方法论是提升认知的必备途…

github可以传java吗_如何在github上传本地项目代码(新手使用)----亲测使用

首先你要在github上申请一个账号然后你要下载一个git工具进入官网直接下载就行,下载完成后进入github首页,点击新项目new repository(新建),如下图所示:然后进入如下页面,主要填写红色圈起来的几个部分,如下…

英才评测 个人性格倾向 IT知识

网址http://www.01hr.com/testcenter/index_ccw.jsp?id9203&clid1135238483687 转载于:https://www.cnblogs.com/sutengcn/archive/2006/05/06/392790.html

【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0

在微服务场景中,身份认证通常是集中处理,这也是有别于单体应用一把梭哈的模式,其中,在微软微服务白皮书中,提供了两种身份认证模式:网关,没错,原话是If youre using an API Gateway,…

php多进程 写入文件_PHP多进程中使用file_put_contents安全吗?

TL;DRLinux下,PHP多进程使用 file_put_contents() 方法记录日志时,使用追加模式(FILE_APPEND),简短的日志内容不会重叠,即能安全的记录日志内容。file_put_contents() 使用 write() 系统调用实现数据的写入,write() 系…

虚拟机概述[转贴]

[摘要]描述什么是虚拟机、及运行在各种平台上的多种多样的虚拟机软件PXE2写著 你一定接触过各种各样的虚拟机,Vmware,VirtualPC,甚至JVM或是VBRunDLL,等等等等,在数字的信息世界里虚拟和现实是如此的难解难分。你一定接…

ABP vNext分布式事件总线RabbitMQ注意事项

[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext官方文档链接),基本使用可直接阅读官方文档,云怀不重复造轮子,只做官方未提到但重要的说明关键配置说明关键配置类:AbpRabbitMqE…

window运行php环境,Windows环境下使用phpstudy搭建php运行环境

首先在百度百科上对于phpstudy的定义是一个PHP调试环境的程序集成包。该程序包集成最新的ApachePHPMySQLphpMyAdminZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境,该程序不仅包括PHP调试环境,还包括了…

去除代码行号的一个小程序(控制台版本)

清风竹林发布了去除代码行号的一个小程序,确实方便大家收集一些文章代码,但个人认为象这样的小东东,要使广大网友能拿来就用,用.Net 2.0做成WinForm,有点贵族化了,于是动手整出个平民化的控制台版本,可以清除指定的文本…

. NET5实战千万高并发项目,性能吊打JAVA,C#排名万年老五,有望逆袭!

“秒杀活动”“抢红包”“微博热搜”“12306抢票”“共享单车拉新”等都是高并发的典型业务场景,那么如何解决这些业务场景背后的难点问题呢?秒杀系统中,QPS达到10万/s时,如何定位并解决业务瓶颈?明星婚恋话题不断引爆…

java不朽神迹,不朽的神迹 Eternal Legacy HD v1.0.8

游戏简介不朽的神迹是一个拥有全3D实时渲染的史诗战斗场面、360度自由调整的视角及丰富的动作特效的游戏。玩家将在游戏中探索壮丽的大陆,体验张力十足的战斗系统。游戏提供了多至3名角色同时参战,可从队伍成员中选择出战的队友,并且定义他们…

ABP vNext 审计日志获取真实客户端IP

背景在使用ABP vNext时,当需要记录审计日志时,我们按照https://docs.abp.io/zh-Hans/abp/latest/Audit-Logging配置即可开箱即用,然而在实际生产环境中,某些配置并不可取,比如今天的主角——客户端IP,记录用…

郭昶

郭 昶左直拳饰演《外来媳妇本地郎》中康家老二康祁宗的演员郭昶6月14日去世了,胃癌,享年50岁。这个消息真令人难以置信,不胜嘘唏。 《外来媳妇本地郎》在广东这边很受欢迎,每集结尾那带有浓厚岭南特色的粤曲小调在胡同小巷时有…

php 常用rpc框架,php的轻量级rpc框架yar

php的轻量级rpc框架yar目的:类方法的远程调用,也就是一个rpc请求。RPC本质上也是一个网络请求,既然是请求,对于效率来说,就需要考虑了。yar是基于http来做的。使用场景:多个项目共享model总的来说这种调用代价挺好的&a…

ABP vNext IOC替换原有Service实现

即 .NET IOC替换原有Service实现背景在使用ABP vNext时,该框架为我们实现了非常多的默认行为,以便开箱即用,但在实际使用中,我们总是需要根据自己的需求定制自己的服务,在.Net框架中,便提供了Service.Repla…