Java-2 运算符
1.算数运算符加减乘除取余
- java中+,-,*,/,%运算:
class MathDemo1{
public static void main(String[] args){
int a = 15;
int b = 2;
System.out.println(a+b);//17
System.out.println(a-b);// 13
System.out.println(a*b);// 30
System.out.println(a/b);// 7
System.out.println(a%b);// 1
System.out.println(a/b*1.0);// 7.0
System.out.println(1.0*a/b);// 7.5
System.out.println((double)a/b);// 7.5
System.out.println((double)(a/b));// 7.0
}
}
2.前++和后++
- 它只能和变量一起使用,在变量的前面叫前++,在变量后面叫后++。
- 在单独使用的时候:
class MathDemo2{
public static void main(String[] args){
int a = 10;
int b = 10;
++a;
b++;
System.out.println(a);// 11
System.out.println(b);// 11
}
}
// 可以看到在单独使用时候没有区别
- 参与运算:
int c = 10;
int d = 10;
int e = ++c;
int f = d++;
System.out.println(e);// 11
System.out.println(f);// 10
System.out.println(d);// 11
当参与运算时候,前++为先加1,再运算。后++ 先运算,后加1。
- 练习
int a = 4;
int b = (a++) + (++a) + (a * 10)
4 6 60
= 70
3.赋值运算
- +=, -= , *=, /=, %=
class MathDemo3{
public static void main(String[] args){
int a = 15;
int b = 2;
System.out.println(a=b);//2
a += b;
System.out.println(a);// 4
a -= b;
System.out.println(a);// 2
a *= b;
System.out.println(a);// 4
a /= b;
System.out.println(a);// 2
a %= b;
System.out.println(a);// 0
// 错误,不兼容类型,从int到short可能会有损失
short s = 1;
s = s + 1;
// 正确,包含了一个强制类型转换,s = (short)(s+1)
short s = 1;
s+=1
}
}
4.关系运算符
- 关系运算符得到的是结果true或false
运算符 | 运算 | 例子 | 结果 |
---|---|---|---|
== | 相等 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 是否是类的对象(只能用于引用数据类型) | "hello" instanceof String | true |
- demo
class MathDemo4{
public static void main(String[] args){
int a = 15;
int b = 2;
System.out.println(a=b);// 2
System.out.println(a==b);// true
System.out.println(a>b);// false
System.out.println(a<b);// false
System.out.println("abc" instanceof String);// true
}
}
5.逻辑运算符
- 用于连接布尔类型值(变量或是常量)
& and 两边都是true才是true true&trie = true;
| or 只要有一个为true,为true true&false = true;
^ xor 异或:相同为false,不同为true true^false = true; true&true=false
- demo
class MathDemo5{
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println(a&b);//false
System.out.println(a|b);//true
System.out.println(a^b);//true
System.out.println(!(a&b));//true
}
}
- 优先级(从大到小):& ^ |
6.短路运算符
- 短路运算符包括:&& ||
&& 两个都是true,结果才是true,如果前面为flase,后面不参与运算。&与&&得到结果都是一致的。
|| 只要有一个为true,结果就是true,如果前面结果为true,后面不用计算了
- demo
int x = 3; int y = 4;
System.out.println((x++>3) & (y++ > 4));//false
System.out.println(x); // 4
System.out.println(y); // 5
int x = 3; int y = 4;
System.out.println((x++>3) && (y++ > 4));//false
System.out.println(x); // 4
System.out.println(y); // 4
int x = 3; int y = 4;
System.out.println((++x>3) | (++y > 4));//true
System.out.println(x); // 4
System.out.println(y); // 5
int x = 3; int y = 4;
System.out.println((++x>3) | (++y > 4));//true
System.out.println(x); // 4
System.out.println(y); // 4
7.逻辑运算连接数字
- & | ^ 连接正整数,需要把整数转成二进制的补码,逐位进行运算。把0当成false,把1当成true。
class MathDemo6{
public static void main(String[] args) {
System.out.println(15 & 2);// 2
System.out.println(15 | 2);// 15
System.out.println(15 ^ 2);// 13
System.out.println(~2);// -3
}
}
// int 占4个字节
15的补码 00000000 00000000 00000000 00001111
2的补码 00000000 00000000 00000000 00000010
& 00000000 00000000 00000000 00000010 按照都为1为1
| 00000000 00000000 00000000 00001111 1个为1就为1
^ 00000000 00000000 00000000 00001101 不同为1
~ 11111111 11111111 11111111 11111101 取反:e.g.: 一个为1一个为0->0,取反1(补码)
11111111 11111111 11111111 11111100 (反码, -1)
00000000 00000000 00000000 00000011 (源码, 取反)
8.位运算符用法
- 针对二进制位进行操作的运算符:
>> 右移:空位补最高位,
<< 左移:空位补零高位丢弃
>>> 无符号移动 空位补0
- demo
class MathDemo7{
public static void main(String[] args){
System.out.println(7<<2);
System.out.println(15>>2);
}
}
7 << 2
7 00000000 00000000 00000000 00000111
<<2 00000000 00000000 00000000 00011100 28
15 >> 2
15 00000000 00000000 00000000 00001111
>>2 00000000 00000000 00000000 00000011 3
// 简单运算: 左移记为相当于乘以2的几次方。右移记为相当于除以2的几次方。
9.三目运算符用法
- 三目表达式格式:
(关系表达式)? 表达式1: 表达式2;
// 如果条件为true,运算后结果示表达式1;
// 如果条件为false,运算后的结果表达式2;
// 表达式1和表达式2的最终结果是一个明确的值。
- demo
class MathDemo8{
public static void main(String[] args){
int a = 15;
int b = 23;
int c = a>b?a:b;
System.out.println(c);// 23
String d = a>b?"a":"b";
System.out.println(d);// b
}
}
- demo2
int a = 12;
int b = 44;
String c = a==b? "相等":"不相等";
System.out.println(c);//不相等
int d = 19;
boolean re = d%2==0? true:false;
System.out.println(re);//false
- 获取两个long类型整数中的最大值,输出其结果
long a = 100;
long b = 20;
long max = a > b ? a : b;
System.out.println("最大值为:"+max);// 100
- 获取三个float小数中最大值,输出其结果
float f1 = 32.5f;
float f2 = 2;
float f3 = 90.2f;
float f4 = f1 > f2 ? f1 : f2;
float max = f4 > f3 ? f4 : f3;
System.out.println("最大值为:"+ max);// 90.2
float max1 = f1>f2?f1>f3?f1:f3:f2>f3?f2:f3;
float max2 = f1>f2&f1>f3?f1:f2>f3?f2:f3;
System.out.println(max1);// 90.2
System.out.println(max2);// 90.2
// 分析
f1>f2?(f1>f3?f1:f3):(f2>f3?f2:f3)
f1>f2&f1>f3?f1:(f2>f3?f2:f3)
- 三目运算符嵌套
int y = 56;
String str = (y<50)?"hai":(y>60)?"1987":"1988";
System.out.println(str);//1988
- 计算分数:
// >= 90 A 80-89 B 70-79 C 60-69 D 60以下 E
int score = 88;
String level = (score>=90)?"A":(score>=80)?"B":(score>=70)?"C":(score>=60)?"D":"E";
System.out.println(level);// B
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库