Java编程中的4种代码块详解
作者:编程之路 发布时间:2022-01-04 03:10:20
标签:Java编程,代码块
在Java编程中,代码块就是指用“{}”括起来的代码。下面看一下这四种代码块。
1、普通代码块
就是指类中方法的方法体。
public void xxx(){
//code
}
2、构造块
下面用“{}”括起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数(包括有参和无参的)执行。 构造块中定义的变量是局部变量。
public class Client {
{//构造代码块
System.out.println("执行构造代码块");
}
publicClient() {
System.out.println("执行无参构造函数");
}
publicClient(String string) {
System.out.println("执行有参构造函数");
}
}
3、静态块
下面用static"{}"括起来的代码片段,只会在第一次加载此类时,仅执行一次,并且静态块优先于构造块执行。
public class Demo
{
public Demo()
{
System.out.print("默认构造方法!-->");
}
//构造代码块
{
System.out.print("构造代码块!-->");
}
//静态代码块
static
{
System.out.print("静态代码块!-->");
}
public static void test()
{
{
System.out.println("普通方法中的代码块!");
}
}
}
public static void main(String[]args)
{
Demo d = new Demo();
d.test();
}
/*
运行输出结果是:
静态代码块!-->构造代码块!-->默认构造方法!-->普通方法中的代码块!
*/
4、同步代码块
下面使用synchronized(obj){}括起来的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码写在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。 同步代码块须写在方法中。
class Ticket implements Runnable //extends Thread
{
object obj=new object();//共享对象,用来记录是否有其它进程在访问
private static int tick=100;
public void run() /*不能在这写同步函数,否则其它线程用不了,需要单独写一个同步函数*/
{
while(true)
{ synchronized(obj)
{
if(tick>0)
{
try
{
Thread.sleep(10); /*每次运行就沉睡一下*/
}
catch(Exception e)
{
}
System.out.println(Thread.currentThread().getName()+"sale:--"+tick--);
}
}
}
}
}
来源:https://www.cjavapy.com/article/4/


猜你喜欢
- 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多
- AndroidStudio终于出3.0正式版了,内置了kotlin(虽然我安了插件一直能用)。一直忍着没敢下rc版的好奇猫,总算装了正式版。
- 一、包装类概述Java有8种基本数据类型:整型(byte、short、int、long)、浮点型(float、double)、布尔型bool
- 一、什么是委托呢?听着名字挺抽象,确实不好理解。面试官最喜欢考察这个,而且更喜欢问:“委托和事件有何异同?”。如果对一些知识点没有想明白,那
- 使用System.Threading.Thread类可以创建和控制线程。常用的构造函数有: // 摘要: // 初
- 1. 编写目的最简单的例子,Springboot整合Redis。2. 详细过程pom 文件添加依赖 <!-- https:
- 本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下创建Image的UI组件,在Image下新建一个B
- 如下所示:class B {public B() { super(); System.out.println(&qu
- 在PDF文档中,图层可以使部分内容选择性地被隐藏或显示。通过添加图层,我们可以将文本、图片、表格等元素精确定位于页面指定位置,并可将这些元素
- 目录前言继承Thread实现Runnale接口Callable线程池常见的4种线程池。总结前言在java中,如果每个请求到达就创建一个新线程
- 一、概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射
- 1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上
- 返回值转成JSONString的处理主要需求描述有些返回值中的null需要转换成“”或[],另外有些
- /** * 快速计算二进制数中1的个数(Fast Bit Counting) * 该算法的思想如下: * 每次将该数与该数减一后的数值
- 系统自带的VideoView有些视频格式不支持,那么我们可以用第三方实现的VideoView替代系统的来播放视频,比较流行的有ijkplay
- 函数InternetGetConnectedState返回本地系统的网络连接状态。语法:BOOL InternetGetConnectedS
- Android WebView或手机浏览器打开连接问题解决办法总结1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用
- 一、JAVA常用APIjava.lang.Math提供sin, cos, tan, exp, log, log10 等类方法,PI和E等类字
- Mybatis 复杂对象resultMap数据对象含有普通属性,一对一对象,一对多对象(2种情况:单一主键和复合主键)下面是resultMa
- public class Count { public static void main(String[] args) { int i =