【JavaSE】 【基础语法02】 变量&常量

一、变量

变量的作用:保存数据
变量的本质:内存的一块存储区域
变量的三要素:数据类型、变量名、变量值

  • 数据类型:决定内存大小,可以存什么值
  • 变量名:如何访问这块存储区域
  • 变量值:里面存储的数据

变量的声明和初始化

变量声明·: 数据类型 变量名;

//例: 
int i;

变量赋值:变量名 = 变量值;

int i;
i = 5;

声明变量的同时赋值

int i = 5;

变量的使用

  • 通过变量名来访问这块存储区域
  • 变量必须先声明后使用,并且变量在使用之前必须有初始值

变量分类

1.变量的作用域

作用域: 从声明处开始,到它所属的'}'结束
(1)同一个作用域中,一个变量声明一次
(2)同一个作用域变量不能重名

也就是说变量声明的位置决定了变量的作用域,而通过作用域对变量进行了细致分类

2.成员变量

  • 成员变量的声明:在类内部,方法、内部类、代码块外部
  • 成员变量有三种初始化方式:
    1.显式赋值
    2.代码块
    3.构造方法

对于final修饰的成员变量来说,只要在使用之前进行初始化即可;

3.局部变量

  • 局部变量就是在方法中的变量
  • 局部变量在使用前必须显示初始化,否则使用报错;因为成员变量不像成员变量会赋予默认值;
  • 局部变量不进行初始化,也没有使用,那么在编译的时候,直接抛弃;这也意味着根本就不会在栈帧中分配内存
public class test{
	public static void main(String[] args){
		int age;
	}
}

这段代码编译后的字节码文件:
在这里插入图片描述
局部变量表只有args一个;这意味着age被直接抛弃了;

2.常量

  • 常量:java中 final修饰的变量一旦赋值后不可以修改,这种不可变变量又叫做
  • 字面量:1,“abc” , true 等这些值叫做字面量

(1)常量和字面量的运算在编译期间完成

byte b = 10 + 10

对于常量和字面量来说,编译期间就能确定值是多少,因此常量的运算在编译的时候就执行完了;
上面的代码中,变量b在编译成.class的时候直接存储的就是20,由于20在byte范围内,所以此代码不会报错

(2)变量的值只能在运行时获取

	byte  b1 = 10;
	byte b = b1 + 10;//编译报错

变量是一个指向内存某一块空间的一个名字,所以他的值只有在运算的时候才能确定,编译的时候不知道变量值是多少;
由于变量b1和10进行运算,需要提升b1为int类型,因此左边byte类型不兼容,所以编译不通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值