D2

(4)思考题和面试题:
A:下面两种方式有区别吗?
float f1 = 12.345f;

float f2 = (float)12.345;

答:有区别,float f1=12.345f定义一个float类型的变量,float f2 = (float)12.345是把double类型的12.345强制转换为float类型的变量。

B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;

byte b4 = 3 + 4;

答:byte b3 = b1 + b2;是有问题的因为两个byte类型的变量相加首先会把byte提升为int再做加法运算再把结果int类型的结果赋值给byte类型的变量b3会有问题

        而byte b4 = 3 + 4;没问题是因为3+4是一个常量计算,然后把结果赋值给byte类型的b4,如果结果在byte的范围之类就不会报错,显然byte的范围是-127-128所以不会有问题。

C:下面的操作结果是什么呢?

byte b = (byte)130;

答:结果是-126,

                我们要想知道结果是什么,就应该知道是如何进行计算的。
而我们又知道计算机中数据的运算都是补码进行的。
而要得到补码,首先要计算出数据的二进制。

A:获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,还是补码。
B:做截取操作,截成byte类型的了。
10000010 
这个结果是补码。
C:已知补码求原码。
符号位 数值位
补码: 1 0000010

反码: 1 0000001

原码: 1 1111110

D:字符参与运算
是查找ASCII里面的值
'a' 97
'A' 65
'0' 48

System.out.println('a'); 97
System.out.println('a' + 1);98
E:字符串参与运算
这里其实是字符串的连接

System.out.println("hello"+'a'+1);helloa1
System.out.println('a'+1+"hello");98hello
System.out.println("5+5="+5+5);5+5=55
System.out.println(5+5+"=5+5");10=5+5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值