Java 局部变量

  • 前言
  • 概述
  • 声明局部变量
    • 修饰符
    • 局部变量名
  • 使用局部变量

前言


  • 本文原创作者为 Blume,版权归原创作者所有。
  • 本文主要内容根据 Java 官方教程中《课程:语言基础》和《课程:类和对象》的相关章节编写而成。
  • 本文更新(修订)于 2021 年 4 月 3 日。
  • 本文网址为 https://blog.csdn.net/weixin_48390834/article/details/115361362
  • 商业性转载请联系原创作者,非商业性转载请注明出处。

【目录】

概述


局部变量(Local Variable),是 Java 编程语言中位于代码块内的一种变量。如同对象将其状态存储在字段中那样,代码块将其临时状态存储在局部变量中。局部变量始终被归类为“变量”(而不是“字段”)。

  • 提示:类中的方法体、构造方法体和语句中的块,都是用一对大括号 {} 括起来的零个或多个语句组,故在本文中统称为“代码块”。

【目录】

声明局部变量


import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Objects;/*** 局部变量示例** @author Blume*/
public class LocalVariableDemo {public static void main(String[] args) {System.out.println(new MyLocalVariable("Java", "1995-5-23"));}
}/*** 定义 MyLocalVariable 类** @author Blume*/
class MyLocalVariable {private final LocalDate birthday;private final String name;public MyLocalVariable(String name, String birthday) {// 在构造方法中声明局部变量。LocalDate date = null;try {// 在语句的块中声明局部变量。final DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-M-d");date = LocalDate.parse(birthday, formatter);} catch (Exception ignored) {}this.birthday = date;this.name = Objects.requireNonNullElse(name, "anonymous");}@Overridepublic String toString() {// 在方法中声明局部变量。final LocalDate today = LocalDate.now();return "今天是 ".concat(today.format(DateTimeFormatter.ofPattern("yyyy 年 M 月 d 日"))).concat("\n我的名字是:").concat(name).concat("\n我的年龄是:").concat((birthday == null) ? "保密(未知或日期格式错误)" :String.valueOf(birthday.until(today).getYears()));}
}
/* 输出结果:
今天是 2021 年 4 月 3 日
我的名字是:Java
我的年龄是:25*/

如上例所示,局部变量声明通常包括下列几个部分,顺序如下:

  1. 零个或仅一个 final 修饰符。
  2. 类型。
  3. 局部变量名。

【目录】

修饰符

若在局部变量声明的开头添加 final 修饰符,则表示该局部变量的值在初始化后保持不变,即它只接受首次分配给它的值,之后在其生命期内无法改变,类似于常量,可作为对局部变量值的一种限定和保护。如上例中的 formatter 和 today 局部变量。

没有特定的关键字将变量指定为“局部的”,这种确定完全来自于变量声明的位置,即在代码块的一对大括号之间。因此,局部变量只对声明它们的代码块可见,在它们所在的代码块之外不能访问它们。

【目录】

局部变量名

命名局部变量时,应遵循变量的命名规则和约定。

局部变量名必须在其范围内是唯一的,不能与同一代码块内另一个局部变量的名称相同,也不能与同一方法或构造方法中的参数名称相同。

若局部变量与其所在类中的字段具有相同的名称,则会发生遮蔽。具体请参阅《遮蔽 - 重名问题》。

【目录】

使用局部变量


Java 编译器从不给未初始化的局部变量指定默认值。如果无法在声明局部变量的位置初始化它,就请确保在尝试使用它之前为它赋值。访问未初始化的局部变量将会导致编译时错误。

【目录】

Java | 局部变量(Local Variable)相关推荐

  1. 全局变量和局部变量(local variable)

    全局变量(global variable) 在Lua中定义全局变量非常简单,就是定义变量的时候,前面不要加上local. 这个神秘的全局变量,其实本质上也是一个table,它把我们创建的全局变量都保存 ...

