前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【计算机本科补全计划】Java学习笔记(五) 运算符

【计算机本科补全计划】Java学习笔记(五) 运算符

作者头像
用户1687088
发布2018-05-07 17:22:14
7010
发布2018-05-07 17:22:14
举报

正文之前

本文属于流水账,因为早就在C++里面学过了。Java基本是继承了C++的那些,所以贴个代码应该就OK了?,当然,有点特有的运算符我还是得解释下的。毕竟以后翻笔记的话缺了就不美了

~(郑重声明:本文非原创,只是笔记,取自菜鸟编程!好东西,继续打CALL)~

正文

1、 下面的代码基本就已经表述了java绝大多数用到的运算符:

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
代码语言:javascript
复制
public class Test {
  public static void main(String[] args) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */
     int c = 0;
     c = a & b;       /* 12 = 0000 1100 */
     System.out.println("a & b = " + c );

     c = a | b;       /* 61 = 0011 1101 */
     System.out.println("a | b = " + c );

     c = a ^ b;       /* 49 = 0011 0001 */
     System.out.println("a ^ b = " + c );

     c = ~a;          /*-61 = 1100 0011 */
     System.out.println("~a = " + c );

     c = a << 2;     /* 240 = 1111 0000 */
     System.out.println("a << 2 = " + c );

     c = a >> 2;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );

     c = a >>> 2;     /* 15 = 0000 1111 */
     System.out.println("a >>> 2 = " + c );



     c = a + b;
     System.out.println("c = a + b = " + c );
     c += a ;
     System.out.println("c += a  = " + c );
     c -= a ;
     System.out.println("c -= a = " + c );
     c *= a ;
     System.out.println("c *= a = " + c );
     a = 10;
     c = 15;
     c /= a ;
     System.out.println("c /= a = " + c );
     a = 10;
     c = 15;
     c %= a ;
     System.out.println("c %= a  = " + c );
     c <<= 2 ;
     System.out.println("c <<= 2 = " + c );
     c >>= 2 ;
     System.out.println("c >>= 2 = " + c );
     c >>= 2 ;
     System.out.println("c >>= a = " + c );
     c &= a ;
     System.out.println("c &= 2  = " + c );
     c ^= a ;
     System.out.println("c ^= a   = " + c );
     c |= a ;
     System.out.println("c |= a   = " + c );



     boolean e = true;
     boolean d = false;
     System.out.println("e && d = " + (e&&d));
     System.out.println("e || d = " + (e||d) );
     System.out.println("!(e && d) = " + !(e && d));

  }
}

运行结果:

代码语言:javascript
复制
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15
c = a + b = 73
c += a  = 133
c -= a = 73
c *= a = 4380
c /= a = 1
c %= a  = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= a = 1
c &= 2  = 0
c ^= a   = 10
c |= a   = 10
e && d = false
e || d = true
!(e && d) = true
[Finished in 1.6s]

2、 条件运算符(?:)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

代码语言:javascript
复制
variable x = (expression) ? value if true : value if false
代码语言:javascript
复制
public class Test {
  public static void main(String[] args) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */


     b = (a == 1) ? 20 : 30;
     System.out.println( "Value of b is : " +  b );

      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
     b = (a == 10) ? 20 : 30;
     System.out.println( "Value of b is : " + b );

  }
}

运算结果:

代码语言:javascript
复制
Value of b is : 30
Value of b is : 30
[Finished in 1.3s]

3、 instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

instanceof运算符使用格式如下:

代码语言:javascript
复制
( Object reference variable ) instanceof  (class/interface type)

如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。 下面是一个例子:

代码语言:javascript
复制
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

如果被比较的对象兼容于右侧类型,该运算符仍然返回true。看下面的例子:

代码语言:javascript
复制
class Vehicle {}

public class Car extends Vehicle {
   public static void main(String[] args){
      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result);
   }
}

返回的结果是:true。很显然,a这个对象是可以兼容于Car这个类类型的(这里不仅仅是因为a是Vehicle,它是Car,详情看下面)。因为交通工具很显然兼容于Car,这里可不是现实生活中的那种:车子属于交通工具,交通工具不一定是车子。这里的意思是,交通工具的属性,车子有,而且车子还有自己的特性,虽然是交通工具的子类,但是包含了交通工具的内容还有自己的一些属性。我们要时刻谨记,类是一种抽象,当一个类包涵范围越广的时候,他的特性必然越少,因为要满足所有的子类都兼容超类,不然不存在继承,好比人类这个类,是没有男女属性的,但是男性人类,拥有人类所有特征,还有JJ,所以包含了人类这个类的所有内容。所以交通工具是经过车子与其他工具做交集之后的结果,自然兼容于车子。

在判断一个实例引用的类型时,使用的是实际类型,而不是声明的类型。在下面的代码中:

代码语言:javascript
复制
Vehicle v2 = new Car();    // v2 是 Car 类型
  • 子类是父类的类型,但父类不是子类的类型。
  • 子类的实例可以声明为父类型,但父类的实例不能声明为子类型。

4、 Java运算符优先级

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + - !〜

从右到左

乘性

* /%

左到右

加性

+ -

左到右

移位

>> >>> <<

左到右

关系

>> = << =

左到右

相等

== !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

\

逻辑与

&&

左到右

逻辑或

\

\

条件

?:

从右到左

赋值

= + = - = * = / =%= >> = << =&= ^ = \

=

逗号

左到右

正文之后

这一篇就这样吧。睡了睡了~该睡个午觉了,然后晚上再决定去不去健身房吧!话说CCF就要考了。要不今晚缓缓吧,感觉要扑街啊!!害怕

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 工科狗和生物喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文之前
  • 正文
    • 1、 下面的代码基本就已经表述了java绝大多数用到的运算符:
      • 2、 条件运算符(?:)
        • 3、 instanceof 运算符
          • 4、 Java运算符优先级
          • 正文之后
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档