一、Java中的运算符
-
编码规范:运算符左右两侧加空格
-
分类:
-
赋值运算符
-
算术运算符
-
关系运算符
-
逻辑运算符
-
扩展的赋值运算符
-
位运算符
-
移位运算符
-
二、赋值运算符
-
=赋值,不是比较,使用注意两点
-
=两侧类型一样吗
-
超出范围了嘛
int age = 23;
byte height = 300;//超范围,报错;
int weight = 98.5;//高级类型给低级类型;
-
三、算术运算符
-
+ - * / %
++ -- 左右两侧不加空格 -
加号做数学计算和字符串连接;整数除以0,错误;小数除以0正确;%求余数;自加自减不能用于常量
public class Test1 {
public static void main(String[] args) {
// +:两个作用,数学加法,字符串连接,- * / 用于数学计算
int age = 20;
String name = "Jack";
System.out.println(name + age);// 连接
System.out.println(3 + 2 + "abc");
System.out.println("abc" + 3 + 2);
String x = 36 + "";// 把数字36转为字符串
System.out.println(3/2);// 结果:1
System.out.println(3.0/2);// 结果:1.5
System.out.println(2/3);// 结果:0
//System.out.println(3/0);// 报错
System.out.println(3.0/ 0);// Infinity无限大
System.out.println(0.0/0.0);// NaN非数字
System.out.println(3%2);// 结果:1
System.out.println(-3%2); // 结果:-1
System.out.println(2 % 3); // 结果:2
System.out.println(-2 % 3);// 结果:-2
//System.out.println(3%0); // 报错
System.out.println(3.0%0); // NaN非数字
System.out.println(3.0 % 2); // 结果:1.0
int age2 = 10;
System.out.println(age2++);// 先用再加
System.out.println(++age2);// 先加再用
System.out.println(1 - 0.9);// 结果:0.09999999999999998
}
}
四、关系运算符
-
用于比较,结果是true或false,用于判断、循环条件
> < >= <= != ==
public class Test2 {
public static void main(String[] args) {
int age = 23;
int tage = 34;
System.out.println(age>tage);
System.out.println(tage >= age);
System.out.println(tage != age);
System.out.println(tage == age);
}
}
五、逻辑运算符
-
结果是true或false,用于判断,循环条件
&(与) &&(短路与)
|(或) ||(短路或)public class Test3 {
public static void main(String[] args) {
int a = 1;
int b =5;
if (a < 0 && ++b > 0) {
System.out.println(b);
}
if (a < 0 & ++b > 0) {
System.out.println(b);
}
int c = 6;
int d = 7;
if (c == 6 || ++d > 0) {
System.out.println(d);
}
if (c == 6 | ++d > 0) {
System.out.println(d);
}
}
} -
短路与非短路的区别:
-
&&和||:如果前面的表达式已经能确定整个表达式的结果了,后面的表达式不执行,效率较高
-
&和|:所有表达式都会执行
-
六、扩展的赋值运算符
-
a+=2;a-=2;a*=2;a/=2;a%=2;
short age = 20;
age = age + 3;//报错
age+=3;//OK
七、位运算符与移位运算符
-
&与 |或 ^异或
>> 右移
<< 左移
>>> 无符号右移
<<< 无符号左移
八、面试题
-
&与&&的区别
&&,如果前面的表达式已经能确定整个表达式的结果,不会执行后面的
&,是整个表达式都执行
-
|与||的区别
||,如果前面的表达式已经能确定整个表达式的结果,不会执行后面的
|,是整个表达式都执行
-
3/0的结果
报错
-
3.0/0的结果
Infinity无限大
-
3/2的结果
1
-
2.0-1.9的结果?
0.10000000000000009
-
2%3结果
2
九、任务
-
用户输入秒数,输出几小时几分几秒。如:用户输入3452秒
public class Time {
public String calcTime(int second) {
int hour = second/60/60;
int minutes = second/60%60;
int resecond = second%60;
return hour + "小时" + minutes + "分钟" + resecond + "秒";
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Time time = new Time();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入秒数:");
int second = scanner.nextInt();
System.out.println(time.calcTime(second));
}
} -
圣诞商品打8折,顾客打折后的消费金额是2564元,请计算实际消费金额
public class money {
public float calcMoney(float money, float discount) {
float realMoney = money / discount;
return realMoney;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
money money = new money();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入消费金额:");
float cmoney = scanner.nextFloat();
System.out.println("请输入折扣");
float discount = scanner.nextFloat();
System.out.println("实际消费额为:"+money.calcMoney(cmoney, discount)+"元");
}
}