1.变量的使用
1.变量定义格式:
数据类型 变量名=初始化值;
如:byte b=10;
基本数据类型:4类8种
类型 | 字节 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
整数默认int类型,浮点数默认double类型;
long长整型后缀用L标记,以免引起精度损失问题报错;
2.使用变量注意事项:
(1)作用域:变量定义在哪个大括号内他就在这个大括号内有效,并且在同一个大括号内不能同时定义同名变量;
(2) 没有初始化值的变量不能直接使用
如:int y;
System.out.println(y);
(3) 在一行建议定义一个变量;
(4) +是一个运算符,参与运算的数据类型必须一致;
(5)布尔类型不能转换为其他数据类型;
(6)默认转换:(从小到大)
Byte,short,char—int-long—float—double
Byte,short,char相互之间不转换,它们参与运算首先转换为int类型
2.类型强制转换
从大的数据类型到小的数据类型
格式:目标数据类型 变量=(目标数据类型)(被转换的数据)
byte b=3;
int c=4;
//强制类型
byte d=(byte)(b+c);
System.out.println(d);
//强制类型
//不要随意用强制转换,因为它隐藏了精度损失问题
double d=12.234;
float f=(float)d;
System.out.println(d);
重视精度损失问题:
//long长整型后缀用L或l表示,建议使用L;
long j =10000000000000000L;
System.out.println(j);
//定义浮点数数据变量
//单精度用F或f表示,建议使用F
float f=2.23F;
System.out.println(f);
double d=12.345;
System.out.println(d);
//定义字符类型
char ch='a';
System.out.println(ch);
//定义布尔变量
boolean flag=true;
System.out.println(flag);
}
运行结果如图
-
这里有个相关面试题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4
哪句编译失败了,为什么?
回答:首先定义了三个byte变量,
byte b1=3, b2=4, b;
b=b1+b2;//变量相加会首先看类型问题,最终把结果赋值的时候也会考虑类型问题。两个byte类型做加法,先转换为int类型,而b是byte类型类型提升,所以有问题
b=3+4;//常量,先做加法,计算结果,看是否在byte范围内,如果在就不报错 -
比如这段代码:为什么结果是-126?
public static void main(String[] args) {
byte b=(byte)130;
System.out.println(b);
解答:
byte的范围是:-128到127,而130不在范围内,可以使用强制转换
计算机中的数据都是补码进行,整数默认int类型,占四个字节
获取130二进制:00000000 00000000 00000000 10000010
130的原码,补码,反码相同,做截取操作,截成byte类型,10000010,这个结果是补码,
已知补码求原码,补码:1 0000010
反码:1 0000001
原码:1 1111110
3.字符串相加
常用字符代表:‘0’=48 ,‘A’=65 ,‘a’=97
(1)
System.out.println(‘a’);
System.out.println(‘a’+1);
(2)
System.out.println(“hello”+‘a’+1);
System.out.println(‘a’+1+“hello”);
这里说明一下:字符串数据和其他数据做+,结果是字符串类型;
这里的+不是加法,而是字符串连接符。