认识变量
1.整型变量
语法格式:int 变量名 = 初始值
eg: int a = 1; //将1赋值给整形变量a。
一个int 变量占4个字节(表示的数据范围是-2^31 —> (2^31)-1,和操作系统没有直接关系.
2.长整型变量
语法格式:long 变量名 = 初始值
eg: long a = 10L; //定义一个长整型变量
long 类型占8个字节,表示的数据范围 -2^63 —> (2^63) - 1
3.短整型变量
语法格式:short 变量名 = 初始值;
eg: short a=0;
short类型占用2个字节,表示范围为(-32768–>32767)
4.双精度浮点型变量
语法格式:double 变量名 = 初始值
eg: double a=1.0;
double类型占8个字节,浮点数优先考虑。
5.单精度浮点型变量
语法格式: float 变量名 = 初始值;
eg:float a = 1.0f;
float类型占4个字节。
6.字符型变量
语法格式: char 变量名 = 初始值;
eg:char ch = 'a';
char类型占2个字节。默认值为’\u0000’
7.字节类型变量
语法格式: byte 变量名 = 初始值;
eg : byte value = 0;
byte类型占一个字节,范围是(-128–>127),当超出范围,就会报错。
8.布尔类型变量
语法格式:boolen 变量名 = 初始值;
eg: boolen a = true;
boolen类型的大小没有明确规定,java中不存在1表示true,0表示false的用法。默认值为false.
9.字符串类型变量
语法格式:String 变量名 = “初始值”;
eg: String name = "zhangsan";
String类型和以上其他类型不同。String是引用类型而不是基本类型。
整形提升
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
// 编译报错
Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
byte c = a + b;
^
原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都
提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于4
个字节的类型, 会先提升成 int, 再参与计算.
- 不同类型的数据混合运算, 范围小的会提升成范围大的.
- 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.
运算符
算术运算符
- 基本四则运算符:+ , - , * , / , %
*其中对于除法:int / int 结果还是Int,需要用double来计算。
0不能作为除数,
%表示取余,不仅可以对int 求模,也能对double求模
2.增量赋值运算符:+= , -= , *= , /= , %=
3.自增/自减运算符:++ , –
关系运算符
关系运算符一共有六个:== , != , < , > , <=, >=。
!!!注意:关系运算符表达式的返回值都是boolen类型。
逻辑运算符
一共有三个:&&(与) , ||(或) , !(非)
!!!注意:逻辑运算符的操作数和返回值都是boolen。
对于&&,如果表达式左侧为假,则表达式整体都为假,不需要判断右侧表达式。
对于||,如果表达式左侧为真,则表达式整体为真,无需计算右侧表达式。
&和| ,如果操作数为boolean时,也表示逻辑运算,但是不支持短路求值。
位运算符
&(按位与) , |(a按位或) , ~(按位取反) , ^(按位异或)
注意:当&和|的操作数为整数(byte ,int ,long,short)时,表示按位运算,当操作数为boolean时表示逻辑运算。
移位运算符
<<(左移) , >>(右移) , >>>(无符号右移)
左移:最左侧位不要,最右侧补0;左移一位,相当于原数字扩大2倍
右移:最右侧不要,最左侧补符号位(正数补0,负数补1),右移一位 相当于原数字缩小2倍。
无符号右移:最左侧不要,最右侧补0。
条件运算符
即三目运算符:表达式1 ?表达式2 :表达式3
当表达式1为true时,整个表达式的值为表达式2的值;
当表达式1的值为false 时,整个表达式的值为表达式3的值。