变量与常量

1.变量

数学中的定义:

变量:可变的数据称为变量

Java中定义:

  • 内存中一块存储区域

  • 该区域的数据可以在同一类型范围内不断变化

  • 变量是程序中最基本的存储单元,包含了变量类型、变量名和存储的值

变量的作用就是在内存中保存数据

int age; double pi; boolean flag;

注意事项:

  • Java中变量必须先声明,后使用(变量必须具有明确的数据类型,因为Java是强类型语言)

  • 使用变量名来访问这块区域的数据

  • 变量使用时有作用域的限制

  • 在同一作用域,变量名不可重复

变量按声明位置的不同

  • 在方法体外,类内声明的变量称为成员变量

    • 实例变量:非static修饰的变量

    • 类变量:static修饰的变量

    实例也可以访问类变量,同一个类的所有实例访问类变量时,实际上访问的是该类本身的同一个变量,即访问的是同一块内存区域

  • 在方法体内声明的变量称为局部变量

    • 形参:方法、构造器的括号中中定义的变量

    • 方法局部变量:在方法内定义的变量

    • 代码块局部变量:在代码块中定义的变量

成员变量的初始化

当系统加载类或创建该类的实例时,系统会自动为成员变量分配内存空间,自动为成员变量指定初始值

内存中的运行机制

Person p1 = new Person();
Person p2 = new Person();
//为实例变量赋值
p1.name="张三";
p2.name="杨戬";
//为类变量赋值
p1.eyeNum=2;
p2.eyeNum=3;

根据机制,我们知道Person类在new的过程中经历了什么:

  • 首先会加载这个类,并初始化这个类

  • 在这个类的准备阶段,系统会为这个类的类变量分配内存空间,并指定默认的初始值

  • 当类初始化完成之后,系统将在堆内存中为该类分配一块内存区,在这块内存区中包含了eyeNum类变量的内存,并且设eyeNum类变量的默认初始值为0

然后程序将new Person()赋值给了p1

  • 将创建的Person对象赋值给p1,Person对象中包含了名为name的实例

  • 此时就会对Person对象的实例进行内存空间的分配和指定初始值

  • 实例变量也就是在创建实例时分配的内存空间并指定的初始值为null

创建第一个对象和第二个对象没有什么关联,唯一的关联就是都是使用了类模版进行对象的创建

创建出来的两个对象都是各自独立的内存区域,对象实例的行为和属性也是依赖于对应的对象独立存在的
初始化(new)Person类后的存储示意图
初始化(new)Person类后的存储示意图
new后的person存储图
new后的person存储图
p1变量指向Person对象
p1变量指向Person对象
给name赋值为张三
给name赋值为张三

局部变量的初始化

局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化操作

  • 使用者定义局部变量,当程序执行到当前局部变量,如果该局部变量未赋初始值,该变量依旧不具备内存空间

  • 直到程序执行到该局部变量第一次赋值,此时系统将会为该局部变量分配内存空间,并保存该初始值

局部变量定义
在这里插入图片描述

2.常量

常量在程序运行时是不能被修改的,在JAVA中使用final关键字修饰的变量叫做常量(也可以看作是特殊的变量)

final double CM_PER_INCH = 2.54;

关键字final表示赋值动作只能进行一次,之后便不可以修改它的值。通常我们采用大写的形式表示常量。

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

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

相关文章

element-plusDate Picker 日期选择器获取年月日

