首页 > 编程语言 >java运算符(赋值,关系,逻辑,三目,位运算)

java运算符(赋值,关系,逻辑,三目,位运算)

时间:2024-02-21 17:36:29浏览次数:28  
标签:java 00000000 System 运算符 ++ 三目 println false out

赋值运算符

赋值运算符:

= += -= *= /= %=

public class FuZhiOptDemo{
    public static void main(Strng[] args){
        int a1=3;
        a1+=2;
        System.out.println("a1:"+a1);
         a1-=2;
        System.out.println("a1:"+a1);
         a1*=2;
        System.out.println("a1:"+a1);
         a1/=2;
        System.out.println("a1:"+a1);
         a1%=2;
        System.out.println("a1:"+a1);
    }
}

面试题:

public class FuZhiOptDemo{
    public static void main(Strng[] args){
        short s=1,s=s+1;
        short s=1,s+=1;
        short s=1;
        s=(short)(s+1);
        System.out.println("s:"+s);
        short s=1;
        s+=1;// 并不是等同于s = s+1; 而是等同于有强制类型转换的式子:s = (short)(s + 1);
        System.out.println("s:"+s);
    }
}

关系运算符

关系运算符(比较运算符):关系运算符一定是布尔类型的

== != > < >= <=

public class GuanXiOptDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a>=b);
        System.out.println(a<=b);
    }
}

逻辑运算符

逻辑运算符:参与判断的是布尔类型,结果也是布尔类型

& | ^ ! && ||

public class LuoJiOptDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;

        // & 有false则false
//        System.out.println((a++>3)&(b++>4)); // false & false = false
//        System.out.println((a++>3)&(b++==4)); // false & true = false
//        System.out.println((a++==3)&(b++>4)); // true & false = false
//        System.out.println((a++==3)&(b++==4)); // true & true = true

        // | 有true则true
//        System.out.println((a++>3)|(b++>4)); // false | false = false
//        System.out.println((a++>3)|(b++==4)); // false | true = true
//        System.out.println((a++==3)|(b++>4)); // true | false = true
//        System.out.println((a++==3)|(b++==4)); // true | true = true

        // ^ 相同则false,不同则true
//        System.out.println((a++>3)^(b++>4)); // false ^ false = false
//        System.out.println((a++>3)^(b++==4)); // false ^ true = true
//        System.out.println((a++==3)^(b++>4)); // true ^ false = true
//        System.out.println((a++==3)^(b++==4)); // true ^ true = false

        // ! 将false变成true,将true变成false
        System.out.println(!(a++>3));
        
//       &&短路与: 当左边的表达式结果是false的时候,右边就不会执行,结果为false
//       ||短路或: 当左边的表达式结果是true的时候,右边就不会执行,结果为true        
//        System.out.println((a++ > 3) & (b++ > 4));
//        System.out.println((a++ > 3) && (b++ > 4)); // false && false = false

//        System.out.println((a++ > 3) && (b++ == 4)); // false & true = false
//        System.out.println((a++ == 3) && (b++ > 4)); // true & false = false
//        System.out.println((a++ == 3) & (b++ == 4)); // true & true = true

//        System.out.println((a++ > 3) | (b++ > 4));
        System.out.println(( a++ ==3) || (b++ > 4)); // true || false = true

        System.out.println("a: " + a);
        System.out.println("b: " + b);

    }
}

三目运算符

三目运算符:

 语句定义格式:(关系表达式)?表达式1:表达式2;
    注意:三目运算符必须要有一个返回结果
public class SanMuOptDemo {
    public static void main(String[] args) {
        int a = 3;
        boolean c = (a>3)?true:false;
        System.out.println(c);
    }
}

/*
    获取两个整数中的最大值
    获取三个整数中的最大值
    比较两个整数是否相同

 */
public class OptTest {
    public static void main(String[] args) {
        int a = 3;
        int b = 8;
        int res1 = (a > b) ? a : b;
        System.out.println("最大值为:" + res1);

        //获取三个整数中的最大值
        int c = 3;
        int res2 = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
        System.out.println("三个整数中最大值为:" + res2);

        //比较两个整数是否相同
        boolean res3 = (a == c) ? true : false;
        System.out.println("a和c比较的结果为:" + res3);
    }
}

位运算符

位运算符:参与运算的符号两边是数值,结果也是一个数值

& | ^ ~ >> << >>>

public class WeiOptDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println(a & b); // 0
        System.out.println(a | b); // 7
        System.out.println(a ^ b); // 7
        System.out.println(~ b); // -5
        System.out.println(24>>2); // 6  24/4=6  24/2^2=6
        System.out.println(3<<2); // 12 3*4=12 3*2^2=12
        System.out.println(-24>>>2); // 1073741818

    }
}

