Java - 3 运算符

Java - 3 运算符

算术运算符

/*
    ++a : 先运算后取值
    a++ : 先取值后运算
*/
int i = 1;
i = i++; // (1)temp=i;(2)i=i+1;(3)i=temp;
System.out.println(i); // 1

int i = 1;
i = ++i; // (1)i=i+1;(2)temp=i;(3)i=temp;
System.out.println(i); // 2

System.out.println(10/4); // 2
System.out.println(10.0/4); // 2.5 保留小数
double d = 10/4; // 2.0

// %本质:a%b = a - a/b*b
System.out.println(10%3); // 1
System.out.println(10%3); // -1
System.out.println(10%-3); // 1

关系运算符

==用于比较基本数据类型时,它会直接比较两个变量的值是否相同。而当==用于比较对象时,它会比较两个对象的内存地址,也就是判断两个对象是否是同一个对象

equals是Java中Object类的一个方法,它用于比较两个对象的内容是否相等。在Object类中,equals方法的默认实现是比较对象的内存地址,也就是判断两个对象是否是同一个对象

String类重写了equals方法,用于比较两个字符串的内容是否相同

// str1 和 str2 可以是字符串变量, 也可以是字符串变量
str1.equals(str2);

逻辑运算符

&&: 短路与 (如果第一个条件为false,后面不会继续判断)

&: 逻辑与

三元运算符

int a = 10;
int b = 99;
int result = a>b ? a++ : b--; // 1真
int n1 = 552;
int n2 = 33;
int n3 = 123;

int max = (n1>n2?n1:n2) > n3 ? (n1>n2?n1:n2) : n3;

位运算符

按位与&

按位或|

按位异或^

按位取反~

// 2的原码(补码)    00000000 00000000 00000000 00000010
// 3的原码(补码)    00000000 00000000 00000000 00000011
// 运算(得到的是补码)00000000 00000000 00000000 00000010(是正数,所以原码也是这个)
System.out.println(2&3)

算数右移>>:低位溢出,符号位不变,用符号位补溢出的高位

本质:/2

算数左移<<:符号位不变,低位补0

本质:*2

逻辑右移(无符号右移)>>>:低位溢出,高位补0

没有<<<

posted @ 2024-10-06 15:31  wajiez  阅读(10)  评论(0)    收藏  举报