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

代码块 —— 外在定义 及 主要作用

Java类的组成部分

Java类主要组成部分:成员变量,成员方法,构造构造,代码块,内部类

代码块】是一个完整Java类的主要组成部分之一,类的组成部分各有特性,代码中的逻辑连接着各区域,之间包含严谨,分工明确。分清这些界限,功能的实现,我越来越发现代码中的逻辑性极佳,代码繁琐但明晰,织布着独特代码的世界

代码块

性质定义

人话:使用{} 定义的一段代码称为代码块

代码块定义的位置以及被修饰关键字,可分为四种代码块
局部代码块(普通代码块) , 实例代码块(构造代码块), 静态代码块
同步代码块 —>涉及多线程

局部代码块

初始而言,{}所包含的代码段便 即可称为代码块,局部代码块主要指每个创建的方法下 的代码区域
最典型的便是main方法的代码区域段,便是局部代码块

publicstaticvoidmain(String[]args){//局部代码块inta=10;intb=20;//main方法运行完后,(局部)变量立即(卸载)失效//……}publicvoidMethod(){//局部代码块inta=15;intb=25;//该方法运行完,立即失效//……}

“局部”,不是“全部”,且主要指的是方法的代码段,便意味着该局部代码块中 定义的(局部)变量作用域只在该方法内有效,方法结束后便立即失效
局部代码块内部的代码段,结束后卸载失效,不会影响外部代码。这样处理对整个项目代码来说:提高内存利用率和代码的可读性

代码块 —— 初始化

局部代码块中变量定义时,必须就地初始化。
而类中定义成员变量时,可选择后续调用时初始化,在之前,初始化的方式有:构造方法,其他方法(get,set 方法)有便·利·性,亦有局·限·性

便利性

即是以上所提的初始化方式,是为那些 成员变量私人定制的
这些方式都是属于 代码中“方法”的定义范畴,如何私人定制?利用了“方法”中重载这个特性
创建多个对象时,无疑就是为了每个对象都可实现独自的功能,不可能多个对象是为了实现毫无变化的功能(即使目的一样,但逻辑不一样),这样多个对象才有存在的意义。

在每个对象中 有些要初始化的 可能与其他对象初始化方式一样(引用相同的重载方法,初始化的值不一样),也有有初始化的方式不一样,引用不同的重载方法,即是私人定制

局限性

私人定制的好处在于可根据实时情况来初始化不同的值,在成员变量创建时,其初始化的值在多个对象里,可能有些初始化的值不变,如果用那些“私人定制”的方式初始化,就要在不同的对象中初始化多次,那么此时就需要“公共定制”,
把那些初始化值一样的,在类里面定义,且定义一次(公共定制),可作用于不同对象,那些值不同的,就在不同对象里私人定制
"公共定制"的初始化方式根据成员变量的种类可分为两种,即实例成员(非静态)和静态成员分开初始化,对应的方式为:实例代码块&&静态代码块

实例代码块

不加任何修饰,也不在任何方法之下,只在 类 下,单纯的一个 {} 可初始化任何变量(静态 & 非静态 都可) 一般修饰 非静态成员变量!

publicclassTestprivateStringname;privateStringgender;privateintage;privatedoublescore;privatestaticStringclassRoom;{//实例代码块this.name="bit";this.age=12;this.gender="man";System.out.println("实例代码块 被 调用了");}

静态代码块

”static + {}“ 被static修饰的代码块 显而易见,一般初始化 静态成员变量!

static{classRoom="bit306";System.out.println("静态代码块 被 调用了");}

代码块 —— 执行顺序

可以总结的是:

Java中,初始化成员的方式,在代码编写时就只有这些:构造方法,静态代码块,实例代码块,普通方法(get & set 之类)

那么,这些初始化方式同时存在,应按照什么顺序来执行

publicstaticvoidmain(String[]args){System.out.println();System.out.println("======================");System.out.println();object try1=newobject();System.out.println();System.out.println("======================");System.out.println();object try2=newobject();System.out.println();System.out.println("======================");System.out.println();}/* 执行结果: 静态代码块 被 调用了 ====================== 实例代码块 被 调用了 该无参数创造方法 被调用了 ====================== 实例代码块 被 调用了 该无参数创造方法 被调用了 ====================== **/

说明静态修饰的东西,包括静态代码块,都是属于类的,储存在 方法区,被所有对象共享
此而,静态代码块最先被执行,并在main之前,且还有一个特性 就是和类一样,其生命周期之内,只被加载一次,因而这两个对象执行时,静态代码块再也没被执行

在执行结果分析看来,执行顺序为:
静态代码块 —> 实例化代码块 —> 创造方法 —> 其它方法(get,set等)

“静态代码块” “实例代码块” “私人定制方法” 这三个初始化方法无论 代码顺序 如何,都为上面的执行顺序。 私人定制的方法中,创造方法有限,其他的方法则是按创建顺序前后来执行

结语

以上结论带有我自己对该内容理解而总结得出,可能分析不全,用词不适,总结不当,接受批评,欢迎指出

http://www.jsqmd.com/news/696780/

相关文章:

  • Qwen3-ASR-0.6B实战案例:为盲人用户开发语音笔记助手(含方言支持)
  • 机器学习算法核心六问:从原理到实践
  • Node.js项目快速搭建终极指南:Koa-Generator实战手册
  • YOLOv11改进 | Neck篇 | CVPR最新低照度图像增强模块HVI改进YOLOv11(有效涨点)
  • 【高届数机械工程会议】第十二届机械工程、材料和自动化技术国际学术会议(MMEAT 2026)
  • Phi-3.5-Mini-Instruct Streamlit部署优化:模型预加载+缓存加速方案
  • Qianfan-OCR快速上手指南:JPG/PNG/WEBP多格式文档图片解析三分钟搞定
  • 别再死磕PID了!用Python+MPC给机械臂做个‘未来视’控制器(附ROS2实战代码)
  • Qwen3.5-4B-AWQ代码实例:Python调用API+WebUI交互+日志排查全流程
  • Real Anime Z开源价值解读:Z-Image底座+Real Anime Z微调的协同优势
  • 神经网络常见层Numpy封装参考(4):优化器
  • LM多场景落地案例:婚纱摄影公司AI试衣间原型系统构建过程
  • ARGO:开源本地优先AI智能体平台部署与应用全指南
  • FLUX.1-Krea-Extracted-LoRA部署教程:CUDA12.4+PyTorch2.5.0环境兼容性验证
  • Qwen3-ASR-0.6B实际作品集:跨语言会议纪要+中英双语字幕生成
  • Spring AI 实战教程(一):基础对话与流式输出 —— 让你的应用接入大模型
  • ONNX模型多线程推理并解决线程踩踏与显存溢出问题
  • AI Agent的“幻觉“问题:从根源到缓解的完整分析
  • 2026年苏州及周边叉车上岗证培训top5机构盘点:姑苏区n1证/姑苏区叉车上岗证/姑苏区叉车证/学叉车/选择指南 - 优质品牌商家
  • QMCDecode终极指南:如何快速解密QQ音乐加密文件实现跨平台播放
  • ARM SME2指令集:矩阵运算加速与AI性能优化
  • 移动应用开发中的跨平台框架选择与性能对比
  • 安全与权限管理:保障模型与数据资产的安全
  • 从理论到实践:基于扩展卡尔曼滤波(EKF)的永磁同步电机无位置传感器FOC控制
  • 别再傻傻用加法器了!Verilog里这个‘分治’数1技巧,帮你省下FPGA的宝贵资源
  • AI Agent Harness Engineering 的元认知:让它学会评估自身能力与知识边界
  • RWKV-7 (1.5B World) 显存优化部署教程:BF16+单卡强制绑定技巧
  • Web3时代的AI量化是什么?Alpha AI 告诉你答案
  • 手把手教你用Debian Live OS救活CentOS 8:GLIBC升级翻车后的机房急救实录
  • Torch MMCV 深度学习模型报错原因及解决方法汇总(长期更新)