【JAVA】变量的作用域与生存周期

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


文章目录

  • 前言
  • 变量的作用域
  • 变量的生命周期
  • 局部变量
  • 全局变量


前言

变量,我们学习过程中逃不掉的知识,无论在哪种语言中我们都需要学会去合理的运用它,今天我们就来详细的讲讲变量的运用.
在这里插入图片描述

变量的作用域

通常来说,一段程序代码中所用到的名字并不总是有效可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用,**可提高程序逻辑的局部性,增强程序的可靠性,减少名字冲突。**从作用域角度区分,变量可分为全局变量局部变量。在Java中作用域指的是变量在程序中有效的范围,即变量能够访问的代码区域

分为以下四种情况:

  • 类级别的变量:在类中定义的变量,可以在整个类中访问。
  • 方法级别的变量:在方法中定义的变量,只能在该方法中使用。
  • 块级别的变量:在代码块内定义的变量,只在该代码块及其子块中有效。
  • 循环变量:在循环结构中定义的变量,在循环体中有效,出了循环体变量失效。

public class ScopeExample {

   public static void main(String args[]) {
      int a = 10; // 类级别变量
      int b = 20; // 类级别变量
      {
         int c = 30; // 块级别变量
         System.out.println("a = " + a + ", b = " + b + ", c = " + c);
      }
      for(int i=0; i<5; i++) {
         int d = i; // 循环变量
         System.out.println("d = " + d);
      }
      
      System.out.println("a = " + a + ", b = " + b);
   }
}
//变量a和b是类级别变量,可以在整个类中访问。变量c是块级别变量,
//只在代码块内有效。变量d是循环变量,只在循环结构中有效。在输出语句中,
//使用了不同作用域的变量。

变量的生命周期

变量的生命周期指的是变量从创建到销毁的整个过程。在程序执行时,变量需要先创建,然后被使用,最后被销毁。
通常来说变量的生命周期可以分为以下几个阶段:

  1. 定义变量:变量需要先定义才能使用。定义变量时,计算机会给变量分配内存空间。
  2. 初始化变量:定义变量时也可以对变量进行初始化。这意味着为变量赋予一个初始值。如果不进行初始化,变量的值就是未知的。
  3. 变量使用:变量在程序中被使用,可以被修改或者读取。变量使用的时间取决于程序的需求。
  4. 变量销毁当变量不再需要时,它会被销毁。这意味着释放变量占用的内存,以便其他变量或程序使用。变量在程序中的作用域结束后会被销毁。例如,当变量在函数内部声明时,当函数退出时,变量就会被销毁。

在编写程序时需要注意变量的生命周期,避免出现内存泄漏等问题。

局部变量

局部变量是在方法、代码块或构造函数内声明的变量。这些变量只能在声明它们的代码块内部使用,因此不会影响整个Java程序中的其他部分。

在方法内部声明的局部变量只能在该方法内部使用,一旦该方法执行结束,其生命周期也就结束了,其值也将被销毁。局部变量的作用域在其声明的代码块内部,只有在该作用域内才能访问。

当需要使用某个变量时,应该尽可能地将其作为局部变量来声明。这样可以减少程序中不必要的变量,提高程序的性能和可读性。

public class LocalVariablesExample {

    public static void main(String[] args) {
        int a = 10; // 声明并初始化一个整数类型的局部变量a
        double b = 3.14; // 声明并初始化一个双精度类型的局部变量b
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        a = 20;  // 修改a的值
        System.out.println("a = " + a);
        double result = a * b; // 使用a和b计算一个结果
        System.out.println("a * b = " + result);      
        String c;// 声明另一个局部变量c,未初始化
        // 编译错误!局部变量c未初始化
        // System.out.println("c = " + c);
    }

}

a和b是在main方法中声明的局部变量。a被初始化为10,b被初始化为3.14。在程序中,我们可以修改a的值,并使用a和b来计算一个结果。请注意,我们可以在方法中声明多个局部变量。例如,在此示例中,我们声明了一个未初始化的字符串变量c,但由于它未初始化,尝试使用它会导致编译错误。

全局变量

