Java运算符

来源:互联网 发布:java从入门到放弃系列 编辑:程序博客网 时间:2024/04/25 10:19
1.算术运算符
 表格中的例子中,变量a的值为5,变量b的值为3,变量i的值为1:

- 前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算。
- 后缀自增自减法(i++,i--): 先进行表达式运算,再进行自增或者自减运算。

2、位运算符
(1)位运算时先转换为二进制,再按位运算。
(2)表格中的例子中,变量a的值为60,变量b的值为13:

 注:(1)左移运算符:
                     丢弃最高位,0补低位
                   如果运算数小于int这先转换为int后运算
                   左移的位数是对数据类型的位数取模(例如:对int左移32位相当于左移了                         
                   32%32=0位)
                    在数字没有溢出的情况下,左移1位相当于乘2
        (2)右移运算符:
                       丢弃最低位,高位符号位扩展(保留符号位sign extension)
                       如果运算数小于int这先转换为int后运算
                       右移的位数是对数据类型的位数取模(例如:对int左移32位相当于右移了
                       32%32=0位)
                       在数字没有溢出的情况下,右移1位相当于除2

3、逻辑运算符
 (1)逻辑运算符时通过运算符将操作数或等式进行逻辑判断的语句。
 (2)表格中的例子中,假设布尔变量a为真,变量b为假:


4、赋值运算符
  (1)将右边的操作数或运算结果赋值给左边的操作数。
  (2)


5、关系运算符
 (1)表格中的例子中,假设变量a为3,变量b为5:

(2)== 和 !=适用于所有的基本数据类型,其他关系运算符不适用于boolean,因为boolean的值只有true和false,比较没有任何意义。
(3)== 和!=也适用于所有对象,可以比较对象的引用是否相同。
(4)引用:Java中一切都是对象,但操作的标识符实际是对象的一个引用
  例如:《1》String s; 
                        创建的是引用,不是对象。创建引用后,一种安全的做法是对其进行初始化。
               《2》 String s = “abc”;
                     String s = new String("abc");
                      通常采用new操作符生成一个新对象,然后将引用于该对象相关联。
             《3》
public class Test {
     public static void main(String args[]) {
          Integer n1 = new Integer(2);
          Integer n2 = new Integer(2);
          System.out.println(n1 == n2);
          System.out.println(n1 != n2);
     }
}
      结果是: false
                    true
原因:尽管两个对象的内容相同,但是它们的引用却不相同,==和!=比较的是对象的引用。
(4)比较对象的内容是否相同,用 equals(),但它不适用于基本类型

public class Test {
     public static void main(String args[]) {
          Integer n1 = new Integer(2);
          Integer n2 = new Integer(2);
          System.out.println(n1.equals(n2));
     }
}
输出结果:
true
但是当自己创建了一个类时,情况又会相反,因为equals()默认比较引用,除非在自己的类中覆盖equal()方法
6、条件运算符
(1)条件运算符?: 是唯一一个三目运算符。
(2)语法形式:布尔表达式?表达式1 : 表达式2
        运算过程:
        如果布尔表达式的值为true ,则返回 表达式1 的值,否则返回 表达式2 的值。
7、instanceof运算符
(1)用于操作对象实例,检查该对象是否是一个特定类型(类类型或借口类型)
(2)使用格式:
               ( Object reference variable ) instanceof (class/interface type)
       如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对     
       象,那么结果为真。

     String name = "James";
     boolean result = name instanceof String;
     // 由于 name 是 String 类型,所以返回真