type
status
date
slug
summary
tags
category
icon
password
Property
变量
变量是java中的一个最基本的单元,是内存中的一块区域,Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值
- 变量名:合法的标识符
- 变量的数据类型:可以是基本类型和引用类型(必须包含类型)
变量类型指导程序分配多少空间(不同类型分配不同空间)
- 存储单元:存储单元大小是由数据类型决定的,如:int为4个字节32位
- 变量值:在存储单元中放的就是变量值(如果是基本类型放的就是具体值,如果是引用类型放的是内存地址,如果null,表示不指向任何对象)
变量的声明与赋值:
变量必须先声明再赋值,才能访问。变量赋值的时候有要求,字面值的数据类型必须和变量的数据类型一致。
注:成员变量如果不写初始值,系统给它指定了默认值,但局部变量不会;未初始化的局部变量是不可以使用的。最好在定义变量的时候赋一个初始值。
变量的一个重要特点是可以重新赋值
第一次定义变量
x
的时候,需要指定变量类型int
。第二次重新赋值时,变量x
已经存在了,不能再重复定义,因此不能指定变量类型int
int i = 10 和 i = 10的区别
int i = 10;
表示在内存中声明一个新的变量,一块新的空间,给这个空间起名i,赋值10
i = 10;
表示不会在内存中创建一块新的空间,只是将原空间中的数据进行修改。进行重新赋值
- 在同一个域当中,变量名是不能重名的。
Java语言支持的变量类型有:
- 局部变量:类的方法中的变量
- 成员变量:独立于方法之外的变量
- 类变量(静态变量):有 static 修饰
- 实例变量:没有 static 修饰
而在语句块中定义的变量,它有一个作用域,从定义处开始,到语句块结束。超出了作用域引用这些变量,编译器会报错。
var关键字
java10引入了局部变量折断 var用于声明局部变量
有些时候,类型的名字太长,写起来比较麻烦。例如:
这个时候,如果想省略变量类型,可以使用
var
关键字:编译器会根据赋值语句自动推断出变量
sb
的类型是StringBuilder
。对编译器来说,语句:实际上会自动变成:
因此,使用
var
定义变量,仅仅是少写了变量类型而已。在处理 var时,编译器先是查看表达式右边部分,也就是所谓的构造器,并将它作为变量的类型,然后将该类型写入字节码当中,只能用于带有构造器的局部变量。
除了局部变量,for循环是唯一可以使用 var的地方:
常量
定义变量的时候,如果加上
final
修饰符,这个变量就变成了常量:常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误
根据习惯,常量名通常全部大写。