运算符分为很多种:
算数运算符,赋值运算符,关系运算符,逻辑运算符,自增自减运算符,三目运算符,字符串连接符。
算数运算符:+(加),-(减),*(乘),/(除),%(取余)
这里的加减乘除其实就是最基本的数学中的运算
// + 加法
int a=2,b=3;
int c = a+b;
System.out.println(c);//5
System.out.println(a+b);//5
System.out.println(a+5);//7
double a=3.14,b=5.2;
double c = a+b;
System.out.println(c);//8.34
System.out.println(a+b);//8.34
System.out.println(a+5);//8.14
// - 减法
int a=10,b=3;
int c = a-b;
System.out.println(c);//7
System.out.println(a-b);//7
System.out.println(a-5);//5
double a=6.14,b=5.2;
double c = a-b;
System.out.println(c);//0.94
System.out.println(a-b);//0.94
System.out.println(a-5);//1.14
// * 乘法
int a=2,b=3;
int c = a*b;
System.out.println(c);//6
System.out.println(a*b);//6
System.out.println(a*5);//10
double a=3.1,b=5.1;
double c = a*b;
System.out.println(c);//15.81
System.out.println(a*b);//15.81
System.out.println(a*6.1);//18.91
// 除法:/
int a=9,b=3;
int c = a/b;
System.out.println(c);//3
System.out.println(a/b);//3
System.out.println(a/2);//4
//精度丢失,虽然最后计算出的结果是dooble类型,但是因为a和2都是int类型,两个int类型做运算,就算结果是double型,系统还是会强制将最终结果转换成了int类型,因此小数就被无条件舍弃了
double a=10.3,b=5.15;
double c = a/b;
System.out.println(c);//2.0
System.out.println(a/b);//2.0
System.out.println(a/5);//2.06
重点讲述%(取余):
%百分号在java里叫取余
被除数除以除数等于商…余数
取余就是整数除法计算后的余数
若%后结果是0则是整除
//具体看下面代码的实现
//整除情况
System.out.println(10%5);//0
int a=6,b=2;
System.out.println(b%a);//0
//执行过程
//a是6个数,2个数2个数的取出,最后全部取出,剩余0个数所以余数是0
//不被整除
System.out.println(10%3);//1
int a=10,b=3;
System.out.println(a%b);//1
//a是10个数,3个数3个数的取出,剩余1个数,不够3个数,所以余数是1
赋值运算符:=(一个等号赋值的意思),+=(加等于),- =(减等于),*=(乘等于) ,/=(除等于),%=(取余等于)
=
一个等号是赋值的意思,就是将等号后面的数或字符串,赋值给等号前面的变量名
+=
变量自身加一个数然后将结果再赋值给自身
-=
变量自身减一个数然后将结果再赋值给自身
*=
变量自身乘一个数然后将结果再赋值给自身
/=
变量自身除以一个数然后将结果再赋值给自身
%=
变量自身取余一个数一个数然后将结果再赋值给自身
具体代码:
=(赋值)
int a = 5;
System.out.println(a);//5
+=(加等于)
int age = 17;
age += 3;
System.out.println(age);//20
-=(减等于)
int b = 10;
b -= 3;
System.out.println(b);//7
*=(乘等于)
int c = 7;
c *= 3;
System.out.println(c);//21
/=(除等于)
int d =20;
d /= 4;
System.out.println(d);//5
%=(取余等于)
int e = 10;
e %= 2;
System.out.println(e);//0
int f = 12;
f %= 5;
System.out.println(f);//2
关系运算符:>(大于),<(小于),==(两个等号是等于的意思),>=(大于或等于),<=(小于或等于),!=(不等于)
用关系运算符运算出的结果一定是boolean类型,一般用于判断条件
具体代码:
//大于>
int a=5,b=10;
boolean c = a>b;
System.out.println(a > b);//false
System.out.println(b > a);//true
System.out.println(c)//false
//小于<
int a=5,b=10;
boolean c = a<b;
System.out.println(a < b);//true
System.out.println(b < a);//false
System.out.println(c)//true
//等于
int a=5,b=10;
System.out.println(a == b);//false
System.out.println(a == 5);//true
/*
不管是大于等于还是小于等于 只要两个数的对比满足等于,大于,小于,其中一个条件则结果就是true,若两个都不满足则结果为false
*/
//大于等于 >=
int a=10,b=15;
System.out.println(a>=b);//false
System.out.println(a>=20);//false
//小于等于 <=
int a=10,b=15;
System.out.println(a<=b);//true
System.out.println(a<=20);//true
// 不等于 !=
int a=10,b=15;
System.out.println(a!=b);//true
System.out.println(a!=20);//true
/*这里的不等于的判断逻辑正好和等号相反
等号是两数相等结果为true,两数不等结果为false
不等于是只要两数不相等,不管是前数大于后数还是前数小于后数结果都是true,若两数相等则判断结果为false
*/
逻辑运算符:$$(与),||(或),!(非)
&&(与):只要一个为false则最终结果为false
||(或):只要一个为true则最终结果为true
!(非):取反
逻辑运算符是建立在关系运算符的基础之上的
逻辑运算的结果也是boolean型
// &&(与):只要一个为false则最终结果为false,反之当两个结果都为true时最终结果为true
int a=5,b=10,c=5;
boolean b1 = b>=a && b<c;
System.out.println(b1);//true && false = false
System.out.println(b<=a && b>c);//false && true = false
System.out.println(a==b && c>b);//false && false = false
System.out.println(a<b && b>c);//true && true = true
// ||(或):只要一个为true则最终结果为true,反之当两个结果都为false时最终结果为false
int a=5,b=10,c=5;
boolean b1 = b>=a || b<c;
System.out.println(b1);//true && false = true
System.out.println(b<=a || b>c);//false && true = true
System.out.println(a==b || c>b);//false && false = false
System.out.println(a<b || b>c);//true && true = true
// !(取反):取最终结果的相反值,
int a=5,b=10,c=5;
boolean b1 = !(b>=a && b<c);
System.out.println(b1);//true && false = false
System.out.println(!(b<=a) && b>c);//true && true = true
System.out.println(a==b && !(c>b));//false && true = false
// 短路:
int a=5,b=10,c=5;
boolean b3 = a>b && c++>2;
System.out.println(b3);//false(且发生了短路)
System.out.println(c);//5
当&&判断的第一个判断为false 则第二个判断不执行
|| 和&&同理(||判断的第一个判断为true 则第二个判断不执行)
自增自减运算符:++(加1),–(减1)
/*自增自减单独使用的情况下*/
int a=5,b=5;
a++;//相当于a=a+1;
++a;//相当于a=a+1;
System.out.println(a);//6
b--;//相当于a=a-1;
--b;//相当于a=a-1;
System.out.println(b);//4
int a = 5,b = 5;
int c = a++;
int d = ++b;
System.out.println(a);//6
System.out.println(b);//6
System.out.println(c);//5
System.out.println(d);//6
分析:无论变量是单独使用还是被使用,只要此变量++了就会加1
只要此变量--了就一定会减1
当变量自增自减被使用时,自增自减在前则先自增自减后赋值,若在后则先赋值在自增自减
三目/条件运算符:boolean值(或判断条件)?代码段1:代码段2
条件/三目运算符:
1)语法:
boolean?数1:数2
2)执行过程:
整个条件运算符是有值的,它的值要么是?号后的数1,要么是:号后的数2
值到底为谁,是由前面的boolean来控制的
计算boolean的值:
若为true,则整个表达式的值为?号后的数1
若为false,则整个表达式的值为:号后的数2
int num = 2;
int flag = num>0 ? 1 : -1;
System.out.println(flag);//1
int num = -5;
int flag = num>0 ? 1 : -1;
System.out.println(flag);//-1
字符串连接符:+(拼接符)
int age = 17;
System.out.println("我今年"+age+"岁");//我今年17岁
String name = "武洋洋";
System.out.println("我叫"+name);//我叫武洋洋
double price = 37.5;
int amount = 5;
double total = price*amount;
System.out.println("商品单价:"+price+"元,"+"购买数量:"+amount+"个,"+"商品总价:"+total+"元");//商品单价:37.5元,购买数量:5个,商品总价:187.5元