各式各样的运算符(Java)

运算符
1:算术运算符:
(1)基本四则运算符:+ -* / %
其中特别注意/ %:
A)int/int的结果还是int,如果要算小数位则使用double来计算。
B)0不能作为除数。使用时会出现算术异常.
C)%表示取余,不仅可以对int求模,也能对double来求模。
eg:System.out.println(11.5%2.0);//1.5
(2)增量赋值运算符+= -= *= /= %=
a+=1;//a=a+1;
(3)自增自减运算符++ --;
a++表示先给a赋值再加1;
++a表示先给a加一再给a赋值;
–同理;
例:
int a=10;
int b=a++;
int c=++a;
System.out.println(a);//12
System.out.println(b);//10
System.out.println©;//12
注:1.如果不取自增运算的表达式的返回值,则前置自增和后置自增没有区别。
2.如果取表达式的返回值,则前置自增的返回值是自增过的值,后置自增的返回值是自增之前的值。
2:关系运算符
关系运算符主要有六种:== != < > <= >=
特别注意:关系运算符的返回值类型都是boolean类型。
3:逻辑运算符
逻辑运算符主要有三种:&& || !
注意:逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是boolean,
(1)逻辑与&&
规则:两个表达式都是true,结果为true,否则为false。
短路求值:第一个表达式为true执行第二个表达式,第一个表达式为不false执行第二个表达式。
(2)逻辑或||
规则:只要有一个表达式为true,则为true,全为false,则为false。
短路求值:第一个表达式为true,则不执行第二个表达式,第一个为false,则执行第二个表达式。
例:
System.out.println(10>20&&10/00);//false
System.out.println(10<20||10/0
0);//true
虽然计算10/0会导致程序异常,但是上面的代码能正常的运行,说明10/0没有被真正的计算。
3:位运算
Java中对数据的操作的最小单位不是字节,而是二进制位。
& | ~ ^
位操作表示按二进制位运算,计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算。
(1)按位与&:如果两个二进制位都是1,则结果为1,否则为零。
(2)按位或||:如果两个二进制位都是0,则结果为0,否则结果为1.
注意:当&和|的操作数为整数时,表示按位运算,当操作数为boolean时,表示逻辑运算。

(3)按位取反~;如果该位为0则转为1,该位为1则转为0.
(4)按位异或^:如果两个数字的二进制位相同,则结果为0,相异结果为1。
4:移位运算符:
<< >> >>>
(1)左移<<:最左侧位不要,最右位补0.
(2)右移>>:最右位不要,最左侧补符号位(正数0,负数1)
(3)无符号右移>>>:最右侧位不要,最左位补0.
注:1:左移1位,相当于原数字的2.左移N位,相当于原数字2的N次方。
2:右移1位,相当于原数字的/2.右移N位,相当于原数字/2的N次方。
3:由于计算机计算移位效率高于计算乘除,当某个代码正好可以乘除2的N次方的时候可以用移位运算代替。
4:移动负数位或者移位位数过大都没有意义。
例题:
1;求一个整数,在内存当中存储时,二进制1的个数。

import java.util.Scanner;public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int count=0;
while(a>0){
count++;
a=a&(a-1);

    }
    System.out.println(count);

}
2;获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列

}
2:public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int i=0;
int n=0;
for(i=31;i>=1;i=i-2) {
n = (a >> i) & 1;
System.out.print(n);

    }
    System.out.println();
    for(i=30;i>=0;i=i-2){
        n=(a>>i)&1;
        System.out.print(n);

    }
}

}
3:不使用第三个变量,进行两个数字的交换;
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;

5:条件运算符:表达式1?表达式2:表达式3
当表达式1为true时,整个表达式的值为表达式2的值,当表达式1为false时,整个表达式的值为表达式3的值。
比较两数大小:a<b?a:b;
6:运算符的优先级:
在使用时无需记忆,只要在想要先计算的代码上加括号即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值