变量与常量

news2024/11/18 9:40:37

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表示赋值动作只能进行一次,之后便不可以修改它的值。通常我们采用大写的形式表示常量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp微信小程序在ios端返回不显示弹窗的bug解决

这个问题其实是因为返回页面的时候弹的太快了导致的解决办法: 其实就是返回页面的弹窗加个延迟就好啦

新定义RD8T36P48点亮LED--汇编

其实汇编和C语言差不多,简单的东西用汇编挺好,中等及以上复杂度的程序还是C语言更灵活 直接在keil新建好工程,选好芯片型号和下载方式,再创建一个.asm文件并添加到工程, 工程创建完如图 工程配置 代码 ORG 0000HL…

Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法

Xilinx 文档 PetaLinux 指南:如何创建 PetaLinux 环境 (2019.1) PetaLinux工具参考指南 PetaLinux安装详解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安装教程 一、PetaLinux工具和库安装 PetaLinux 工具要求主机系统 /bin/sh 为“b…

【分享】3种方法取消PPT的“限制保护”

PPT如果设置了有密码的“只读方式”,每次打开PPT,都会出现对话框,提示需要输入密码才能修改文件,否则只能以“只读方式”打开。 以“只读方式”打开的PPT就会被限制,无法进行编辑修改等操作。那如果后续不需要“限制保…

搭建LNMP服务器

一、环境准备 Linux 采用 CentOS7 Nginx 采用 Nginx-1.24.0 安装目录/opt/nginx Mysql 采用 Mysql-5.7.23 安装目录/opt/mysql PHP 采用 PHP-7.3.5 安装目录/opt/php 用于测试环境,搭建在虚拟机上,只准备了一台虚拟机,所有服务都搭建在一…

代码随想录算法训练营第16天 |● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

文章目录 前言104.二叉树的最大深度思路知识点 方法一 递归法方法二 迭代法 559. n叉树的最大深度111.二叉树的最小深度思路方法一 后向遍历递归法方法二 迭代法 222.完全二叉树的节点个数思路方法一 当成普通二叉树来做方法二 利用完全二叉树的特性 总结 前言 所有的题目一刷…

最简单的,在mac笔记本上安装Unix-v6系统,进行“Unix内核源码剖析”

Unix V6 已经是 1975 年的系统了,但是其源代码拢共只有 1w 行左右,并且使用了 C 语言(K & R 之前的标准),还是现代操作系统的鼻祖,所以说是初学者最好的研究对象。 安装模拟器 brew install simh …

U-Mail邮件系统取得多项适配认证,全面支持国产化信创环境

随着信息技术的发展,信息化建设越来越深入到社会各个领域,成为驱动经济社会发展的重要力量。在此背景下,我国正加快构建国家信息安全保障体系,实现自主可控,形成安全可靠的信息技术体系。这正是我们所说的“信创”&…

Mac上安装多版本nodejs 并 随意切换node版本

Mac上安装多版本nodejs 并 随意切换node版本 1. 先查看当前版本2. 说明3. 安装 n 组件4. 根据需要安装其他版本的node4.1 查看node历史版本4.2 安装指定版本的node4.2.1 使用n 组件安装多版本4.2.2 n 组件常用命令 4.3 也可以安装node14 1. 先查看当前版本 如下:no…

26【构图】场景透视 —— 一点透视

1 一点透视更能体现纵深 2 图中的 消失点 透视线 视平线的位置 3 一点透视模型 蓝色的是消失点,根据消失点发射出无数的透视线 在PS中可以用简单的方法画出一点透视的透视线(通过多边形工具)

电脑视频如何压缩变小 mp4视频太大怎么压缩不影响画质

视频格式是指用于存储、编码、解码和播放数字视频内容的特定文件类型和结构。它定义了视频数据的压缩方式、存储布局以及播放参数,确保不同的设备和软件能够识别并正确处理视频文件。视频格式包括两大部分视频编码格式和容器格式。 视频太大的话有时候上传不了&…

Android Audio基础——AudioFlinger回放录制线程(七)

AndioFlinger 作为 Android 的音频系统引擎,重任之一是负责输入输出流设备的管理及音频流数据的处理传输,这是由回放线程 PlaybackThread 及其派生的子类和录制线程 RecordThread 进行的。 一、基础介绍 1、关系图 ThreadBase:PlaybackThread 和 RecordThread 的基类。 Re…

DDoS攻击的最新动态及市场趋势分析

随着数字化转型的加速和网络连接设备的增加,分布式拒绝服务(Distributed Denial of Service, DDoS)攻击已经成为全球网络安全领域的一大威胁。根据最新的市场研究报告,预计到2028年,DDoS防护软件市场的复合年增长率将达到14%以上,…

工作站虚拟化:RTX A5000的图形工作站实现多用户独立运行Siemens NX 设计软件

一、背景 Siemens NX 是由西门子数字工业软件(Siemens Digital Industries Software)开发的一款先进的集成计算机辅助设计(CAD)、计算机辅助制造(CAM)和计算机辅助工程(CAE)软件。它…

Linux:Ubuntu修改root密码

Linux:Ubuntu修改root密码 修改默认grub配置文件 rootshanxin:~# vim /etc/default/grub# 主要修改内容如下:GRUB_DEFAULT0 #GRUB_TIMEOUT_STYLEhidden 注释这一行 GRUB_TIMEOUT5 # 将这一行的时间改为5秒进行开启启动的grub文件的复写 rootshanxin:~…

618精选编程书单推荐:优质知识提升你的代码力

前言 在这个快速发展的技术时代,不断学习和提升自己的编程技能是每位程序员的必修课。今天,我为大家精心挑选了一系列编程技术书籍,它们将是你技术成长道路上的宝贵财富。 文章目录 前言编程之路:为何阅读书籍是不可或缺的书籍的…

vue连接mqtt实现收发消息组件超级详细

基本概念: MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。以下是MQTT实现收发消息的基本原理: 客户端-服务器模型&#xff1a…

清华团队推出免费AI服务:与人类偏好对齐的大型语言模型

在人工智能领域,大型语言模型(LLMs)的迅猛发展极大地推动了机器在语言理解和生成方面的能力。然而,如何让这些模型更好地与人类偏好和价值观对齐,成为了一个重要而紧迫的课题。为此清华团队推出一项免费服务ChatGLM-RL…

EI会议的最佳论文奖是什么?如何申请?

EI会议的最佳论文奖通常是指在EI(工程索引,Engineering Index)收录的学术会议中,评选出的表现最优秀的论文奖项。以下是关于该奖项的一些基本信息及申请步骤: 最佳论文奖的含义 评选标准:最佳论文奖通常基…

Java-常见面试题收集(十六)

二十五 RocketMQ 1 消息队列介绍 消息队列,简称 MQ(Message Queue),它其实就指消息中间件,当前业界比较流行的开源消息中间件包括:RabbitMQ、RocketMQ、Kafka。(一个使用队列来通信的组件&…