全局变量指的是在类中定义的变量,即类变量或静态变量。这些变量可以在整个类中的任何方法中使用,不需要使用实例化对象或者传递参数。类变量在程序开始运行时被初始化,一直存在于内存中,直到程序结束。
全局变量是在类中定义的,而不是在方法中定义的。如果在方法中定义一个变量,则该变量只能在该方法中使用,而不是在整个类中使用。

public class MyClass {
    static int x = 5; // 声明一个静态变量 x
    public static void main(String[] args) {
        System.out.println(x); // 输出 5
    }
}

变量 x 是一个静态变量,它可以在整个 MyClass 类中的任何方法中使用。当程序开始运行时,变量 x 被初始化为 5,并且可以在 main 方法中访问和输出。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop+Python+Django+Mysql热门旅游景点数据分析系统的设计与实现(包含设计报告)

系统阐述的是使用热门旅游景点数据分析系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…

中科亿海微FIFO使用

引言 FPGA&#xff08;现场可编程门阵列&#xff09;是一种可编程逻辑器件&#xff0c;具有灵活性和可重构性&#xff0c;广泛用于数字电路设计和嵌入式系统开发。在FPGA中&#xff0c;FIFO&#xff08;First-In, First-Out&#xff09;是一种常见的存储器结构&#xff0c;用于…

大数据课程I1——Kafka的概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Kafka的概念; ⚪ 掌握Kafka的配置与启动; 一、简介 1. 基本概念 Apache kafka 是一个分布式数据流平台。可以从如下几个层面来理解: 1. 我们可以向Kafka发布数据以及从Kafka订阅…

cpu和io的关系

在说io的五中模型之前,先说说Io把文件从哪里移到了哪里 自己的理解: 根据工作或者遇到的业务. 文件不可能存在缓存或在内存中,因为缓存和内存不能永久性储存东西, 文件需要被永久性储存.因此文件都存在电脑的硬盘里, 或者存在云服务器的它们的硬盘里. 我们io文件, 第一…

【机器学习4】构建良好的训练数据集——数据预处理(一)处理缺失值及异常值

数据预处理 &#x1f4ab;数据预处理的重要性&#x1f4ab;处理缺失值⭐️识别表格中的数据⭐️计算每列缺失值的数量⭐️删除含有缺失值的样本或特征⭐️填充缺失值 &#x1f4ab;处理异常值⭐️异常值的鉴别⭐️异常值的处理 &#x1f4ab;将数据集划分为训练数据集和测试数据…

易服客工作室:PressMart – 现代Elementor WooCommerce WordPress商城主题

PressMart是现代且独特的 Elementor WooCommerce WordPress商城主题。它配备了高品质的 05 预建主页&#xff0c;适合任何在线商店&#xff0c;如时装店、电子产品商店、家具店等。 我们使用 Elementor – 一个拖放页面构建器&#xff0c;不需要用户的编码技能即可轻松编辑和构…

【Python】使用python解析普通格式的报文为someip格式报文

文章目录 1.安装scapy库2.示例 1.安装scapy库 使用 pip 安装 scapy 第三方库&#xff0c;打开 cmd&#xff0c;输入以下命令&#xff1a; pip install scapy出现如图所示&#xff0c;表示安装成功&#xff1a; 2.示例 要解析someip格式报文&#xff0c;需要导入someip模块&a…

Qt扫盲-Qt Model/View 理论总结 [上篇]

Qt Model/View 理论总结 [上篇] 一、概述1.model / view 架构2. Model3. View4. Delegate5. 排序6. 快捷类 二、使用model/view1. Qt包含两种 model2. 在现有 model 中使用 view 三、Model 类1. 基本概念1.model 索引2. 行和列2. item 的父 item3. Item roles4. 总结 2. 使用mo…

flutter 初识(开发体验,优缺点)

前言 最近有个跨平台桌面应用的需求&#xff0c;需要支持 windows/linux/mac 系统&#xff0c;要做个更新应用的小界面&#xff0c;主要功能就是下载更新文件并在本地进行替换&#xff0c;很简单的小功能。 花了几分钟构建没做 UI 优化的示例界面&#xff1a; 由于我们的客…

