java中|和||的使用和区别「建议收藏」

java中|和||的使用和区别「建议收藏」区别||为逻辑运算符,而|为位运算符。位运算可以进行进行int数的或运算。例:4|1=54写作二进制数1001写作二进制数001做或运算得出101即5||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。我们定义一个链表classListNode{intval;ListNodenext;ListNode(intx){val=x;}}Lis

大家好,又见面了,我是你们的朋友全栈君。

区别

  1. || 为逻辑运算符,而 | 为位运算符。

      位运算可以进行进行int数的或运算。
      例:4|1=5
      4写作二进制数 1 0 0
      1写作二进制数 0 0 1
      做或运算得出  1 0 1   即5
    
  2. || 只要满足第一个条件,后面的条件就不再判断,而 | 要对所有的条件进行判断。

    我们定义一个链表

    class ListNode { 
         
        int val;
        ListNode next;
        ListNode(int x) { 
          val = x; }
    }
    
    ListNode a=null;
    

    写出一个if判断语句,共四种写法

    if(a==null|a.next==null)//1
    if(a==null||a.next==null)//2
    if(a.next==null|a==null)//3
    if(a.next==null||a==null)//4
    

    以上四种写法中,1、3、4写法均会抛出NullPointerException异常
    1. | 要对所有的条件进行判断,故在a.next == null的判断中抛出异常
    2. || 只要满足第一个条件,后面的条件就不再判断,a==null满足,返回true
    3. 同1的错误
    4. 判断前一个条件,a.next抛出异常

    以上为||和|的区别和使用,相同&和&&也可以同上思考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157165.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数仓分层理论_多元分层理论

    数仓分层理论_多元分层理论​数仓分层、元数据管理、数据质量管理

    2025年6月8日
    4
  • vue 滑动验证码(vue登陆如何获取token)

    之前别人都是用jq写的,自己整理了一下开始使用<el-form-itemlabel="验证"><divclass="form-inline-input"><divclass="code-box"id="code-box">

    2022年4月15日
    131
  • WinSCP连接Ubuntu被拒绝

    WinSCP连接Ubuntu被拒绝(如果是为了向虚拟机传输文件就要将用户名改为root)打开终端并登录root1.首先确认是否输入正确的主机名:输入ifconfig得到主机名2.Ubuntu默认root是关闭的,最好重新设置一遍密码:passwdroot就能开启root3.关闭防火墙:ufwdisable4.安装openssh-server:apt-getinstallopenssh-server5.检查sshd是否启动:ps-e|grepssh看到sshd说明启动成功6.使root允

    2025年12月13日
    3
  • 宏 undef

    宏 undefundef undef 是在后面取消以前定义的宏定义 该指令的形式为 undef 标识符 其中 标识符是一个宏名称 如果标识符当前没有被定义成一个宏名称 那么就会忽略该指令 一旦定义预处理器标识符 它将保持已定义状态且在作用域内 直到程序结束或者使用 undef 指令取消定义 在此程序中 我们将取消在先前程序中对预处理器的定义 include

    2025年7月7日
    6
  • 详解stacking过程

    翻到之前自己写的这篇博客,感觉写的还是不够简洁明了,特地回来改一下,顺便文末附上Kaggle内相关操作的代码,希望能够帮助学习的同学能够瞬间理解stacking这个概念。stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。sta…

    2022年4月6日
    128
  • 常量池(运行时常量池 静态常量池)「建议收藏」

    常量池(运行时常量池 静态常量池)「建议收藏」深入浅出java常量池理论jvm虚拟内存分布:程序计数器是jvm执行程序的流水线,存放一些跳转指令。本地方法栈是jvm调用操作系统方法所使用的栈。虚拟机栈是jvm执行java代码所使用的栈。方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。虚…

    2025年9月6日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号