一、基本数据类型默认值
二、基本数据类型转换
--boolean 类型不能转换成任何其它基本数据类型。
--自动类型转换:数据类型取值范围小的转为取值范围大的
--byte , short , int -> long -> float -> double
--char -> int -> long -> float -> double
--short , char不会互相转换
--byte + short + char三者在计算时会转换成int类型
--强制类型转换:数据类型取值范围大的 转为 取值范围小的. 需要加强制转换符,也就是(要转换的数据类型)
--long l = 100L;int i = (int)l; 但有可能造成精度降低或数据溢出,使用时要小心。
》》》char 和 int 转换实例
char a = 'a'; int b = a; //字符类型转换整型 char d = 97; //整型转换字符类型 System.out.println(b); System.out.println(d);
输出结果:
b = 97
d = a
三、运算符
--算术运算符:+ 、 - 、 * 、 / 、 % 、 ++ 、 --
--赋值运算符:= 、 += 、 -= 、 *= 、 /= 、 %=
--关系运算符:> 、 < 、 >= 、 <= 、 == 、 !=
--逻辑运算符:! 、 & 、 | 、 ^ 、 && 、 ||
--位运算符 :& 、 | 、 ^ 、 ~ 、 >> 、 << 、 >>>
--字符串连接运算符:+
注意点:
(1)自增++、自减--
int j = 0; int a = 0; for (int i = 0; i < 10; i++) { System.out.println(i); //for循环先执行再自增 j++; //j已经自增结束,j = 1 System.out.println(j); System.out.println(a++); //在打印中,先打印a出来再执行自增,a = 0 }
结果:
i = 0
j = 1
a = 0
(2)+= 、 -= 、 *= 、 /= 、 %=
float a = 1.0f; //a = a + 2.0; //错误,2.0默认是double类型 a += 2.0; //正确,a += 2.0 --> a = (float)(a + 2.0);
(3)逻辑与(&)、 逻辑或(|) 、 短路与(&&) 、 短路或(||)
--短路与&&、短路或||,只要第一个条件能判断出来,就不会进行第二条条件判断
--逻辑与&、逻辑或|,两个条件都要判断
//短路与 int i = 1; if (1==2 && 2==(++i)) { System.out.println("我进来了"); } System.out.println(i);
结果:
i = 1
//逻辑与 int i = 1; if (1==2 & 2==(++i)) { System.out.println("我进来了"); } System.out.println(i);
结果:
i = 2
(4)三目运算格式
//三目运算格式 int score = 75; String type = score >=60 ? "及格" : "不及格";
四、反码与补码
为什么有补码?
在计算机的数据表示中只定义了正数的表现形式,并没有定义负数的表现形式,所以,负数一般都用补码的形式表示
正数
正数的原码、反码、补码都相同
负数
负数的反码是符号位为1外,其他位全取反;补码就是 "反码+1";
//负数的补码 原码:1000 1001 反码:1111 0110 补码:1111 0111
//java的反码符号 ~
~-3 = 2
-3的反码为什么是2,因为计算机计算负数都是以补码来计算,然后~取反
五、位运算
--左移:"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0
--带符号右移:"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位
--无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0