/*
 3的补码:00000000 00000000 00000000 00000011
    4的补码:00000000 00000000 00000000 00000100

    &:有0则0
        00000000 00000000 00000000 00000011
      &
        00000000 00000000 00000000 00000100
       --------------------------------------
        00000000 00000000 00000000 00000000  --> 0

    |:有1则1
        00000000 00000000 00000000 00000011
      |
        00000000 00000000 00000000 00000100
       --------------------------------------
        00000000 00000000 00000000 00000111  --> 7

    ^:相同则0,不同则1
        00000000 00000000 00000000 00000011
      ^
        00000000 00000000 00000000 00000100
       --------------------------------------
        00000000 00000000 00000000 00000111  --> 7

    ~:0变成1,1变成0
        00000000 00000000 00000000 00000100
     ~
        11111111 11111111 11111111 11111011
     已知补码求原码:
      补码:  1   1111111 11111111 11111111 11111011
      反码:  1   1111111 11111111 11111111 11111010
      原码:  1   0000000 00000000 00000000 00000101   -->  -5
      
      24的补码:00000000 00000000 0000000 00011000

    24>>2:
        00000000 00000000 0000000 00011000
        00000000 00000000 0000000 00000110(00)  --> 6

    3的补码:00000000 00000000 00000000 00000011
    3<<2:
        00000000 00000000 00000000 00000011
    (00)000000 00000000 00000000 0000001100   --> 12

    -24的原码:10000000 00000000 0000000 00011000
         反码:11111111 11111111 11111111 11100111
         补码:11111111 11111111 11111111 11101000

         11111111 11111111 11111111 11101000
         0011111111 11111111 11111111 111010(00)
*/

>>右移:补码向右移动若干位,右边多出的部分丢弃,左边若原本最高位是1,就用1补齐,若原本最高位是0就用0补齐
  右移n位,实际上就是除以2的n次方
<<左移:补码向左移动若干位,左边多出的部分丢弃,右边就用0补齐,左移n位,实际上就是乘2的n次方
>>>无符号右移:补码向右移动若干位,右边多出的部分丢弃,左边用0补齐
    

标签:java,00000000,System,运算符,++,三目,println,false,out
From: https://www.cnblogs.com/peculiar/p/18025799

相关文章

  • 阿里面试:Java开发中,应如何避免OOM
    Java内存管理:避免OOM的10个实用小技巧引言在Java开发中,OutOfMemoryError(OOM)错误一直是令开发者头疼的问题,也是Java面试中出现核心频率很高的问题。那么我们究竟怎么样才能够有效正确的管理内存,日常开发中究竟要注意哪些核心技巧来避免OOM错误。本文将带大家一起学习10个避免OO......
  • 04-JavaScript介绍
      注意:JS是脚本语言,不需要经过编译,直接经过浏览器的解释就可以运行了。而Java语言需要先编译成class文件,再通过虚拟机进行运行。  <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JS-引入方式</title></head><body>......
  • Java人力资源管理系统源码(含数据库)-springboot+vue+mysql
    EHR人力资源管理系统是一种利用现代技术,如云计算、大数据等,来实现企业人力资源信息电子化、流程自动化的系统。它覆盖了人力资源管理的各个方面,从招聘、考勤、绩效到薪酬、社保公积金等,为企业提供一站式的解决方案。​1.招聘管理:-职位发布:系统支持在线发布职位信息,吸引候选人......
  • java常量变量
    标识符标识符:给类,接口,方法,变量等起名时使用的字符序列规则:1.英文大小写构成可以有数字,下划线_和$存在规范1.不能以数字开头2.不能是Java中的关键字3.区分大小写4.要见名知意5.不要出现除了下划线_和$以外的特殊字符包(其实就是文件夹,用于解决相同类名问题)由英文小写......
  • Java导入功能实现
    今天记录一下Java实现导入数据到数据,导入失败显示如下,会告诉你哪里出错了。controller代码实现@Operation(summary="导入工单")@PostMapping("/importOrderData")publicBaseResponse<String>importOrderData(@RequestParam@Parameter(name="excelFile",......
  • 《Effective Java》阅读笔记-第九章
    EffectiveJava阅读笔记第九章通用编程第57条将局部变量的作用域最小化将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能。将局部变量的作用域最小化,最好的办法就是在第一次使用变量的地方声明它。几乎每一个局部变量都应该进行初始化。第5......
  • 《Effective Java》阅读笔记-第八章
    EffectiveJava阅读笔记第八章方法第49条检查参数的有效性基于“发生错误后应尽快检测出错误”这一通用原则,应对方法的参数进行检查。Java7中增加了Objects.requireNonNull方法,可以很方便的对参数进行null检查并抛出异常:publicvoidsomeMethod(Stringargs){ar......
  • 《Effective Java》阅读笔记-第十一章
    EffectiveJava阅读笔记第十一章并发第78条同步访问共享的可变数据多线程访问变量时,需要进行同步,否则就会产生并发问题。同步代码块、加锁等或者直接不共享变量,也就是将可变数据限制在单个线程内。ThreadLocal这种第79条避免过度同步为了避免活性失败和安全性失败......
  • 《Effective Java》阅读笔记-第十章
    EffectiveJava阅读笔记第十章异常第69条只针对异常的情况才使用异常说白了就是不要吧你的业务逻辑用异常来写。举个反例比如用抛出异常来遍历一个数组:try{inti=0;while(true){range[i++].doSomething();}}catch(ArrayIndexOutOfBoun......
  • 《Effective Java》阅读笔记-第十二章
    EffectiveJava阅读笔记第十二章序列化第85条其他方法优先于Java本身的序列化Java本身的序列化漏洞过多,很容易被攻击。避免被序列化攻击的最好方式就是不要反序列化任何字节流,并且新的系统中没有任何理由使用Java本身的序列化。JSON和Protobuf是两种优秀的序列化......