当前位置: 首页 > news >正文

Java中的4种代码块

一、普通代码块

  直接在一个方法中出现的{}就称为普通代码块,例子程序如下:

  public class CodeDemo01{

  public static void main(String[] args){

  //普通代码块

    {

      int x = 10;

      System.out.println("x=" + x);

    }

    int x = 100;

    System.out.println("x=" + x);

    }

  }

  二、构造代码块

  直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:

  public class CodeDemo02{

    public CodeDemo02(){

      System.out.println("========这是构造方法=========");

    }

    //这是构造代码块,而且在new对象时,构造代码块优先构造方法执行

    {

      System.out.println("=========这是构造块!=========");

    }

    public static void main(String[] args){

      new CodeDemo02();

      new CodeDemo02();

    }

  }

  三、静态代码块

  使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,例子程序如下:

  public class CodeDemo03

  {

    static{

      System.out.println("这是主类中的静态代码块!");

    }

    public static void main(String[] args){

      new Demo();

      new Demo();

      new Demo();

    }

  }

  class Demo

  {

    static{

      System.out.println("这是Demo类中的静态代码块!");

    }

    {

      System.out.println("这是Demo类中的构造块!");

    }

    public Demo(){

    System.out.println("这是构造方法!");

    }

  }

  静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!

  四、同步代码块

  同步代码块主要出现在多线程中。

  package cn.sunzn.synchronize;

  public class SynchronizeCode {
     public static void main(String[] args) {
         new Thread() {
             public void run() {
                 while (true) {
                       System.out.print("同步"); System.out.println("代码");
                 }
             };
         }.start();
         new Thread() {
             public void run() {
                 while (true) {
                     System.out.print("Synchronize");
                     System.out.println("Code");
                 }
             };
         }.start();
     }
  }

转载于:https://www.cnblogs.com/xuecanmeng/p/5204043.html

相关文章:

  • 什么是沾包?如何处理?
  • 继续測试,一如既往的稳定
  • 【< TCP专题之三次握手四次挥手>】
  • SQL 设置空值(NULL)
  • 【<TCP专题>】
  • 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化...
  • 【<TCP 流量控制和拥塞控制专题>】
  • bluetooth-蓝牙事件监听
  • Service详解
  • 【<HTTP专题>】
  • Thinkpad机器BIOS下清除安全芯片和指纹数据的方法
  • 【<常见加密算法及实现>】
  • css3 box-shadow让我们实现图层阴影效果
  • 讲一下并发和并行?
  • JavaScript中call,apply,bind方法的总结
  • [case10]使用RSQL实现端到端的动态查询
  • 【Leetcode】104. 二叉树的最大深度
  • Docker下部署自己的LNMP工作环境
  • Idea+maven+scala构建包并在spark on yarn 运行
  • js递归,无限分级树形折叠菜单
  • js写一个简单的选项卡
  • ReactNative开发常用的三方模块
  • vue 个人积累(使用工具,组件)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • webgl (原生)基础入门指南【一】
  • win10下安装mysql5.7
  • 成为一名优秀的Developer的书单
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于字符编码你应该知道的事情
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 聊聊flink的BlobWriter
  • 浅谈web中前端模板引擎的使用
  • 实现菜单下拉伸展折叠效果demo
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序设置上一页数据
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 做一名精致的JavaScripter 01:JavaScript简介
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​业务双活的数据切换思路设计(下)
  • # Java NIO(一)FileChannel
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Linux(帮助手册)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (转)c++ std::pair 与 std::make
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core 项目指定SDK版本
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net wcf memory gates checking failed
  • .net web项目 调用webService
  • .NET开发不可不知、不可不用的辅助类(一)