一、基础操作符
1.赋值与初始化
在声明一个变量后必须对其进行赋值或初始化,赋值可以在任意的程序段进行,初始化则是在第一次变量声明时进行,初始化只能一次,赋值能多次。赋值格式
:变量名 = 值
2.数学运算符
数学运算符就是+,-,*,/。
注意:Java中用双引号表示字符串,+号运算符用于字符串运算时被重载过,他会将字符串类型转化为非字符串类型,数值型直接转化为对应的字符串,
布尔型true转换为字符串true,对象则转化为表示对象内存地址的字符串。
3、递增与递减
Java还有++与--,他们置于变量前表示先赋值后加1,置于变量后表示先加1后赋值
3、关系运算符
关系运算符用于判断大小真假是否相等,返回布尔型。
4、逻辑运算符&&与||
5、位运算符
位运算符用于整数类型二进制运算,包括与运算符&、或运算符|、非运算符~、异或运算符^。与运算符会将整数类型转化为二进制,然后按位与运算。
8的二进制为1000,7的二进制为0111按位与后为0000及仍为0,按位或后为1111值为15,8按位非为-9,即7,8异或后为15
运算符 | 含义 | 语法 | 效果 |
<< | 左移 | a<<x | 整数a按二进制左移x位 |
>> | 右移 | a>>x | 整数a按二进制右移x位 |
& | 位与 | a&b | 整数a和b按二进制对齐,按位进行与运算 除了11得1,其他均为0 |
| | 位或 | a|b | 整数a和b按二进制对齐,按位进行或运算 除了00得0,其他均为1 |
^ | 位异或 | a^b | 整数a和b按二进制对齐,按位进行异或运算 相同为0,不同为1 |
~ | 位取反 | ~a | 整数a的二进制的每一位进行0变1,1变0的操作 |
6、位移运算符
<<与>>,i<<j表示会将i向左答复、移动j位,并将低位用0补全。
带符号的右移运算符>>则是根据数值的正负来扩展,如果值是正数一律添0,否则,一律添1.java还有一个不带正负号的右移运算符>>>,他一律用0
来填充高位,这是Java独有的。
这两个运算符在高级应用中不常用,但常有面试官问道:用高效的方法算出2的3次方的结果。解决方案是2<<2,即将2左移3位,就是8.
由于int型的范围是2的31次方减1,因此程序中标无穷大的数INF可以设置成(1<<31)-1,(必须加括号,因为位运算符的优先级小于算数运算符)
但是一般都用2的30次方减1,因为他可以避免相加超出int的范围。注意:如果把2的30次方减1写成二进制就是0x3fffffff 就是(1<<30)-1.
7.三目运算符。
条件判断语句?语句1:语句2
当条件判断语句为true是执行1,否则,执行2.
a==3?a=1:a=3
8.逗号运算符
逗号运算符用于隔开并列的表达式,这些并列表达式从左至右依次执行。
9.转型运算符
各种数据类型间可以相互转换,但是大数据范围的数字向小数值范围的数字转换必须先声明,即转型运算符“()”
注意:布尔类型不能转换为其他类型。
10.优先级问题。
略
常见面试题:
语句float f=3.1415是否正确?
错误,由于Java默认浮点型数据是double型,而浮点型的数据不能直接转换为float型,必须以显式声明的方式才可以。