Java学习笔记4 java中的运算符
2017-05-05 15:04
344 查看
运算符
A.算术运算符
加,减,乘和普通的数学运算方式相同
除法需注意的几个问题
1.分析:int a = 1; int b = 2; int c = a /
b;
System.out.println(c);结果:0
结论:a,b两个整型变量相除,结果不能整除时,小数点后位数舍去,而不是四舍五入
2.分析:double a = 1; int b = 2; double c
= a / b;
System.out.println(c);结果:0.5
结论:参与运算的变量中,有整型int,有double,有short,那么结果取决于变量中表示范围最大的那个变量类型,此例中为double型
3.分析:int a = 1; int b
= 2; double c = a / b;
System.out.println(c);结果:0.0
结论:按照优先级,先算=右边的,即先计算a /
b,结果为0,算完将结果再变换为double型。可知:数学运算时,是一步步地变换类型,而不是首先变换为运算范围最大的,再计算。
4.分析:int a = 1; int b
= 2; double c =(double)a / b;
System.out.println(c);结果:0.5
结论:a,b虽为整型,但在运算前,就通过(double)强制转换a的值为一个匿名的double型变量值
取模(余)运算符,使用%表示
1.分析:int a = 5; int b
=3; int c = a % b;
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / 3的余数就是2
2.分析:int a =- 5; int
b =3; int c = a % b;
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / 3商-1,余数是-2
3.分析:int a
= -5; int b =
-3; int c = a % b;
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / -3商1,余数是-2
4.分析:int a =
5; int b = -3; int c = a % b;
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / -3商-1,余数是2
总之:取模结果的符号与被除数相同。
5.分析:int a =
5; int b = -3; int c = a % b;
System.out.println(c);结果:2
B.关系运算符:
大于(>),小于(<),等于(==),不等于(!=),大于等于(>=),小于等于(<=)
1)分析:int a = 3;int b =
2;boolean c = (a>b);
System.out.println(c);结果:true
2)分析:int a = 3;int b =
2;boolean c = (a<b);
System.out.println(c);结果:false
C.逻辑运算符:(也为布尔型)(执行顺序,左到右)
1)逻辑与(表示并且):使用&&表示,是双目运算符(即有两个操作数的运算符),只有当两个操作数都为真,结果才为真,其他均为假
分析:int a = 1; int b = 2; int c = 3; int d = 4;
boolean e = (a<b) &&
(c<d); System.out.println(e);
结果:true
2)逻辑或(表示或者):使用||表示,也是双目运算符,只有当两个操作数均为假时才为假,其他均为真。
分析:int a = 1; int b = 2; int c = 3; int d = 4;
boolean e = (a<b) || (c>d);
System.out.println(e);
结果:true
3)关于逻辑运算符的短路特性:
理解:逻辑运算符按从左到右的执行顺序,当遇到可判定出结果的步骤时,直接输入结果,不再继续执行下去。
分析:(1)int a = 3;Boolean b =
(1<2) &&
((a=1)<4);
System.out.println(b);
System.out.println(a);
结果:true
1
(2)int a = 3;Boolean b =
(1>2) &&
((a=1)<4);
System.out.println(b);
System.out.println(a);
结果:false
3
结论:由于1>2为假,因此可判定结果为假,后面的无需再执行,所以a=1没有执行,a任然是3.
引申:在逻辑或运算符中,||前为真,则||后不再执行
总之,逻辑与:如果第一个操作数为false,结果就是false,在这种情况下,逻辑与后面的运算不会被执行,则发生了短路
逻辑或:如果第一个操作数为true,结果就是true,在这种情况下,逻辑或后面的运算不会被执行,则发生了短路
4)关于变量的自增与自减:
实现a自加1的几种形式:int a = 2; a +=
1;
//等价于a = a+1;
//等价于a++;//等价于++a;
a++与++a的区别:
分析:int a = 1; int b = a++;结果:a==2,b==1;
Int a = 1; int b = ++a;结果:a==2,b==2;
结论:关于int b = a++;先将a的值赋给b,后a自加;关于int b =
++a先将a自加,后将自加后a的值赋给b。
实现减法自减与加法自减相同,只是做的减发运算。
a =
a + 2等价于a += 2;
a = a -
2等价于a -= 2;
a =a *
2等价于a *= 2;
a = a /
2等价于a /= 2;
D.条件运算符(三元表达式)
其形式为type d = a ? b : c;
分析:如果a为真,则返回b,如果a为假,则返回c
A.算术运算符
加,减,乘和普通的数学运算方式相同
除法需注意的几个问题
1.分析:int a = 1; int b = 2; int c = a /
b;
System.out.println(c);结果:0
结论:a,b两个整型变量相除,结果不能整除时,小数点后位数舍去,而不是四舍五入
2.分析:double a = 1; int b = 2; double c
= a / b;
System.out.println(c);结果:0.5
结论:参与运算的变量中,有整型int,有double,有short,那么结果取决于变量中表示范围最大的那个变量类型,此例中为double型
3.分析:int a = 1; int b
= 2; double c = a / b;
System.out.println(c);结果:0.0
结论:按照优先级,先算=右边的,即先计算a /
b,结果为0,算完将结果再变换为double型。可知:数学运算时,是一步步地变换类型,而不是首先变换为运算范围最大的,再计算。
4.分析:int a = 1; int b
= 2; double c =(double)a / b;
System.out.println(c);结果:0.5
结论:a,b虽为整型,但在运算前,就通过(double)强制转换a的值为一个匿名的double型变量值
取模(余)运算符,使用%表示
1.分析:int a = 5; int b
=3; int c = a % b;
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / 3的余数就是2
2.分析:int a =- 5; int
b =3; int c = a % b;
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / 3商-1,余数是-2
3.分析:int a
= -5; int b =
-3; int c = a % b;
System.out.println(c);结果:-2
结论:与普通除法取余相同,-5 / -3商1,余数是-2
4.分析:int a =
5; int b = -3; int c = a % b;
System.out.println(c);结果:2
结论:与普通除法取余相同,5 / -3商-1,余数是2
总之:取模结果的符号与被除数相同。
5.分析:int a =
5; int b = -3; int c = a % b;
System.out.println(c);结果:2
B.关系运算符:
大于(>),小于(<),等于(==),不等于(!=),大于等于(>=),小于等于(<=)
1)分析:int a = 3;int b =
2;boolean c = (a>b);
System.out.println(c);结果:true
2)分析:int a = 3;int b =
2;boolean c = (a<b);
System.out.println(c);结果:false
C.逻辑运算符:(也为布尔型)(执行顺序,左到右)
1)逻辑与(表示并且):使用&&表示,是双目运算符(即有两个操作数的运算符),只有当两个操作数都为真,结果才为真,其他均为假
分析:int a = 1; int b = 2; int c = 3; int d = 4;
boolean e = (a<b) &&
(c<d); System.out.println(e);
结果:true
2)逻辑或(表示或者):使用||表示,也是双目运算符,只有当两个操作数均为假时才为假,其他均为真。
分析:int a = 1; int b = 2; int c = 3; int d = 4;
boolean e = (a<b) || (c>d);
System.out.println(e);
结果:true
3)关于逻辑运算符的短路特性:
理解:逻辑运算符按从左到右的执行顺序,当遇到可判定出结果的步骤时,直接输入结果,不再继续执行下去。
分析:(1)int a = 3;Boolean b =
(1<2) &&
((a=1)<4);
System.out.println(b);
System.out.println(a);
结果:true
1
(2)int a = 3;Boolean b =
(1>2) &&
((a=1)<4);
System.out.println(b);
System.out.println(a);
结果:false
3
结论:由于1>2为假,因此可判定结果为假,后面的无需再执行,所以a=1没有执行,a任然是3.
引申:在逻辑或运算符中,||前为真,则||后不再执行
总之,逻辑与:如果第一个操作数为false,结果就是false,在这种情况下,逻辑与后面的运算不会被执行,则发生了短路
逻辑或:如果第一个操作数为true,结果就是true,在这种情况下,逻辑或后面的运算不会被执行,则发生了短路
4)关于变量的自增与自减:
实现a自加1的几种形式:int a = 2; a +=
1;
//等价于a = a+1;
//等价于a++;//等价于++a;
a++与++a的区别:
分析:int a = 1; int b = a++;结果:a==2,b==1;
Int a = 1; int b = ++a;结果:a==2,b==2;
结论:关于int b = a++;先将a的值赋给b,后a自加;关于int b =
++a先将a自加,后将自加后a的值赋给b。
实现减法自减与加法自减相同,只是做的减发运算。
a =
a + 2等价于a += 2;
a = a -
2等价于a -= 2;
a =a *
2等价于a *= 2;
a = a /
2等价于a /= 2;
D.条件运算符(三元表达式)
其形式为type d = a ? b : c;
分析:如果a为真,则返回b,如果a为假,则返回c
相关文章推荐
- JAVA学习笔记4——JDBC方式连接数据库
- 《thinking&nbsp;in&nbsp;java》学习笔记10
- Java学习笔记6 理解什么是面向对…
- Java学习笔记12 java中的多态、抽…
- Java学习笔记11 面向对象之继承与…
- Java学习笔记16 字符串及equals方…
- Java学习笔记15 单例设计模式(Sin…
- Java学习笔记22 jdk5.0新特性
- Java学习笔记18 ArrayList 和Linke…
- Java学习笔记20 策略模式(Stratag…
- java基础教程学习笔记总结&nbsp;7-10节
- java基础教程学习笔记总结&nbsp;11-18节
- Java学习笔记8 面向对象之封装2
- Java学习笔记23 反射机制(reflect…
- 《thinking&nbsp;in&nbsp;java》学习笔记3
- Java学习笔记5 java中的流程控制语…
- Java学习笔记7 面向对象设计的三大…
- Java学习笔记1 SE入门,jdk的下载…
- Java学习笔记26 异常Exception
- [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套