变量
:在java程序运行过程中,其值可以发送改变的量
定义变量的语句格式:
数据类型 变量名 = 初始化值;
使用变量的注意事项
:
1、使用基本数据类型的变量,实际上使用的是变量中存储的值
2、在同一作用域(同一个大括号)中,变量名不能重复
3、变量名是区分大小写的
4、java中整数默认是int类型
5、如果要定义一个long类型的变量,需要在值的后面加上l或者L,推荐使用L
6、java中小数默认是double类型
7、如果要定义一个float类型的变量,需要在值的后加上f或者F,推荐F
8、定义一个变量,占用一行,分号结尾
9、所有的未初始化变量,都无法直接使用,建议在定义的同时给一个默认值
10、java是强类型语言,变量一旦确定了数据类型,后续赋值的时候,就只能赋值该范围内的值。
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型
不同的数据类型所表示的范围大小,占用空间不一样
1、java中变量参与运算会先根据自动类型转换提升数据类型,然后再运算
char i = '2'+2;
2、java中常量之间运算,会先进行运算,再根据运算的结果看一看在不在目标数据类型范围内,如果在,就直接赋值
float f = 11.1F;
double b= 255.0;
short s1 = 1;
3、一般情况下,等号右边的数据类型应该小于左边的数据类型,反之,需要将右边进行强制类型转换
byte b1=3,b2=4,b ;
b= (byte) (b1 + b2);
默认转换
byte,short,char—int—long—float—double
byte,short,char相互之间转换,他们参与运算首先转换为int类型
整数默认:int 小数默认:double
int a1 = 3;
byte b1 = 4;
int c1 = a1 + b1;
System.out.println(c1);
System.out.println('a' + 1 + "hello"); // 98hello
强制转换
目标类型 变量名=(目标类型)(被转换的数据);
注意:强制类型转换,一般不推荐使用,因为可能会造成精度损失
byte b = (byte)130;
System.out.println(b); //-126
//因为byte的范围在-128-127之间,130>127
//所以需要将130进行强制类型转换,由int型变成byte型
//首先,130对应二进制编码为:00000000 00000000 00000000 //10000010,同时原码,反码和补码也是他们本身
//在强制转换之后:1 0000010 最高位即符号位是1,说明该数是一个负//数,则其对应反码和补码为1 0000001(补码数值位减一,符号位不变),
//1 1111110(反码数值位按位取反,符号位不变),将数值位转成十进制为
//64+32+16+8+4+2 = 126,则最终答案是-126
//由上可知:强制类型转换后,精度减少了12位
图例展示精度问题