专栏首页工科狗和生物喵【计算机本科补全计划】Java学习笔记(五) 运算符

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

正文之前

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

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

正文

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

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
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));

  }
}

运行结果:

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个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

variable x = (expression) ? value if true : value if false
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 );

  }
}

运算结果:

Value of b is : 30
Value of b is : 30
[Finished in 1.3s]

3、 instanceof 运算符

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

instanceof运算符使用格式如下:

( Object reference variable ) instanceof  (class/interface type)

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

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

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

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,所以包含了人类这个类的所有内容。所以交通工具是经过车子与其他工具做交集之后的结果,自然兼容于车子。

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

Vehicle v2 = new Car();    // v2 是 Car 类型
  • 子类是父类的类型,但父类不是子类的类型。
  • 子类的实例可以声明为父类型,但父类的实例不能声明为子类型。

4、 Java运算符优先级

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

+ + - !〜

从右到左

乘性

* /%

左到右

加性

+ -

左到右

移位

>> >>> <<

左到右

关系

>> = << =

左到右

相等

== !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

\

逻辑与

&&

左到右

逻辑或

\

\

条件

?:

从右到左

赋值

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

=

逗号

左到右

正文之后

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

本文分享自微信公众号 - 工科狗和生物喵(gh_3507b116a1f8),作者:HustWolf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【计算机本科补全计划】Java学习笔记(四) 修饰符

    正文之前 今天总算是把那个党员谈话给弄完了,三个学弟轮番跟我来聊天,讲自己的入党动机啥的,看到他们就仿佛看到了大一的自己,原来当时面对学长,面对这类事情,会紧张...

    用户1687088
  • 【计算机本科补全计划】Java学习笔记(八) Java数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储--固定--大小的同类型元素。

    用户1687088
  • 【计算机本科补全计划】Java学习笔记(九) Java日期时间

    ### 1、 Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一...

    用户1687088
  • 【计算机本科补全计划】Java学习笔记(三) 数据类型

    正文之前 Java的面向对象特性太明显了。先开篇告诉你我们的对象是啥意思,然后直截了当的告诉你,每个文件都是一个类。也就是说每个文件都可以给你传出来一种对象,然...

    用户1687088
  • 【计算机本科补全计划】Java学习笔记(七) 常用的类

    正文之前 没辙,为了我的一个完整的教程,不得不忍痛继续写一些简单的东西,虽然这些网上都有,但是要纳进我的体系还是需要写进来的,以后自己要看了, 直接就可以看到了...

    用户1687088
  • 【计算机本科补全计划】Java学习笔记(六) 循环+分支结构

    正文之前 这两节太弱了。基本大一的C++程序设计课就足够对付理解了。所以还是水一波吧,实在没办法,整个教程还是全部抄全吧。免得到时候新人小白入门的时候还要去看别...

    用户1687088
  • 【计算机本科补全计划】Mysql 学习小计(4)

    正文之前 昨天终于把我苦命的毕业设计审批表送出去了。结果暑假的生产实习开始对账,我这儿又开始忙活了,还要签字,我有时候都在想要不全班代签一遍算了。不然真的揪心啊...

    用户1687088
  • 【计算机本科补全计划】Mysql 学习小计(3)

    正文之前 想到自己每天中午还要玩一小时手机,就自责不已,今天看成甲的好好学习一书,颇有收获,晚上写给大伙看,现在还是谢谢 Mysql,到了后面感觉越来越难了呢!...

    用户1687088
  • 【计算机本科补全计划】Mysql 学习小计(2)

    正文之前 昨天下午写了篇 Mysql学习小计,结果出乎意料的受欢迎?变相刺激了我多写点 Mysql?好吧,如尔所愿。我晚上反正还不知道学点啥,就把今天看的那个菜...

    用户1687088

扫码关注云+社区

领取腾讯云代金券