数据类型
自动类型转换
a = b ** c
-
**代表任何操作
-
b和c会自动转化为同一类型运算,向高精度类型转换
-
小数->double
-
short,byte,char->int
-
-
若此时a是低精度类型,那么就会报错
-
char类型本质是整数,注意转换时
强制类型转换
-
会造成精度降低或溢出(需注意)
-
在变量名前添加(类型),强行转换
String类型的转换
-
基本数据类型转String
-
“”+数据变量
-
-
String->基本数据类型
-
目标类型parseXX(String对象)
-
运算符
算术运算符
-
+-*
-
% ++ /
-
++i 先自增再赋值
-
i++ 先赋值再自增
关系运算符
&& || == != >= <= !
-
& 与 && 的区别
-
| 与 ||的区别
赋值运算符
+=
a+=b ------ a = a+b
三元运算符
? :
a>b ? a++:b++
-
如果a>b a++
-
如果a<b b--
运算优先级
位运算以及进制转换
进制转换
其他进制转十进制
-
从右往左,每一位代表次方,加起来即可
十进制转其他进制
-
10->2
-
将该数不断除二直到商为0
-
每一次得到的余数倒着排列
-
-
10->8
-
同样的一直除8
-
倒着排列余数
-
-
10->16
-
同理
-
二进制转其他进制
-
2->8
-
从低位开始,每三位为一组,一组代表八进制一位
-
-
2->16
-
同理,每四位为一组
-
位运算
-
">>"向右移位,低位溢出,符号位不变,用符号位补溢出的高位
-
"<<"向左移位,符号位不变,低位补零
-
">>>" 无符号右移
-
"~"按位取反
-
"|"按位或
-
"&"按位与
-
"^"按位异或
原码反码补码
正数三码合一
负数:
-
反码=原码符号位不变,其他位取反
-
补码=反码+1
计算机运算时,都是以补码的方式来运算的
当我们看运算结果的时候,要看他的原码
package com.wang.base; public class Demo11 { public static void main(String[] args) { //2的原码/补码:00000000 00000000 00000000 00000010 //3的原码/补码:00000000 00000000 00000000 00000011 //运算时都是补码 //结果是00000000 00000000 00000000 00000010(补码) //原码与之相同(三码合一) System.out.println(2&3); //-2的补码:11111111 11111111 11111111 11111101 + 1 // 11111111 11111111 11111111 11111110 //~-2的补码:00000000 00000000 00000000 00000001 //正数的原码还是该补码 System.out.println(~-2); //~2:11111111 11111111 11111111 11111101 //变回原码,负数变原码 -1后符号位不变,其他位取反 //11111111 11111111 11111111 11111100 //10000000 00000000 00000000 00000011 //-3 System.out.println(~2); } }