Java变量命名规则

目录

  • 变量
    • 完整代码
    • 变量的声明
    • 变量的赋值
    • 变量的使用
  • 变量的内存
      • 练习
    • 分析
  • 变量的作用域

变量

  • 变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。
  • 我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
  • Java是一种强类型语言,每个变量都必须声明其数据类型。
  • 变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。
  • 变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
  • 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

完整代码

public class TestVar {
    public static void main(String[] args) {
        //【1】变量的声明(定义)
        //定义一个年龄的变量;
        //名字(标识符)叫age,类型是int类型
        int age;
        //变量不可重复定义:
        //int age;

        int min ,max;//可同时定义多个变量

        //【2】变量的赋值
        age = 30;//用等号进行赋值操作
        age = 40;
        age = 70 + 3;

        //变量和赋值可以写在一行
        int high = 32;

        int d = 24,f = 56;

        int z , h = 87;//z没有赋值,h赋值为87

        //【3】变量的使用

        System.out.println(age);
        System.out.println(age + 10);
        int k = 10;
        System.out.println(age + k);

		int n = 3;
        int m = 4;
        System.out.println(m + n);
    }
}

变量的声明

        //【1】变量的声明(定义)
        //定义一个年龄的变量;
        //名字(标识符)叫age,类型是int类型
        int age;
        //变量不可重复定义:
        //int age;

        int min ,max;//可同时定义多个变量

在这里插入图片描述

变量的赋值

 //【2】变量的赋值
        age = 30;//用等号进行赋值操作
        age = 40;
        age = 70 + 3;

        //变量和赋值可以写在一行
        int high = 32;

        int d = 24,f = 56;

        int z , h = 87;//z没有赋值,h赋值为87

变量的使用

        System.out.println(age);
        System.out.println(age + 10);
        int k = 10;
        System.out.println(age + k);


        int n = 3;
        int m = 4;
        System.out.println(m + n);
  • 右键Run运行
    在这里插入图片描述
    在这里插入图片描述

变量的内存

在这里插入图片描述

练习

        int num1 = 10;
        int num2 = 20;
        num1 = num2;
        num2 = num2 + 10;
        num1 = num2 - 10;
        num2 = num1;
        System.out.println("num1="+num1);
        System.out.println("num2="+num2);

在这里插入图片描述

分析

  1. int num1 = 10; 这行代码声明了一个整型变量 num1 并给它赋值为10。在内存中,num1 现在储存的是10。

  2. int num2 = 20; 这行代码声明了另一个整型变量 num2 并给它赋值为20。在内存中,num2 现在储存的是20。

  3. num1 = num2; 这行代码将 num2 的值赋给了 num1。因此,num1 的值现在变成了20,与 num2 的值相同。

  4. num2 = num2 + 10; 这行代码将 num2 的值增加了10。因此,num2 现在储存的是30(20 + 10)。

  5. num1 = num2 - 10; 这行代码将 num2 当前的值(30)减去10,然后赋值给 num1。因此,num1 的值现在是20(30 - 10)。

  6. num2 = num1; 这行代码又将 num1 的值赋给了 num2。所以,num2 的值也变成了20。

所以,当执行到最后,num1 和 num2 在内存中都储存的是20。这就是为什么打印出来的结果是:num1=20 num2=20

变量的作用域

  • 作用域指的就是作用范围,变量在什么范围中有效
  • 作用范围就是离它最近的{}

public class TestVar{
        int b = 20;
        public static void main(String[] args){
                System.out.println(a);//no
                int a = 10;
                System.out.println(a);//yes
                System.out.println(b);//yes
                {
                        int c = 40;
                        System.out.println(c);//yes
                        int a = 50;//属于变量的重复定义
                }
                System.out.println(c);//no
        }
        
        public void eat(){
                System.out.println(b);//yes
                System.out.println(a);//no
                int a = 30;//不是变量的重复定义
                System.out.println(a);//yes
        }
}

