热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运算符_第三天(上)运算符

本文由编程笔记#小编为大家整理,主要介绍了第三天(上)运算符相关的知识,希望对你有一定的参考价值。运算符
本文由编程笔记#小编为大家整理,主要介绍了第三天(上)运算符相关的知识,希望对你有一定的参考价值。


运算符


    在JAVA中,

    使用算数运算符 +-*/表示加减乘除  

    用%表示取余 mod 也称 取模运算符

    当/号两边都是整数的时候为整数除法,否则为浮点数除法

        注意:整数被0整除会产生异常,浮点数被0整除,会出现无穷大或者NaN.

    赋值运算符 等于好 =  将右边边的值赋给左边的变量

二元算数运算符


    例如x+=4等价于x=x+4 同样有-= *= /=等等符号

    一般将运算符放在等号左边   ( 可以看作将等号左边的内容移动到等号右边,左边在加一个x)

自增运算符与自减运算符


    因为加一和减一是常见的操作,所以java借鉴了c中的自增和自减 

    n++ 当前值加一 

    n--  当前值减一   

        注意++ --改变是变量的值,操作不能是数值.


    上面是后缀形式,相应的也有前缀形式

    ++n

    --n

    两种都表示加一和减一但是 

        前缀是先进性加1 因为他是前缀吗 (笑)

        后缀则是先用原来的值,运算完然后再加1.

  int n = 7;

  int m = 7;

  int a = 2*++m;//现在 a是16 m是8

  int b = 2*n++;//现在b是14 n是8

关系运算符和boolean运算符

java中包含各种关系运算符 又叫比较运算符常见的大于小于等

    ==检测是否相等

    !=检测是否不相等

    沿用c的习惯 

    &&表示短路与

    ||表示短路或

    !表示逻辑非 

        注意在java中&&和||是按照短路的方式求值的,如果第一个已经可以确定表达式的值,那么久不会进行第二个运算.这样可以避免一些错误的发生.

    例如 x!=0&&1/x  当x为零时不会计算1/x

           同样当expression||expresstion2 第一个为真是自动为真 不会计算第二个

&&与& ||与|的区别 

    & |判断完第一个表达式后还会判断第二个 而短路不会,因此一般使用短路与和短路或节省时间 同时&|也是位运算符

操作符描述  假设布尔变量A为真,变量B为假例子
&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(A && B)为假。
| |称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A && B)为真。

三目运算符 又叫条件运算符

?:   

布尔表达式?表达式1:表达式2

    例如 x

位运算符

1.与运算符

与运算符用符号“&”表示,其使用规律如下:

两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。

public class data13

{

public static void main(String[] args)

{

int a=129;

int b=128;

System.out.println("a 和b 与的结果是:"+(a&b));

}

}

运行结果

a 和b 与的结果是:128

下面分析这个程序:

“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。


2.或运算符

或运算符用符号“|”表示,其运算规律如下:

两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。

public class data14

{

public static void main(String[] args)

{

int a=129;

int b=128;

System.out.println("a 和b 或的结果是:"+(a|b));

}

}

运行结果

a 和b 或的结果是:129

下面分析这个程序段:

a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

 

3.非运算符

非运算符用符号“~”表示,其运算规律如下:


如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。

public class data15

{

public static void main(String[] args)

{

int a=2;

System.out.println("a 非的结果是:"+(~a));

}

}

 运行结果a非的结果为13

a的二进制为0010 根据非的运算规律结果为1101 为13


4.异或运算符

异或运算符是用符号“^”表示的,其运算规律是:

两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。

public class data16

{

public static void main(String[] args)

{

int a=15;

int b=2;

System.out.println("a 与 b 异或的结果是:"+(a^b));

}

}

运行结果

a 与 b 异或的结果是:13

分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。

移位运算符

移位运算符操作的对象是二进制位,可以单独用移位运算符来处理int类型

运算符含义例子
<<左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)x<<3
>>"有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.x>>3
>>>"无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.x>>>3

技术分享图片

注:x<;x>>y相当于x/2y

    从计算速度上讲,移位运算要比算术运算快。

    如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。

运算符优先级

由高到低

类别由高到低操作符关联性
后缀() [] . (点操作符)左到右
一元+ + - !?从右到左
乘性 * /%左到右
加性 + -左到右
移位 >> >>>  << 左到右
关系 >> = <<= 左到右
相等 ==  !=左到右
按位与左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或| |左到右
条件?:从右到左
赋值= + = - = * = / =%= >> = <<=&= ^ = | =从右到左
逗号左到右

补充:

字符串运算符: + 可以连接不同的字符串。

转型运算符: () 可以将一种类型的数据或对象,强制转变成另一种类型。如果类型不相容,会报异常出来。



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
author-avatar
骚扰list_238
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有