基本运算符
1、当数字相加时,如果有一个是long类型,那么相加结果是long类型,如果都不是long类型,那么相加结果是int
2、%取余也叫模运算
3、执行完下面的代码,输出a=12;b=10;c=12;
int a=10;
int b=a++;
int c=++a;
这是因为a++是先把10赋值给b,a再自增1变成11;而++a是先自增1变成12,再把12赋值给c
逻辑运算符
与或运算符,如果前面已经能判断结果,那么后面的不再执行,比如:
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.print(d);
System.out.print(c);
输出结果为:
false
5
c<4为false,这时就已经可以判断d为false(因为&&两者都是真结果才为真),所以后面的c++<4不执行,所以输出的c还是5
位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
符号 | 描述 | 举例 |
---|---|---|
& | 如果相对应位都是 0,则结果为 0,否则为 1 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
(左移相当于*2,右移相当于/2)
字符串连接符
int a=10;
int b=20;
System.out.print(a+b+" ");
System.out.print(" "+a+b);
输出结果为:
30
1020
第一种是先运算后拼接,运算正常执行;第二种是先拼接后运算,String先出现,把后面的东西也转换成了String
三元运算符
x?y:z
如果x==true,则结果为y,否则为z
int score=80;
String type=score<60?"不及格":"及格";