深入理解Vue 3.0x中的Suspense和异步组件

深入理解Vue 3.0x中的Suspense和异步组件 Vue 3.0x作为Vue.js框架的最新版本&#xff0c;引入了许多创新特性&#xff0c;其中Suspense和异步组件是重要的改进之一。在本文中&#xff0c;我们将深入探讨这两个特性&#xff0c;了解它们如何为现代Web应用带来更好的性能和用户体…

简单易懂的 Postman Runner 参数自增教程

目录 什么是 Postman Runner&#xff1f; Postman Runner 如何实现参数自增&#xff1f; 步骤一&#xff1a;设置全局参数 步骤二&#xff1a;将全局参数带入请求参数 步骤三&#xff1a;实现参数自增 资料获取方法 什么是 Postman Runner&#xff1f; Postman Runner 是…

【Apollo】推动创新:探索阿波罗自动驾驶的进步(含安装 Apollo的详细教程)

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

python selenium如何保存网站的cookie用于下次自动登录

## 一、python selenium如何保存网站的cookie 使用Selenium保存网站的Cookie非常简单。下面是一个示例&#xff0c;展示了如何使用Selenium打开网站&#xff0c;然后保存获取到的Cookie&#xff1a; from selenium import webdriver# 初始化浏览器 browser webdriver.Chrome…

Mysql复制类型、主从复制集群种类、主从复制原理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 主从复制原理主从复制原理图一、概述二、为什么要读写分离&#xff1f;三、mysql支持的复制类型1、基于语句的复制statement&#xff1a;2、基于行的复制row&#x…

JavaFx基础学习【五】:FXML布局文件使用

目录 前言 一、介绍 二、简单体验 三、FXML标签元素 四、fx属性介绍 五、重写initialize&#xff08;名字需要保持一致&#xff09;方法 六、Scene Builder快速布局 前言 如果你还没有看过前面的文章&#xff0c;可以通过以下链接快速前往学习&#xff1a; JavaFx基础学…

【Spring】深入理解 Spring 事务及其传播机制

文章目录 一、Spring 事务是什么二、Spring 中事务的实现方法2.1 Spring 编程式事务&#xff08;手动&#xff09;2.1.1 编程式事务的使用演示2.1.2 编程式事务存在的问题 2.2 Spring 声明式事务&#xff08;自动&#xff09;2.2.1 Transactional 作用范围2.2.2 Transactional …

论文解读 | 如何进行精确的对象检测和语义分割?谷歌研究员提出丰富的特征层次结构!

原创 | 文 BFT机器人 01 摘要 本文关注经典的PASCAL VOC数据集上的对象检测性能问题&#xff0c;近年来性能趋于稳定。作者提出一种简单且可扩展的检测算法&#xff0c;相较于之前最佳结果&#xff0c;在VOC 2012数据集上将平均精度(mAP)提高了30%以上&#xff0c;达到了53.3%…

React构建的JS优化思路

背景 之前个人博客搭建时&#xff0c;发现页面加载要5s才能完成并显示 问题 React生成的JS有1.4M&#xff0c;对于个人博客服务器的带宽来说&#xff0c;压力较大&#xff0c;因此耗费了5S的时间 优化思路 解决React生成的JS大小&#xff0c;因为我用的是react-router-dom…

虚拟机怎么连接加密狗?USB Sever连接方法

公司想把软件都迁移到虚拟机&#xff0c;但是没法连接加密狗&#xff0c;怎么办&#xff1f; 让USB Sever来连接就行了&#xff01; 第一步&#xff0c; 根据加密狗的数量&#xff0c; 选一台合适的朝天椒USB Sever&#xff0c; 第二步&#xff0c; 将加密狗全部插在朝天椒U…

【AI绘画】3分钟学会ikun幻术图

目录 前言一、效果展示二、准备工作三、操作步骤3.1平台创建实例3.2 启动SD 四、安装QR Code Monster 模型五、成图 前言 大家热爱的ikun幻术在今天的分享中将呈现。在本文中&#xff0c;我们将揭示一个备受欢迎的图像幻术技术&#xff0c;让您感受到令人惊叹的视觉创造力。 …