概念
- 变量:计算机内存当中存储数据的最基本的单元。
- 变量就是内存当中的一块空间。
- 变量有三要素:数据类型、变量名、字面值。
定义
数据类型 变量名 = 变量值;
或
数据类型 变量名; 变量名 = 变量值;
int i = 10;
//int g 编译错误: 可能尚未初始化变量xxx
int j ;
j = 12;
//int a,b,c = 30 表示声明三个int类型变量a, b没有赋值,c赋值30。
int l = 11,m = 12,n = 13;
int a,b,c;
l = 20;
m = 30;
n = 40;
//System.out.println(t);编译错误: 找不到符号
//int t = 5; 在java程序的方法体当中,代码是有执行顺序要求的,遵循自上而下的顺序依次逐行执行
j = 30;//重新赋值
//int j = 30;编译错误: 已在方法 main(String[])中定义了变量 j
要点
- Java中每个变量必须先声明、后使用。
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量只有在其作用域内才有效。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
- 不提倡(int i ,j; // 两个变量的数据类型都是 int)这种风格,逐一声明每一个变量可以提高程序可读性。
- 同一个作用域{}内,不可以声明两个同名的变量。
- 变量区分大小写,书写时遵循 lowerCamelCase 风格。
- 有两个域并且存在包含关系,允许存在同名变量,但是遵循就近原则。
分类
- 按照数据类型
详细说明:
整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
① byte范围:-128 ~ 127
② 声明long型变量,必须以"l"或"L"结尾
③ 通常,定义整型变量时,使用int型。
④整型的常量,默认类型是:int型。整型变量默认值是:0
浮点型:float(4字节) \ double(8字节)
① 浮点型,表示带小数点的数值
② float表示数值的范围比long还大
③ 定义float类型变量时,变量要以"f"或"F"结尾
④ 通常,定义浮点型变量时,使用double型。
⑤ 浮点型的常量,默认类型为:double。浮点变量默认值是0.0
字符型:char (1字符=2字节=1个汉字)
① 定义char型变量,通常使用一对'',内部只能写一个字符
② 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量。字符变量的默认值为'\u0000'。
布尔型:boolean
① 只能取两个值之一:true 、 false
② 常常在条件判断、循环结构中使用。布尔变量的默认值为false。
- 按照声明的位置
类型 | 声明位置 | 从属于 | 存储位置 | 生命周期 | 初始值 |
局部变量 |
方法或者语句块内部 |
方法/语句块 | 栈帧 |
从声明位置开始,直到方法或语 句块执行完毕,局部变量消失 |
局部变量在使用前必须先声明、初始化(赋初值)再使用 |
实例变量 | 方法外,不带static | 对象 | 堆 |
对象创建,成员变量也跟着创建。 对象消失,成员变量也跟着消失 |
如果不自行初 始化,它会自动初始化成该类型的默认初始值。 |
静态变量 | 方法外、带static | 类 | 方法区 |
类被加载,静态变量就有效;类 被卸载,静态变量消失 |
如果不自行初始化,与成员变量相同会自动初始 化成该类型的默认初始值 |
显式转换和隐式转换
- 显式转换 又叫强制转换。小范围数据类型 变量=(小范围数据类型)大范围数据;int n = (int)6.7;
- 隐式转换:又叫自动转换。大范围数据类型 变量=小范围的数据; double d = 10000;
//隐式转换
short b = 12; //合法
short b = 1234567; //非法,1234567 超出了 short 的表数范围
short s1 = 1;
s1 = s1 + 1;//s1+1 进行运算时,s1自动转换成int类型,右边运算结果是int类型,经过编译器检查,两边数据类型不一致会报错。
s1 += 1;//+= 或者 ++ 运算符会执行隐式类型转换,相当于s1 = (short) (s1 + 1);
//显式转换
int x = (int)3.14 //x = 3 强制转换可能会导致精度丢失,浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
byte i = (byte) 128;// i = -128 字节转换可能会导致数据溢出。
int money = 1000000000; //右边的数值超过了int的范围,产生溢出行为。
类型转换的规则
1、八种基本数据类型中,除了boolean类型之外,剩下的7种类型之间都可以进行类型转换。
2、当整数型字面值没有超出byte、short、char取值范围,那么可以直接将它赋值给byte、short、char类型的变量。
3、byte short char在做数学运算的时候,各自会先转换成int类型,再做运算。
4、小容量可以自动转换成大容量。八种基本数据类型容量从小到大的顺序:
- byte < short < int < long < float < double
- < char
- char和short容量相同,都是2个字节,只不过char可以表示更大的正整数。
5、多种数据类型做混合运算,各自先转换成容量最大的类型之后再做运算。
6、大容量转换成小容量的时候,必须添加强制类型转换符,这样编译才能通过,但是运行的时候可能会损失精度。