java面试总结06_++i和i++

一、面试的时候问了我一个问题:++i和i++的区别是什么,是否是线程安全的,然后给我一个代码,让我判断执行结果!

先抛开代码,说说二者的区别:

1 :++i是先给 i 赋值,然后 i= i + 1, 得到的最终的 i ,然后 在去对这个 i  进行其他操作

比如i=1, a=++i , 执行步骤是:①:i=1 ,② i=i+1 ③ a=i  ;a的最终值是2

2:i++ 是先操作,操作后再给 i +1(注意最后是给 i 加1 不是给操作后的结果加1)

比如: i=1, a=i++ , 执行步骤是:①:i=1 ,② a=i ③ i=i+1  ;a的最终值是1

两个都不是线程安全的,他们都不是原子操作!

二、以下的打印结果

System.out.println(110); 结果:110
System.out.println(010); 结果:8
System.out.println(020); 结果:16
System.out.println(070); 结果:56

System.out.println(080); 结果:抛出异常

原因是:直接打印:以0开头的会按照8进制计算,所以数字最多是7,所以System.out.println(080); 结果:抛出异常

三、int 和integer比较

注意:对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false(这里说的是:==):

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true

Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

Integer i = 128;
Integer j = 128;
System.out.print(i.equals(j)); //true

https://www.cnblogs.com/guodongdidi/p/6953217.html

发布了23 篇原创文章 · 获赞 3 · 访问量 6858

猜你喜欢

转载自blog.csdn.net/weixin_41834814/article/details/82788875