Java笔试简答题1

1、请描述 Java 基本数据类型的 8种, 分别是什么 ?

答: byte short int long float double char boolean
  1byte 2byte 4byte 8byte 4byte 8byte 2byte 2byte       1byte = 8bit

2、请观察下列代码是否存在问题, 如果有, 请说明原因并改成

byte b1 = 3;        // 第一行
byte b2 = 4;        // 第二行
byte b3 = b1 + b2;  // 第三行
byte b = 3 + 4;     // 第四行
答: 无    无     有     无
第三行b1+b2自动转int型需要强制转型回byte
byte b3 =(byte)(b1 + b2);// 第三行

3、现有代码如下, 请回答打印的结果, 并描述中间的运算过程

int num = 10;
char content = 'a';
int result = num + content;
System.out.println(result);
答:
打印结果:107
计算机底层将num转化成10的二进制,
将result转化成‘a’对应的ASCII码表对应的97的二进制,
故底层进行的运算是10+97=107


4、简述下 ++ 运算符在参与运算使用的时候, 在前在后的区别

答: ++a  先加后赋值   a++先赋值后加

5、现有代码如下, 请回答打印的结果, 并描述中间的运算过程

int a = 10;
int b = ++a;  
int c = a++;    
int result = b++ + ++c;  
答:
b=++a,所以先加后赋值;
所以b=11,
又因为++a操作的是变量a,所以此时a=11;
c=a++;因为此时a=11,所以c=11;
result = b++ + ++c;
b++即先赋值后加,++c即先加后赋值,
所以此时result = 11+12=23。
此操作结束后b的值为12

6、描述下算数运算符中 , / 和 % 的特点

答:
/运算保留整数舍弃小数;11/5=2
%运算保留小数舍弃整数  11%5=1

7、现有代码如下, 想要运算结果是2.5 代码应该怎么改 ?

int a = 5;
int b = 2;
double c = a / b;
答: (不止一种修改方式)
方法一:
        double a = 5;
        int b = 2;
        double c = a / b;
方法二:
        int a = 5;
        double b = 2;
        double c = a / b;
方法三:
        int a = 5;
        int b = 2;
        double c = 1.0*a / b;

8、现有代码如下, 请回答打印的结果, 并描述中间的运算过程

int a = 10;
double b = 12.3;
a += b;
System.out.println(a);
答: (务必说明原因)a+=b即a=a+b
类型转换:当 int 和 double 进行算术操作时,int 会被自动提升为 double。因此,a += b 实际上等同于 a = (int) (a + b)。 
操作过程: a 初始值为 10,b 的值为 12.3。 表达式 a + b 中,a 被转换为 double,变为 10.0。将 10.0 和 12.3 相加,得到 22.3。 然后,结果 22.3 需要赋值回 a,而 a 是一个 int 类型。将 double 值赋给 int 类型的变量时,Java 会进行类型转换,截断小数部分,只保留整数部分。因此,22.3 被截断为 22。 
赋值:截断后的值 22 被赋回到 a。
输出:当您打印 a 时,输出的是 22,因为 a 是 int 类型,不能存储小数值。
因此,关键点在于 a 是 int 类型,当使用 += 进行 double 运算时,double 值在赋值给 int 变量时会被截断,结果是 22。

9、现有代码如下, 请回答打印的结果, 并描述中间的运算过程

public static void main(String[] args) {
    int x = 3;
    int y = 4;
    boolean result = x++ > 3 && --y < 4;
    System.out.println(result);
    System.out.println(x);
    System.out.println(y);
}
答: (务必说明原因) 
boolean result = x++ > 3 && --y < 4;
其中x++为先赋值后运算,
故x++ > 3为false,
又因为&&短路与左侧为false即整体false右侧不执行,
故result为false,x为3+1=4,y=4
  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值