【Java概念】运算符(3)
来源:互联网 发布:淘宝子账号分流设置 编辑:程序博客网 时间:2024/06/05 03:28
一、运算符
【各种运算符的特性】:
算术运算符:+(正)、-(负)、++、–、+(加)、-(减)、*、/(除)、%(取余)
关系运算符:==、!=、>、<、>=、<=
逻辑运算符:&(与)、|(或)、!(非)、∧(异或)、&&(条件与)、||(条件或)
位运算符:~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号右移位)
赋值运算符:= 、+=等
条件运算符:表达式1 ? 表达式2 : 表达式3
括号运算符:()、[]
字符串连接运算符:+
点运算符:.
对象运算符:instanceof
new运算符:
【运算符的运算级别】:
1> .()
2> ++ –
3> new
4> *、/、%
5> + -
6> >>、<<、>>>
7> > < >= <=
8> == !=
9> &
10> ^
11> !
12> &&
13> ||
14> ?:
15> = += -= *= /= %= ^=
16> &= <<= >>=
/** * 【运算符的运算级别】: */@Testpublic void t7(){ /* * 此句的执行过程:根据运算符级别,==级别 高于?:级别,因此先执行true==true?false:true ==>false */ boolean boo = true?false:true == true?false:true; System.out.println(boo);}
算术运算符:
/*** 算术运算符:+(正)、-(负)、++、--、+(加)、-(减)、*、/(除)、%(取余) */@Testpublic void t1(){ int i = 1; System.out.println(("i : " + i)); System.out.println(("++i : " + ++i)); // Pre-increment System.out.println(("i++ : " + i++)); // Post-increment System.out.println(("i : " + i)); System.out.println(("--i : " + --i)); // Pre-decrement System.out.println(("i-- : " + i--)); // Post-decrement System.out.println(("i : " + i)); i = i+++i; System.out.println(i);}
位运算符:
/*** 位运算符:~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号右移位) */@Testpublic void t2(){ /* * ~(非)运算符: * ~运算符执行原理:9的带符号二进制字节码为:[0 1001] ,每位取反得到:[1 0110] , * 带符号为[10110]对应十进制为:11001 --> 11001+1 -->11010 --> -10 。 */ int a = ~9; System.out.println("~9 = "+a);//-10 /* * &(与)运算符: * &运算符执行原理:若两个输入位都是1,则按位AND 运算符(&)在输出位里生成一个1;否则生成0。 * -8在java内存中的存储的反码为:111000,-22在java内存中的存储的反码为:101010, * 111000 & 101010 = 111000 =-24 */ int i = -8; int j = -22; System.out.println(Integer.toBinaryString(i)); System.out.println(Integer.toBinaryString(j)); a = i & j; System.out.println(i+" & "+ j +" = "+a);//-24 /* * |(或)运算符: * |(或)运算符执行原理:若两个输入位里至少有一个是1,则按位OR 运算符(|)在输出位里生成一个1; * 只有在两个输入位都是0 的情况下,它才会生成一个0。 * -8在java内存中的存储的反码为:111000,-22在java内存中的存储的反码为:101010, * 111000 | 101010 =100110 = -6 */ a = i | j ; System.out.println(i+" | "+j+" = "+a);//-6 /* * ^(异或)运算符: * ^(异或)运算符执行原理:若两个输入位的某一个是1,但不全都是1,那么按位XOR(^,异或)在输出位里生成一个1,否则为0。 * -8在java内存中的存储的反码为:111000,-22在java内存中的存储的反码为:101010, * 111000 ^ 101010 = 010010 = 18 */ a = i ^ j; System.out.println(i+" ^ "+j+" = "+a);//18 /* * <<(左移位)运算符: * <<(左移位)运算符执行原理:能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。 * 1的二进制字节码为 [0001] ,整体左移两位并且底位补零,变为:00[0100],因此0100对应十进制为:4 */ a = 1<<2; System.out.println("1<<2 = "+a);//4 a = -2<<2; System.out.println("-2<<2 = "+a);//-2 = 1010 = 1101+1 = 1110 ->11[1000] =-8 /* * >>(右移位)运算符: * >>(右移位)运算符执行原理:符号位不变 ,最右边的位丢弃,左边补符号位。 * 1的二进制字节码为 [0001] ,整体右移两位并且高位补零,变为:[0000]01,因此0000对应十进制为:0 */ a = 1>>2; System.out.println("1>>2 = "+a);//0 /**左移1位,相当于乘以2 ;右移1位相当于除以2*/ /* * >>>(无符号右移位)运算符: * >>>(无符号右移位)运算符执行原理:它使用了“零扩展”:无论正负,都在高位插入0。 * 4=0100 ->[0000]100 = 0 */ a = 4>>>3; System.out.println("4>>>3 = "+a);//0}
赋值运算符:
/*** 赋值运算符:= 、+=、-=、*=、/= 、%=、<<=、>>=、>>>=等等 */@Testpublic void t3(){ byte a = 23; a = -12; System.out.println("a = -12 :"+a); a +=1; System.out.println("a +=1 :"+a); a -=2; System.out.println("a -=2 :"+a); a *=2; System.out.println("a *=2 :"+a); a /=2; System.out.println("a /=2 :"+a); a %=2; System.out.println("a %=2 :"+a); a +=200;//精度损失 System.out.println("a +=200 :"+a);//-57 a <<=2; System.out.println("a <<=2 :"+a); //面试题 int c = 10; c += c -= c *= c; //赋值号左侧的c一直都是初始值10,右侧是相应表达式的结果 System.out.println("c="+c);}
关系运算符:
/** * 关系运算符:==、!=、>、<、>=、<= */@Testpublic void t4(){ /* * 关于关系运算符的说明: * 关系运算符生成的是一个“布尔”(Boolean)结果。它们评价的是运算对象值之间的关系。 * 若关系是真实的,关系表达式会生成true(真);若关系不真实,则生成false(假)。 */ /* * ==、!= 运算符:是判断运算对象的值是否相等。 */ Integer integer1 = new Integer(29); Integer integer2 = new Integer(29); System.out.println(integer1==integer2);//false---两个运算对象所对应的引用地址是不同的(栈地址不同) System.out.println(integer1!=integer2);//true System.out.println(integer1.equals(integer2));//true ---堆内存中的内容是相同的}
逻辑运算符:
/** * 逻辑运算符:&(与)、|(或)、!(非)、∧(异或)、&&(条件与)、||(条件或) */@Testpublic void t5(){ boolean boo= true ^ false; System.out.println(boo); boo = false & false; System.out.println(boo); boo = true & true; System.out.println(boo); boo = !true; System.out.println(boo); boo = true && true; System.out.println(boo); /* * &&(条件与)、||(条件或) 具有短路功能 */ //逻辑运算中的短路: // 1) 与运算时,如果前面一个表达式的结果为false,则后一个表达式不会运行 // 2) 或运算时,如果前面一个表达式的结果为true,则后一个表达式也不会运行}
对象运算符:
/*** 对象运算符:instanceof */@Testpublic void t6(){ /* * 对象运算符:instanceof * 对象运算符:instanceof 执行原理:判断某个对象是否属于某个类类型 */ String str = "hello"; boolean boo = str instanceof Object; System.out.println(boo);}
阅读全文
0 0
- 【Java概念】运算符(3)
- JAVA运算符优先级概念
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
- 运算符重载的概念
- 3java运算符
- java移位运算符(运算符)
- java运算符(++运算和+=运算)
- Java 3:变量、运算符(优先级)
- java(3)各种运算符
- Java基础(3)- 运算符
- Java学习基础:运算符和表达式(算数运算、关系运算、逻辑运算、位运算、条件运算、赋值运算)
- Lesson_for_java_day04--java基本知识、概念、变量、基本数据类型、运算符及表达式
- Java新人最难区分的几个概念和运算符
- 20170607_sizeof() 运算符的概念
- java复习 3运算符
- java入门3-运算符
- (一)java运算符
- JAVA总结(运算符)
- 实战6.SparkSQL(下)--Spark实战应用
- 移植 Nginx+PHP(FastCGI) 到 ARM Linux (一)
- 安卓behavior详解1--系统behavior的简单应用
- AOP和IOC
- 数据库三:浅谈数据库事务(transaction)
- 【Java概念】运算符(3)
- 各种hash算法合集
- 实战7.Spark Streaming(上)--Spark Streaming原理介绍
- 【每周论文】Quasar: Resource-Efficient and QoS-Aware Cluster Management
- VMware Workstation12|Mac OS X后怎么安装VMware Tools?
- createjs 使用方法简介
- iOS【TabBar菜单push隐藏菜单栏转场动画(仿<京东> 及 <东方财富通> tabBar效果)】
- 实战7.Spark Streaming(下)--Spark Streaming实战
- oracle常用函数