进制
- 所有数字在计算机底层都以二进制形式存在。
- 对于整数,有四种表示方式:
- 二进制(binary):0,1,满2进1,以0b或0B开头。
- 十进制(decimal):0-9,满10进1。
- 八进制(octal):0-7,满8进1。以数字0开头表示。
- 十六进制(hex): 0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
二进制
- Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
- 二进制的整数有如下三种形式:
- 原码: 直接将一个数值换成二进制数。最高位是符号位。
- 负数的反码: 是对原码按位取反,只是最高位(符号位)确定为1。
- 负数的补码: 其反码加1。
- 计算机以二进制补码的形式保存所有的整数。
- 正数的原码、反码、补码都相同。
- 负数的补码是其反码+1。
进制间转化
- 进制间的基本转换
- 十进制 二进制互转
- 二进制转成十进制 乘以2 的幂
- 十进制转成二进制 除以2 取余数
- 二进制 八进制互转
- 二进制 十六进制互转
- 十进制 八进制互转
- 十进制 十六进制互转
- 十进制 二进制互转
运算符
算术运算符
- 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
- 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
int x=3510;
x=x/1000*1000;
x的结果是3000。
- “+”除字符串相加功能外,还能把非字符串转换成字符串.
System.out.println(“5+5=”+5+5);
打印结果是 5+5=55。
- 符号: =
- 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续赋值。
- 扩展赋值运算符: +=, -=, *=, /=, %=
比较运算符
- 比较运算符的结果都是boolean型,也就是要么是true,要么是false。
- 比较运算符“==” 不能误写成“=” 。
逻辑运算符
- 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
- “&”和“&&”的区别:
- 单&时,左边无论真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
- “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
- 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
位元素符
- 位运算是直接对整数的二进制进行的运算
三元运算符
- 格式:
- 表达式1和表达式2为同种类型;
- 三元运算符与if-else的联系与区别:
- 三元运算符可简化为if-else语句;
- 三元运算符要求必须返回一个结果;
- if后的代码块可有多个语句。
运算符的优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
- 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。