  2. Java报错---Cannot refer to the non-final local variable user defined in an enclosing scope

    昨晚在另一台机电脑上正常运行,今天办公室内的电脑运行出现以下报错 Cannot refer to the non-final local variable user defined in an enc ...

  3. ieda-自动引入局部变量(introduce local variable)快捷键

    idea中 一个很好用的快捷键,自动创建对象类型和对象名. ctrl+alt+V 将自动创建一个对象和对象名,快捷键 ctrl+alt+V , introduce local variable 非常方 ...

  4. The final local variable xxx cannot be assigned, since it is defined in an enclo

     本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决的方法: 出错信息:The final local variable xxx cannot be assigned, since it is ...

  5. 出现Cannot refer to the non-final local variable guoDeGang defined in an enclosing scope

    代码: public interface Star {public void crossTalk(int money);public void sing(int money);public void ...

  6. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  7. python 错误--UnboundLocalError: local variable '**' referenced before assignment

    1 val = 9 2 def test(flag): 3 if flag: 4 val = 1 5 else: 6 print("test") 7 return val 8 9 ...

  8. Python 引用全局变量提示:local variable referenced before assignment. 问题解决办法,global使用方法介绍

    local variable 'a' referenced before assignment 就是说变量a在使用前没有被声明 可能的情况一般有两种: 情况一:变量没有被赋值直接引用了 def hel ...

  9. 成功解决local variable 'str' referenced before assignment

    成功解决local variable 'str' referenced before assignment 目录 解决问题 解决思路 解决方法 解决问题 local variable 'str' re ...

最新文章

  1. R语言使用ggpubr包的ggbarplot函数可视化水平偏差条形图(计算数值的z-score、自定义填充色、自定义条形边缘色、自定义调色板、条形图全局排序从小到大、文本标签角度、添加图例标签、轴标签
  2. phpcms开启、关闭在线编辑模板的方法
  3. PAT-1124. Raffle for Weibo Followers (20)
  4. 外国人工作证延期、办理外国人居留许可延期
  5. python定义函数的组成部分有_Python基础11- 函数之自定义函数
  6. MCU,RTOS,物联网之间的关系。
  7. java两种传参,有关java参数的两种传递机制
  8. 第十五届北京师范大学程序设计竞赛决赛(网络同步赛) B lca水 D 思维,找规律...
  9. 数组复制速度 System.arraycopy()clone() Arrays.copyof() for()探究
  10. Swin Transformer V2!MSRA原班人马提出了30亿参数版本的Swin Transformer!
  11. 88se9230 linux raid,Marvell发布全球首颗PCI-E 2.0 x2 SATA 6Gbps主控
  12. VMware虚拟机与本地计算机进行资源共享的教程?
  13. 深度学习怎么入门?零基础快速入门深度学习
  14. python识别图像里文字_使用 Python 识别并提取图像中的文字
  15. [LuoGu] P3957 跳房子
  16. 哪款笔记本电脑最适合程序员学习写代码?结果我竟无言以对
  17. 用PS制作公路上的逼真文字
  18. 网络与社会导论课上所学感悟
  19. ACM算法训练【贪心合集】
  20. Android 定时器Timer

热门文章

  1. 漫漫的webim(二) 基于腾讯webIm+cos实现语音,视频,文件,定位等多媒体功能
  2. 2004年度诺贝尔文学奖得主耶利内克拒绝领奖
  3. linux网站漏洞修复,CentOS Bash漏洞终极修复方法
  4. 三级网络技术备考重点之交换机及其配置
  5. 虾皮产品如何定价?在线shopee虾皮商品定价工具推荐
  6. python算法工程师招聘_经验 | 我心目中招聘深度学习算法工程师的标准
  7. 2012年01月07日
  8. 启动react项目时失败,报错Error: Cannot find module
  9. Android 视频播放器 (一):使用VideoView播放视频
  10. 这个国庆,我们结婚了