码迷,mamicode.com
首页 > 编程语言 > 详细

Java运算符相关面试题

时间:2019-12-27 19:56:32      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:共同点   第三方   out   ||   逻辑   程序   交换   补码   java   

面试题1:逻辑双与&&和逻辑单与&的区别? (逻辑双或||以及逻辑单或|,同理)

共同点:都可以表示并列关系,有false,则false
都可以表示或者关系,有true,则true
区别:逻辑双与&&,如果左边的表达式位false,则符号右边的表达式不会执行,称为扩展的逻辑运算符的短路效果
同理逻辑双||,如果左边的表达式为true,则右边不执行,具有短路效果

面试题2:请使用有效的方式表达式 2的三次方 2^3

2 << 2 结果:8

面试题3:

    定义两个变量
            int x = -8 ; 
            int y = 10 ;
            System.out.println(x | y) ;

思路:-8的原码------>反码---->补码 与10的补码进行|运算(有1则1)

-8
10000000 00000000 00000000 00001000(原码)
11111111 11111111 11111111 11110111(反码)
11111111 11111111 11111111 11111000(补码)
10
00000000 00000000 00000000 00001010(补码)

11111111 11111111 11111111 11111010(补码)
11111111 11111111 11111111 11111001(反码)
10000000 00000000 00000000 00000110(原码)
输出结果: -6
面试题4:
请设计一个程序,实现两个变量数据值的交换
(面试官的思路:能否想到位异或的特点?)

    //定义两个变量
    int a = 10 ;
    int b = 20 ;
    System.out.println("a:"+a) ;
    System.out.println("b:"+b) ;
    System.out.println("----------------") ;
    //方式1:使用第三方变量进行赋值 ,在开发过程中使用最多的!
    /*
    int temp  = a ; // temp = 10
    a = b ; //a = 20 
    b = temp ;//b = 10
    System.out.println("a:"+a) ;
    System.out.println("b:"+b) ;
    */

    //方式2:位异或特点:一个数据对另一个数据位异或两次,其值是它本身
    //左边:a,b,a
    //右边:a ^ b

    a =  a ^ b ;
    b =  a ^ b ;//b = a ^ b ^ b ; b = a = 10
    a =  a ^ b ;//a =  a ^ b ^ a = 20 ;
    System.out.println("a:"+a) ;
    System.out.println("b:"+b) ;

    //方式3: 变量的基本赋值
    /*
    a = a + b ;
    b = a - b ;
    a = a - b ;
    System.out.println("a:"+a) ;
    System.out.println("b:"+b) ;
    */

    /*
    b = (a+b) - (a=b) ;  
    System.out.println("a:"+a) ;
    System.out.println("b:"+b) ;
    */

Java运算符相关面试题

标签:共同点   第三方   out   ||   逻辑   程序   交换   补码   java   

原文地址:https://blog.51cto.com/14651315/2462231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!