运算符
前言
在学Java的运算符之前,可能在大家的理解中运算符就是数学中的运算符:加+、减-、乘*、除/、取余、大小比较等。而在计算机中的运算符,与数学中的运算符类似,但是又有不同,下面则是学习计算机运算符的运用。
一、算术运算符
算术运算是计算机最基本的运算,包含有:加+、减-、乘*、除/、求模%
1.加(+)运算符
运算符+,在数学中就是加的运算,而在计算机中,它则会有两种情况。
1.1 作为运算符
public class Test {
public static void main(String[] args) {
double a=14.0;
int b=3;
double c=a+b; //整型自动转化小数
System.out.println(c);//结果:17.0
//在变量后写两个+的运算时
int d=10;
d++;//++在后,先运算,先自身+1;d=d+1
System.out.println(d);//结果:11
//在变量前写两个+的运算时
int e=10;
++e;//++在前,先自身+1,然后参与运算;e=e+1
System.out.println(e);//结果:11
//参加其他运算时两个+的运算会有区别
c=b*(d++)
//++在后,先运算,再自身+1;
//等价于:c=b*d => c=3*10;d++;
System.out.println(c);//结果:30.0
System.out.println(d);//结果:11
c=b*(++d)
//++在前,先自身+1,再进行运算;
//等价于:d++;c=b*d =>c=3*11;
System.out.println(c);//结果:33.0
System.out.println(d);//结果:11
}
}
1.2作为拼接符
//输出打印时,输出的内容有字符或字符串
public class Test {
public static void main(String[] args) {
int a=14;
int b=3;
int c=a+b;
System.out.println("c的结果是:"+c);//打印结果:c的结果是:7
System.out.println("14"+c);//打印结果:1417
//有双引号或单引号的内容就是字符串或字符,+号就会变成拼接符
}
}
2.减(-)运算符
public class Test {
public static void main(String[] args) {
int a=14;
int b=3;
int c=a-b;
System.out.println("c的结果是:"+c);//打印结果:c的结果是:11
//在变量后写两个-的运算时
int d=10;
d--;//--在后,先运算,先自身-1;d=d-1
System.out.println(d);//结果:9
//在变量前写两个+的运算时
int e=10;
--e;//++在前,先自身-1,然后参与运算;e=e-1
System.out.println(e);//结果:9
//参加其他运算时两个-的运算会有区别
c=b*(d--)
//--在后,先运算,再自身-1;
//等价于:c=b*d => c=3*10;d--;
System.out.println(c);//结果:30
System.out.println(d);//结果:9
c=b*(--d)
//--在前,先自身-1,再进行运算;
//等价于:d--;c=b*d =>c=3*9;
System.out.println(c);//结果:27
System.out.println(d);//结果:9
}
}
3.乘(*)运算符
public class Test {
public static void main(String[] args) {
int a=14;
int b=3;
int c=a*b;
System.out.println("c的结果是:"+c);//打印结果:c的结果是:42
}
}
4.除(/)运算符
public class Test {
public static void main(String[] args) {
int a=9;
int b=3;
int c=a/b;
System.out.println("c的结果是:"+c);//打印结果:c的结果是:3
}
}
4.求模(%)运算符
//计算机的求模运算,其实就是数学里面所说的取余运算,规定的说法不一样
public class Test {
public static void main(String[] args) {
int a=9;
int b=3;
c=a%b; //取余
System.out.println("a%b="+c);
}
}
二、赋值运算
赋值运算符:=, +=,-=,/=, *=, %=
public class Test {
public static void main(String[] args) {
int a=20;
int b=10;
// a+=b; //a=a+b
// System.out.println(a);
// a-=b; //a=a-b;
// System.out.println(a);
// a*=b+1; //a=a*(b+1)
// System.out.println(a);
// a/=b+1; //a=a/(b+1)
// System.out.println(a);
a%=b+1; //a=a%(b+1)
System.out.println(a);
}
}
三、关系运算
关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)
//关系运算就是对变量的值进行比较,比较的结果都是boolean类型,只有两个:true或false
public class Test {
public static void main(String[] args) {
int a=15;
int b=15;
System.out.println("a>b===="+(a>b)); //false
System.out.println("a<b===="+(a<b));//false
System.out.println("a>=b===="+(a>=b));//true
System.out.println("a<=b===="+(a<=b));//true
System.out.println("a==b===="+(a==b));//true
System.out.println("a!=b===="+(a!=b));//false
}
}
四、逻辑运算
逻辑运算符:&&(短路与);||(短路或);!(非,也可称为取反)。为什么会叫短路与,短路或。因为&&和||是短路运算符,具有短路运算的功能,所谓短路运算符,即当第一个操作数已经能够确定整个表达式的值时,就不再计算第二个操作数。可以理解为从左往右计算,当第一个计算出结果后,后面的计算则不会执行。
public class Test {
public static void main(String[] args) {
int a=10;
int b=15;
int c=10;
//&&: 连接两个关系运算符。 两个关系运算符得到的结果都是true时,最终的结果才是true.
// boolean f1=a<b&&b>c;//a>b返回的是true 且 a>c返回的结果也是true时
boolean f1=a>b&&b>c;
System.out.println(f1);
//&&的关系运算可以更好的理解什么是短路运算,a>b的结果是false,
//那个这个f1的结果就是false,最后b>c的关系运算可以不用执行,
//因为第一个操作数已经得出一个结果能够确定整个表达式的结果。
//||: 连接两个关系运算符。 两个关系运算符只要由一个为true,最终的结果就可以是true
boolean f2=a>b||b>c;
System.out.println(f2);
//!: 取反。
boolean f3=!(a>b||b>c);
System.out.println(f3);
}
}
五、位运算
位运算符的运算和上面的逻辑运算有一点的相似,但又区别于逻辑运算。位运算是关于二进制的逻辑运算,即对二进制每一位进行运算,位运算没有短路运算这个说法,即使是得到结果能确定表达式的结果,后面的第二个操作数还是需要执行一遍
位运算符:与( & )、或( | )、异或( ^ )
public class Test {
public static void main(String[] args) {
int a=5; //转为二进制:101
int b=4; //转为二进制:100
//与( & ):两个为1时结果为1,否则为0
int c=a&b; //二进制结果:100 打印内容:4
/*计算方式:
a 1 0 1
b 1 0 0
二进制结果: 1 0 0
打印内容: 4
*/
//或( | ):两个其中有一个为1时结果就为1,否则为0
int d=a|b; //二进制结果:101 打印内容:5
/*计算方式:
a 1 0 1
b 1 0 0
二进制结果: 1 0 1
打印内容: 5
*/
//异或( ^ ):相同则为0 不同则1
int f=a^b; //二进制结果:001 打印内容:1
/*计算方式:
a 1 0 1
b 1 0 0
二进制结果: 0 0 1
打印内容: 1
*/
System.out.println("c==="+c);
System.out.println("d==="+d);
System.out.println("f==="+f);
}
}
ps:这种位运算方式不推荐使用,作为了解。有兴趣的可以深入了解。
六、三目运算
三目运算语法:表达式?值1:值2
如果表达式为真,则执行值1,否则执行值2
public class Test {
public static void main(String[] args) {
int age = 25;
String s = age > 18 ? "成年" : "未成年";
//表达式的结果是true,执行值1,即打印结果:成年
System.out.println(s);
}
}
七、输入对象
输入对象的方法:Scanner,里面包含next(),nextInt()等;
next()用来输入字符串;nextInt()用来输入整数;nextdouble()用来输入小数;
输入对象的写法:Scanner 变量名=new Scanner(System.in);
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);//输入对象。
System.out.println("请输入姓名:");
String n=sc.next(); //在控制台输入的字符串 赋值给变量s
System.out.println("请输入年龄:");
int a=sc.nextInt();
System.out.println("你输入的内容:"+n);
System.out.println("你输入的年龄:"+a);
}
}
总结
本章内容主要学习的是计算机的运算符及其计算方式,需要注意的是加(+)运算符,在不同情况下的用法。逻辑运算和位运算的区别,最后注意的是++(–)在前和在后的区别是什么。