代码逻辑 对选择日期选择后进行搜索 : function dataValue(value) {console.log(value);scenic_list.value arrlist.value.filter(function (item) {// 判断是否满足搜索条件if (String(item.create_time).indexOf(String(value)) > -1) {return scenic_list}}…

零基础HTML教程(33)--HTML5表单新功能

文章目录 1. 背景2. HTML5新增表单元素2.1 number (数字输入框)2.2 email (邮箱输入框)2.3 url (链接输入框)2.4 tel (电话输入框)2.5 range (范围选择框)2.6 color (颜色选择框)2.7 datetime (日期时间选择框)2.8 search (搜索框) 3. placeholder (占位属性&#x…

vue3封装ElementUI plus Dialog弹窗

因为ElementuiPlus的dialog弹框的初始样式不太好看,而公司要求又要好看,本来是已经实现了,但是后来想想了发现封装完dialog的其他功能也要,所以特此记录一下 方案一 思路:封装一个组件,将所有新增的参数引入el-dialog 参数中,实现参数共用 新建一个组件,将官网暴露的属性全部引…

flutter开发实战-外接纹理texture处理图片展示

flutter开发实战-外接纹理处理图片展示 在Flutter中,如果你想要创建一个外接纹理的widget,你可以使用Texture widget。Texture widget用于显示视频或者画布(canvas)的内容。该组件只有唯一入参textureId 通过外接纹理的方式&…

机器视觉-硬件

机器视觉-硬件 镜头焦距凸透镜焦点不止一个相机镜头由多个镜片组成对焦和变焦 镜头光圈光圈的位置光圈系数F 镜头的景深景深在光路中的几何意义 远心镜头远心镜头的种类远心镜头特性应用场景 镜头的分辨率镜头反差镜头的MTF曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…

深度学习设计模式之桥接模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。 一、介绍 桥接模式是结构型设计模式,主要是将抽象部分与实现部分分离&#x…

APISIX-简单使用

APISIX-简单使用 这个工具还是很不错的,可视化的配置很清晰 , 想用NGINX的配置模式也是可以的,就是要去修改配置文件了。 APISIX,一个很不错的可视化工具,用来代替Nginx相当不错,可作为Nginx的平替方案&…

【单元测试】如何让单元测试的价值最大化

如何让单元测试的价值最大化 1.背景2.用例设计问题3.边界测试问题4.Mock 测试问题5.与集成测试的分工问题6.单测度量问题7.总结 1.背景 关于 “什么是单元测试”、“为什么要做单元测试”、“怎么做单元测试”,网络上相关的技术文章汗牛充栋。尽管如此,…

大数据之Hive函数大全

🔧 Hive函数大全 更多大数据学习资料请关注公众号“大数据领航员"免费领取 一、数学函数 1、取整函数: round 1.函数描述 返回值语法结构功能描述doubleround(double a)返回double类型的整数值部分(遵循四舍五入) 2.例程 hive>…

DOS学习-目录与文件应用操作经典案例-copy

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 copy命令的功能是复制一个或多个已经存在的文件到新的位置,或者将多个文件的内容整合后保存为一个单独的文件,亦或者用于创建批…

SQL基础交互

第二章 检索数据 例如,我们从数据库表 products 中查询 prod_id 和 vend_id,各个列之间以逗号分隔,最后一列的后面不加逗号。 SELECT prod_id, vend_id FROM products; 我们还可以从数据库表中查询所有列。例如: SELECT prod_id, vend_id, prod_name, …

【openlayers系统学习】00官网的Workshop介绍

00Workshop介绍 官方文档:https://openlayers.org/workshop/en/ openlayers官网Workshop学习。 通过官网Workshop,系统学习openlayers的使用。 基本设置 这些说明假定您从最新Workshop版本的 openlayers-workshop-en.zip​ 文件开始。此外&#xff…

继“三级淋巴结”之后,再看看“单细胞”如何与AI结合【医学AI|顶刊速递|05-25】

小罗碎碎念 24-05-25文献速递 今天想和大家分享的是肿瘤治疗领域的另一个热点——单细胞技术,我们一起来看看,最新出炉的顶刊,是如何把AI与单细胞结合起来的。 另外,今天是周末,所以会有两篇文章——一篇文献速递&…

【LeetCode:2769. 找出最大的可达成数字 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

C++—数组

数组是由一批相同类型的元素&#xff08;element&#xff09;的集合所组成的数据结构&#xff0c;分配一块连续的内存来存储。 语法&#xff1a; <数据类型> <数组名>[<数组长度>]; 数据类型&#xff1a;数组内存放的数据类型&#xff0c;如int、char&…

高仿百度网页(附带源码)

高仿百度网页 效果图部分源码及素材领取源码下期更新预报 效果图 部分源码及素材 <script language"javascript">function show_date_time() {window.setTimeout("show_date_time()", 1000);BirthDay new Date("1/20/2023 16:52:21");//…

Mongodb分布式id

1、分布式id使用场景 分布式ID是指在分布式系统中用于唯一标识每个元素的数字或字符串。在分布式系统中&#xff0c;各个节点或服务可能独立运行在不同的服务器、数据中心或地理位置&#xff0c;因此需要一种机制来确保每个生成的ID都是全局唯一的&#xff0c;以避免ID冲突。 …

FreeRTOS 源码概述

FreeRTOS 目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工程中&#xff0c;FreeRTOS 相关的源码如下: 主要涉及2个目录&#xff1a; Core Inc 目录下的 FreeRTOSConfig.h 是配置文件 Src 目录下的 freertos.c 是 STM32CubeMX 创建的默认任务 Middlewares\Third_Party…

FreeRTOS任务间通信“IPC”

---------------信号量--------------- 信号量的定义&#xff1a; 操作系统中一种解决问题的机制&#xff0c;可以实现 “共享资源的访问” 信号&#xff1a;起通知作用量&#xff1a;还可以用来表示资源的数量当"量"没有限制时&#xff0c;它就是"计数型信…

Java 登录错误次数限制,用户禁登1小时

手机号验证码登录&#xff0c;验证码输入错误次数超5次封禁 Overridepublic boolean checkCaptcha(String phoneNum, String captcha) {String codeNum (String) redisTemplate.opsForValue().get(UserCacheNames.USER_CAPTCHA phoneNum);if (codeNum null) {throw new Wan…