java运算符
来源:互联网 发布:乱世佳人电影结局知乎 编辑:程序博客网 时间:2024/06/14 11:00
java的运算符
- 算数运算符:+ - * / % ++ --
- 赋值运算符:= += -= *= /= %=
- 关系运算符:> < >= <= == !=
- 逻辑运算符:! & | ^(取反) && ||
- 位运算符:! & | ~ >> << >>>(无符号右移)字
- 符串连接符号:+
算数运算符:
对于+ 、-、*、/ 这里不做介绍。
/ (除号的右边不能为0)
++i/--i: 先自增/自减再参与运算
i++/i--: 先参与运算再自增/自减
赋值运算符:
-= --> a-=b;---> a = a-b;
*= --> a*=b;---> a = a*b;
/= --> a/=b;---> a = a/b;
%= --> a%=b;---> a = a%b;
注意:
short b = 2;
b = b + 3;//两次运算 第一次 相加 第二次 赋值 不会自动转换
b+=3; //这是一次运算 只做了一次赋值运算 会自动转换
System.out.println(b)// b = b + 3;会报错,因为3默认为int型,类型不匹配
示例:
class Demo_1{public static void main(String[] args){int a = 1;int b = 2;/*int aplus = a++;//先赋值再自增int bplus = b--;System.out.println(a+" "+b);//a=2 b=1System.out.println(aplus+" "+bplus);//aplus=1 bplus=2*/int aplus1 = ++a;//先自增后赋值int bplus1 = --b;System.out.println(a+" "+b);//a=2 b=1System.out.println(aplus1+" "+bplus1);//aplus=2 bplus=1}}empty int a = 2; int b = 3; int c = ((a++)+(++b))*2 + (--a)%(b++) - (++a)*3 + (--b)/(--a); /* ((a++)+(++b))*2 = 12 a = 3 b = 4 (--a)%(b++) = 2%4 = 2 a = 2 b = 5 (++a)*3 = 9 a = 3 b = 5 (--b)/(--a) = 4/2 =2 a = 2 b = 4 */class Demo_3 {public static void main(String[] args) {/* short b = 2; b = b+3;//两次运算先相加后赋值 不会自动转型 b+=3;//一次运算 会自动转型 *//*int a = 12; 结果1. a+=a; 24 2. a-=2; 10 3. a*=2+3; 60 a = a*(2+3)4/ a/=a+a; 0*/}}
关系运算符:
关系运算符的结果只有true false逻辑运算符:
& 两边都是真,输出才为真
| 两边只要有一个真,输出为真
^ 异或相同为false,相反则为true。
逻辑表达式的值 真|假
两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。
区别:
&和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。
对于&来说,当左侧条件为false,右侧要继续计算, 而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,即出现短路现象。
短路计算:是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。
对于&&来说,只要运算符左侧的值为false,则因无论运算符右侧的值为true或为false,其最终结果都为false。 所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;
对于|来说,当左侧条件为true,右侧要继续计算。
对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。 所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。
下面以| 和||的举例,根据对a,b的结果进行分析比较|与||的不同:
a = 3;b = 2;//第一个表达式为真,后面的需要继续运行boolean b11 = (a--)/(b++)<2 | (--a)*(--b)!=4 | (a++)%(b--)==2;// 2 3 1 2 2 1System.out.println(b11+"\t"+a +"\t"+b);//true 2 1a = 3;b = 2;//在(a--)/(b++)<2 为真,后面的表达式不需要再运行boolean b12 = (a--)/(b++)<2 || (--a)*(--b)!=4 || (a++)%(b--)==2;// 2 3System.out.println(b12+"\t"+a +"\t"+b);//true 2 3
位运算符:
速度最快
<< 左位移运算符
>> 右位移运算符 带符号右移
>>>(无符号右移) 左侧补位全部补0
& 按位与 0101&1001 = 0001
| 按位或 0101|1001 = 1101
^ 按位异或 0101^1001 = 1100 一个数异或同一个数两次,结果是自身
~ 按位取反
将一个数左移"<<"会使该值乘以2的移动位数次幂。
将一个数右移>>"会使该值除以2的移动位数次幂 左侧补位按最高位
字符串连接符号:字符串数据和任何数据使用+都是相连接的意思,最后都会变成字符串。
三元(目)运算符:格式:关系表达式 ? 表达式1 : 表达式2;
字符串连接符号:
+
字符串数据和任何数据使用 + 都是相连接的意思,最终都会变成字符串
System.out.println("6+6"+6+6);//输出结果为6+666
System.out.println(6+6+"6+6");//输出结果为126+6
- Java运算赋值运算符
- Java| Java 运算符
- Java位运算符
- java运算符
- java中的“%”运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- Java 位运算符
- java 运算符优先级
- Java 位运算符
- java 运算符
- JAVA入门:运算符
- JAVA 运算符 >> >>> <<
- JAVA移位运算符
- Java 位运算符
- JAVA移位运算符
- java 运算符
- impala与hbase整合
- Android Material Design Behavior
- hibernate 数据操作流程
- 多线程之GCD详解
- 浏览器访问网页全过程
- java运算符
- Linux下解决Qt连接MySql找不到驱动的问题
- 难理解的c代码(1)
- arraycopy方法和二维数组
- Fiddler--下载安装、原理、教程
- 自定义view group
- Java基础知识总结(绝对经典)
- [题解]hdu5634 Rikka with Phi
- 【经验随笔】Restlet Client发送XML格式参数消息