(1)当运算符两边有一个为字符串时,拼接字符串。
public static void main(String[] args) {
System.out.println(1+"2");
}
##输出12
(2)当运算符两边都为数字时,求和。
public static void main(String []args){
System.out.println(1+2);
}
//输出3
用于求两数的差
public static void main(String []args){
System.out.println(2-1);
}
//输出1
用于求两数的积
public static void main(String []args){
System.out.println(2*1);
}
//输出2
(1)当运算符两边有一个为小数时,求商。
public static void main(String []args){
System.out.println(3.0/2);
}
//输出1.5
(2)当运算符两边都为整数时,只要整数部分,并省略掉小数部分。
public static void main(String []args){
System.out.println(3/2);
}
//输出1
用于求两数相除之后的余数(模)
public static void main(String []args){
System.out.println(3%2);
}
//输出1
(1)++i:i先自加1,然后做其他运算。
public static void main(String []args){
int i=0;
System.out.println(++i);
}
//输出1
(2)i++:先做其他运算,然后i自加1。
public static void main(String []args){
int i=0;
System.out.println(i++);
System.out.println(i);
}
//输出0
//输出1
(1)–i:i先自减1,然后做其他运算。
public static void main(String []args){
int i=1;
System.out.println(--i);
}
//输出0
(2)i–:先做其他运算,然后i自减1。
public static void main(String []args){
int i=1;
System.out.println(i--);
System.out.println(i);
}
//输出1
//输出0
public static void main(String[] args) {
int a=1;
System.out.println(a);
}
//输出1
赋值运算符就是将等于右边的值赋给等于左边的变量。
public static void main(String[] args) {
int a=1;
a+=2;
System.out.println(a);
}
//输出3
实际上就是a=a+2;
public static void main(String[] args) {
int a=1;
a-=2;
System.out.println(a);
}
//输出-1
实际上就是a=a-2;
public static void main(String[] args) {
int a=2;
a*=2;
System.out.println(a);
}
//输出4
实际上就是a=a*2;
public static void main(String[] args) {
int a=4;
a/=2;
System.out.println(a);
}
//输出4
实际上就是a=a/2;
public static void main(String[] args) {
int a=5;
a%=2;
System.out.println(a);
}
//输出2
实际上就是a=a%2;
关系运算符的返回值为boolean
名称 | 作用 |
---|---|
> | 第一个数是否大于第二个数 |
< | 第一个数是否小于第二个数 |
== | 比较基本数据类型时,比较值是否相等,用于比较String时,会比较地址是否相等。 |
>= | 第一个数是否大于等于第二个数 |
<= | 第一个数是否小于等于第二个数 |
!= | 第一个数是否不等于第二个数 |
1、&&运算符(短路与):&&两边的表达式必须都为true,则结果才会true,否则为false。
public static void main(String []args){
if(1==1&&2==2){
System.out.println(true);
}else {
System.out.println(false);
}
}
//输出true
2、||运算符(短路或):||两边的表达式只要有一个为true,则结果为true,否则为false。
public static void main(String []args){
if(1==1||2==3){
System.out.println(true);
}else {
System.out.println(false);
}
}
//输出true
3、!运算符:结果为true,则为false,结果为false,则为true。
public static void main(String []args){
if(!false){
System.out.println(true);
}else {
System.out.println(false);
}
}
//输出true
4、&&和&的区别
共同点:都是判断两边表达式是否为true才返回true
不同点:&&当左边表达式为false时,不会继续判断右边的表达式,&不管左边表达式是否为false,都会判断右边的表达式。
public static void main(String []args){
int i=1;
if(1==0&&i++==2){
}
System.out.println(i);
}
//输出1
public static void main(String []args){
int i=1;
if(1==0&i++==2){
}
System.out.println(i);
}
//输出2
5、||和|的区别
共同点:都是判断两边表达式是否只要有一个为true就返回true,否则返回false。
不同点:||当左边表达式为true时,不会继续判断右边的表达式,|不管左边表达式是否为false,都会判断右边的表达式。
public static void main(String []args){
int i=1;
if(1==1||i++==2){
}
System.out.println(i);
}
//输出1
public static void main(String []args){
int i=1;
if(1==1|i++==2){
}
System.out.println(i);
}
//输出2
格式:表达式?值:值
public static void main(String[] args) {
System.out.println(1>2?1:2);
}
//输出2
所以:三目运算符的效果是当表达式为true时取?后面的值,为false则取:后面的值
将两个数转为对应的二进制后,然后对每一位的数进行比较,两个都为1则为1,否则则为0。
示例:2&3
2的二进制:0010
3的二进制:0011
结果是0010
将0010转为10进制之后是2,所以2&3=2;
将两个数转为对应的二进制后,然后对每一位的数进行比较,有一个为1则为1,否则则为0。
示例:5|7
5的二进制:0101
7的二进制:0111
结果是0111
将0111转为10进制之后是7,所以5|7=7;
将数转为对应的二进制后,如果位为1, 则为0,为0就为1。
示例:~6
6的二进制:00000000 00000000 00000000 00000110
取反后:11111111 11111111 11111111 11111001
因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。
因此,我们可将这个二进制数的补码进行还原:
(1)首先,末尾减1得反码: 11111111 11111111 11111111 11111010
(2)其次,将各位取反得原码:00000000 00000000 00000000 00100101
(3)此时二进制转原码为-7
(4)所以~6 = -7
快速运算:+1取反
将数转为对应的二进制后,如果位相同则为0,不同为1
示例:2^3
2的二进制:0010
3的二进制:0011
结果0001
将0001转为10进制之后是1,所以2^3=1;
将数字先转为二进制,然后将数字左移,<<左边的数是值,右边的是要移动的位数。
示例:2<<2
2的二进制:0010
将1向左移动两位是1000,转为十进制是8,所以2<<2是8
快速运算:2*2的平方
将数字先转为二进制,然后将数字右移,>>左边的数是值,右边的是要移动的位数。
示例:8>>2
8的二进制:1000
将1向右移动两位是0010,转为十进制是2,所以8>>2是2
快速运算:8/2的平方
计算正数时和>>作用相同,计算负数时则是会去掉符号
示例:-8>>>2
-8的二进制原码是10000000 00000000 00000000 00001000
-8的二进制反码是11111111 11111111 11111111 11110111
-8的二进制补码为11111111 11111111 11111111 11111000
右移两位之后为00111111 11111111 11111111 11111110
转为十进制结果为1073741822,所以-8>>>2等于1073741822
先计算()、.、{}、;和,然后