这段代码涉及了Java中的变量作用域和生命周期。让我们逐步分析:

  1. int b = 20; 这行代码声明了一个实例变量 b 并给它赋值为20。这个变量是类的成员变量,对整个类都可见。
  2. System.out.println(a); 这行代码在变量 a 定义之前就尝试输出其值,会导致编译错误。因为在该位置 a 还没有被定义。
  3. int a = 10; 这行代码在 main 方法中定义了一个局部变量 a 并给它赋值为10。
  4. System.out.println(a); 这行代码输出了局部变量 a 的值,即10。
  5. System.out.println(b); 这行代码输出了实例变量 b 的值,即20。
  6. {} 这是一个代码块,其中定义了局部变量 c 并赋值为40。在这个代码块内,c 是可见的。
  7. System.out.println©; 这行代码输出了代码块内部的局部变量 c 的值,即40。
  8. int a = 50; 这行代码在同一代码块内试图再次定义局部变量 a,这是不允许的,会导致编译错误。因为在同一作用域内不能重复定义相同名称的变量。
  9. System.out.println©; 这行代码试图输出代码块外的局部变量 c,但会导致编译错误,因为 c 的作用域仅限于该代码块内。
  10. public void eat() 这是一个实例方法。
  11. System.out.println(b); 这行代码在实例方法内输出了实例变量 b 的值,即20。
  12. System.out.println(a); 这行代码尝试输出变量 a 的值,但由于在方法内有局部变量 a 的定义,所以会输出这个局部变量的值。在这个位置,局部变量 a 尚未被定义,因此会导致编译错误。
  13. int a = 30; 这行代码定义了实例方法内的另一个局部变量 a 并赋值为30。
  14. System.out.println(a); 这行代码输出的是实例方法内的局部变量 a 的值,即30。
  • 这个代码示例涉及了变量的作用域、重复定义等概念。需要注意的是,在不同的作用域内可以使用相同名称的变量,因为它们不会发生冲突。在方法内部重新定义一个与外部同名的变量是允许的。

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

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

相关文章

青少年人工智能实验基地解决方案

1. 方案背景 1.1人工智能创新教育解决方案背景 人工智能已成为引领未来的新兴技术,中国将人工智能列为国家重点发展战略,对人工智能的发展做出了总体部署,全面加速人工智能在研发应用和人才培养的步伐。2021年1月教育部官网公布《关于政协十…

无状态应用管理Deployment

无状态应用管理Deployment 1、Deployment介绍 Deployment一般用于部署公司的无状态服务。 格式: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx …

windows定时任务的查看、取消、启动和创建

一、查看 Windows 自动执行的指令 1.使用任务计划程序:任务计划程序是 Windows 内置的工具,可以用于创建、编辑和管理计划任务。您可以按照以下步骤查看已设置的计划任务: 1.1 按下 Win R 键,然后输入 “taskschd.msc”&#xff…

网络变压器的工作原理

Hqst华强盛导读:网络变压器是一种用于变换电压的电气设备,其工作原理基于电磁感应定律。网络变压器通常由两个或多个线圈和一个共同的铁芯组成。 当网络变压器的输入端施加一个交流电压时,主线圈中的电流会产生一个交变磁场。这个磁场会穿过铁…

1.26学习总结

连通性判断 DFS连通性判断步骤: 1.从图上任意一点u开始遍历,标记u已经走过 2.递归u的所有符合连通条件的邻居点 3.递归结束,找到了的所有与u的连通点,就是一个连通块 4.然后重复这个步骤找到所有的连通块 BFS连通性判断步骤…

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…

Kafka-服务端-PartitionStateMachine

PartitionStateMachine是Controller Leader用于维护分区状态的状态机。分区的状态是通过PartitionState接口定义的,它有四个子类分别代表了分区四种可能的状态,如表所示。 分区各个PartitionState之间的转换如图所示。 下面分析各个状态之间转换时&#…

梯度下降法、模拟训练、拟合二次曲线、最小二乘法、MSELoss、拟合:f(x)=ax^2+bx+c

本文目标: 以这个公式为例,设计一个算法,用梯度下降法来模拟训练过程,最终得出参数a,b,c 原理介绍 目标函数: 损失函数:,就是mse 损失函数展开: 损失函数对a,b,c求导数: 导数就是梯度…

JavaScript高级:闭包

