14 java基本语法_位运算符使用方法[java入门教程]

 Java 运算符很多,下面按优先顺序列出了各种运算符( “L  toR”表示左到右结合, “R 

to L”表示右到左结合)
分隔符  . [] ()  ; , 
右结合  ++ -- -  ! 
左结合  * / % 
左结合  + - 
左结合  << >> >>> 
左结合  < > <= >=  instanceof(Java 特有) 
左结合  == != 
左结合  & 
左结合  ^ 
左结合  | 
左结合  && 
左结合  || 
右结合  ?: 
右结合  = *= /=  %= +=  -= <<= >>= >>>= &= *= |= 
注意:运算符的结合性决定了同优先级运算符的求值顺序
1:算术运算             

算术运算是指:+、-、*、/  等基本运算
需要注意的是:
%是求 mod 运算;
整数的除法要小心:
5/2 = 2   // 不是2.5 
2:比较运算      

      
比较运算是指:>、<、>=、<=、==、!= 等类似运算
需要注意的是:
字符可以比较大小; (用它们的 ascii 码,化为整数)
小心浮点数的相等比较
instanceof 也是一个比较运算,用来判断一个对象是否属于某个类。 (以后介绍)
==运算中,对于基本类型是比较的“内容”, 而对于引用类型,比较的是地址。 (小心)
3:逻辑运算           

运算符&&(定义为 “与”)和|| (定义为 “或” )执行布尔逻辑表达式。 请看下面的例子:
MyDate d = null; 
if ((d != null) && (d.day()> 31)) {
// 利用 d 执行些什么
形成 if  ()语句自变量的布尔表达式是合法且安全的。这是因为当第一个子表达式是假
时, 第二个子表达式被跳过, 而且当第一个子表达式是假时, 整个表达式将总是假, 以不
必考虑第二个子表达式的值。类似的,如果使用||运算符,而且第一个表达式返回真, 则
第二个表达式不必求值,因为整个表达式已经被认为是真。
4:++、---运算      

    
++运算相当于:运算的变量加 1,如:x++ 等同于  x=x+1; 
--运算恰好相反,相当于运算的变量减 1 
注意:x++  和  ++x  并不是一回事情。x++是先使用,然后再加;++x 是先加然后再使用。
5:=赋值运算           

x=5 相当于把 5 这个值赋给变量 x
6:位运算           

位逻辑运算符(Bitwise Logical Operations) 。
算术逻辑运算符&(与) ,|(或) ,~(补码 Complement) ,^(异或) ;
位运算示例
14 java基本语法_运算符介绍说明[java入门教程]
7:移位运算          

Java 编程语言提供了两种右移位运算符和一种左移运算符,右移一位(>> )相对于
除以 2:左移(<<)相对于乘以 2。
(1) : 运算符>>进行算术或符号右移位。 移位的结果是第一个操作数被 2 的幂来除, 而
指数的值是由第二个数给出的。例如:
128 >> 1 gives 128/2
1
= 64 
256 >> 4 gives 256/2
4
= 16 
-256 >> 4 gives -256/2
4
= -16 
(2) :逻辑或非符号右移位运算符>>>主要作用于位图,而不是一个值的算术意义;它
总是将零置于符号位上。例如:
1010 ... >>2 gives111010 ... 
1010 ... >>> 2 gives 001010... 
在移位的过程中,>>运算符使符号位被拷贝。
(3) : 运算符<<执行一个左移位。 移位的结果是: 第一个操作数乘以 2 的幂, 指数的值
是由第二个数给出的。例如:
128 << 1 gives 128*2
1
= 256 
<<2 gives 16*2
=64
(4) :负数等于正数取反加一。
示例:
14 java基本语法_运算符介绍说明[java入门教程]2
注意:
(1) : 移位运算符将它们右侧的操作数模 32 简化为 int 类型左侧操作数, 模 64 简化为 long
类型右侧操作数。因而, 何 int  x,  x  >>>  32 都会导致不变的 x 值, 而不是你可能预计的
零。
(2) :值得称赞的重要一点是: >>>运算符仅被允许用在整数类型, 并且仅对 int 和 long
值有效。如果用在 short 或 byte 值上, 则在应用>>>之前, 该值将通过带符号的向上类型转
换被升级为一个 int。有鉴于此,无符号移位通常已成为符号移位。
8:加号(+)进行串链接          

运算符+  能够进行 String 对象的链接并生成一个新的 String:
String salutation ="Dr. "; 
String name= "Jack" + "Arthur"; 
String title = salutation +name; 
最后一行的结果是:
Dr.Jack Arthur 
如果+运算符中有一个自变量为 String 对象,则其它自变量将被转换成 String。所有
对象都可被自动转换成 String,尽管这样做的结果可能是意义含糊的。不是串的对象是通
过使用 toString() 成员方法而转换成串的等价物的。
9:三目运算 ?:       

三目运算符?:表达的是: 判断问号前面的条件表达式是否为真,如果为真, 返回冒号前
面的值,否则返回冒号后面的值。
例如:
public classTest { 
public static voidmain(String[] args) { 
inti = (5>3) ? 6 : 7; 
System.out.println("the i="+i); 
}
运行结果为:the i=6 
其实三目运算符的基本功能相当于 if-else(马上就要学到了) ,使用三目运算符是因为
它的表达比相同功能的 if-else 更简洁。上面的例子改成用 if-else 表达如下:
public classTest { 
public static voidmain(String[] args) { 
inti = 0; 
if(5 > 3) { 
i = 6; 
} else{ 
i = 7; 
System.out.println("the i="+ i); 
}
运行结果为:the i=6 
来源://作者:/更新时间:2015-06-04
相关文章