变量与常量

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl·杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值