1 概念 一个函数对周围状态的引用,捆绑在一起,内层函数中可以访问到外层函数的作用域。 简单理解:闭包 内层函数 外层函数的变量 先看个简单的代码: function outer() {let a 1function inner() {console.log(a)} } outer(…

tee漏洞学习-翻译-1:从任何上下文中获取 TrustZone 内核中的任意代码执行

原文:http://bits-please.blogspot.com/2015/03/getting-arbitrary-code-execution-in.html 目标是什么? 这将是一系列博客文章,详细介绍我发现的一系列漏洞,这些漏洞将使我们能够将任何用户的权限提升到所有用户的最高权限 - 在…

重磅!讯飞星火V3.5马上发布!AI写作、AI编程、AI绘画等功能全面提升!

讯飞星火大模型相信很多友友已经不陌生了,可以说是国内GPT相关领域的龙头标杆,而对于1月30日即将在讯飞星火发布会发出的V3.5新版本来说,讯飞星火V3.5与之前版本相比,性能提升方面相当明显,在提示语义理解、内容生成、…

Java项目:15 springboot vue的智慧养老手表管理系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本系统共分为两个角色:家长,养老院管理员 框架:springboot、mybatis、vue 数据库:mysql 5.7&…

【幻兽帕鲁】开服务器,高性能高带宽(100mbps),免费!!!【学生党强推】

【幻兽帕鲁】开服务器,高性能高带宽(100mbps),免费!!!【学生党强推】 教程相关视频地址:https://www.bilibili.com/video/BV16e411Y7Fd/ 目前幻兽帕鲁开服务器有以下几套比较性价比的…

【计算机图形学】实验五 一个简单的交互式绘图系统(实验报告分析+截图+源码)

可以先看一看这篇呀~【计算机图形学】专栏前言-CSDN博客https://blog.csdn.net/m0_55931547/article/details/135863062 目录 一、实验目的 二、实验内容

docker-compose部署单机ES+Kibana

记录部署的操作步骤 准备工作编写docker-compose.yml启动服务验证部署结果 本次elasticsearch和kibana版本为8.2.2 使用环境:centos7.9 本次记录还包括:安装elasticsearch中文分词插件和拼音分词插件 准备工作 1、创建目录和填写配置 mkdir /home/es/s…

杰理方案——WIFI连接物联网配置阿里云操作步骤

demo——DevKitBoard 注意:最好用这个Demo,其它Demo可能会有莫名其妙的错误问题。 wifi配置 需要在app_config.h文件中定义USE_DEMO_WIFI_TEST,工程会在wifi_demo_task.c文件中自动启动wifi相关的任务, 我们将工程配置为连接外部网络STA模式 默认工程会使用如下账号密码 这…

go slice 基本用法

slice(切片)是 go 里面非常常用的一种数据结构,它代表了一个变长的序列,序列中的每个元素都有相同的数据类型。 一个 slice 类型一般写作 []T,其中 T 代表 slice 中元素的类型;slice 的语法和数组很像&…

一款强大的矢量图形设计软件:Adobe Illustrator 2023 (AI2023)软件介绍

Adobe Illustrator 2023 (AI2023) 是一款强大的矢量图形设计软件,为设计师提供了无限创意和畅行无阻的设计体验。AI2023具备丰富的功能和工具,让用户可以轻松创建精美的矢量图形、插图、徽标和其他设计作品。 AI2023在界面和用户体验方面进行了全面升级…

python-自动化篇-运维-监控-简单实例-道出如何使⽤Python进⾏网络监控?

如何使⽤Python进⾏⽹络监控? 使⽤Python进⾏⽹络监控可以帮助实时监视⽹络设备、流量和服务的状态,以便及时识别和解决问题。 以下是⼀般步骤,说明如何使⽤Python进⾏⽹络监控: 选择监控⼯具和库:选择适合⽹络监控需…

网络防御——NET实验

一、实验拓扑 二、实验要求 1、生产区在工作时间(9:00---18:00)内可以访问服务区,仅可以访问http服务器; 2、办公区全天可以访问服务器区,其中,10.0.2.20可以访问FTP服务器和HTTP服…