变量与常量

ops/2024/10/18 16:49:33/

1.变量

数学中的定义:

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

Java中定义:

  • 内存中一块存储区域

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

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

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

int age; double pi; boolean flag;

注意事项:

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

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

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

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

变量按声明位置的不同

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

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

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

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

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

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

成员变量初始化

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

内存中的运行机制

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类后的存储示意图
<a class=初始化(new)Person类后的存储示意图" />
new后的person存储图
new后的person存储图
p1变量指向Person对象
p1<a class=变量指向Person对象" />
给name赋值为张三
给name赋值为张三

局部变量初始化

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

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

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

局部<a class=变量定义" />
在这里插入图片描述

2.常量

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

final double CM_PER_INCH = 2.54;

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


http://www.ppmy.cn/ops/42707.html

相关文章

SpirngMVC框架学习笔记(一):SpringMVC基本介绍

1 SpringMVC 特点&概述 SpringMVC 从易用性&#xff0c;效率上 比曾经流行的 Struts2 更好 SpringMVC 是 WEB 层框架&#xff0c;接管了 Web 层组件, 比如控制器, 视图, 视图解析, 返回给用户的数据格式, 同时支持 MVC 的开发模式/开发架构SpringMVC 通过注解&#xff0c;…

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器&#xff1f;如何自定义分词器&#xff1f;拼音分词器注意事项&#xff1f; 自动补全数据同步集群搭建ES集群结构创…

卡到BUG了:删除重发白得积分(以前删除会扣减积分)

以前是&#xff1a;删除文章&#xff0c;积分减少&#xff0c;点赞积分减少&#xff0c;从回收站恢复文章&#xff0c;积分恢复&#xff0c;点赞数恢复但点赞积分不恢复。也就是删除重发总积分减少点赞的积分&#xff0c;有损失。 今天是&#xff1a;删除文章&#xff0c;积分不…

零基础的粉丝有福了:逐键提示盲打更轻松

盲打就是不看键盘去打字&#xff0c;对于零基础的粉丝而言&#xff0c;盲打入门通常都是很难的&#xff0c;今天就给大家放个福利&#xff1a;从今天开始就能盲打&#xff0c;3天之后盲打就入门了。 真的有这么简单吗&#xff1f;是的&#xff0c;跟着我做就可以了。 首先&am…

优先级队列(堆)的实现

1.什么是优先级队列 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队 列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不合适&#xff0c;比如&#x…

【MySQL精通之路】InnoDB-标准监视器和锁监视器

锁定监视器与标准监视器相同&#xff0c;只是它包含额外的锁信息。 为周期性输出启用任一监视器会打开相同的输出流&#xff0c;但如果启用了锁监视器&#xff0c;则该流会包含额外信息。 例如&#xff1a; 如果启用“标准监视器”和“锁定监视器”&#xff0c;则会打开单个…

【AI大模型】这可能是最简单的本地大模型工具,无须部署,一键使用

目录 前言 LM-Studio​编辑 那么问题来了&#xff0c;为什么我要在本地部署大模型&#xff1f; 隐私性&#xff1a; 定制性&#xff1a; 成本和体验的优化&#xff1a; 工具功能特点和使用方式介绍&#xff1a; 首页提供搜索功能和一些模型的推荐 模型下载管理&#x…

面试准备-项目【面试准备】

面试准备-项目【面试准备】 前言面试准备自我介绍&#xff1a;项目介绍&#xff1a; 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别…