面试

本文深入解析Java中的各种运算符,包括赋值运算符、位异或运算符、左移右移运算符的特点及应用,探讨了如何在不使用第三方变量的情况下交换两个数,同时对比了变量相加与常量相加的区别。通过具体实例,帮助读者理解运算符的工作原理,并提供了面试中可能遇到的相关题目。

1. ++ he –

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 赋值运算符的面试题

  • 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
    • short s=1; s = s+1;
    • short s=1; s+=1;
    • (1)s + 1 计算后是一个int类型的数
    • (2)正确

3. 位异或运算符的特点 及 两个数在不借用第三方的情况下完成交换

  • ^的特点:一个数据对另一个数据位异或两次,该数本身不变
int a = 5 ^ 10 ^ 10; //5
int a = 10 ^ 5 ^ 10; //5
结果相同

两个数在不借用第三方的情况下完成交换
int a = 1 ; int b = 2 ;
//  (1)  这种情况在混合类型计算时可能出现问题
a = a + b;
b = a - b;
a = a - b;
//  (2)
a = a ^ b ;
b = a ^ b;
a = a ^ b ;

3. 最有效率的算出2 * 8的结果

答 : 2 <<< 3

2 << 3   右侧为多少即 乘以2的几次方
2 >> 3   右侧为多少即 除以2的几次方

4.变量相加和常量相加的区别

byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
* 从两方面去回答这个题
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
byte b4 = 3 + 4;
* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了

【注】进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型;其他类型进行混合运算的是小的数据类型提升为大的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值