Java精英班企业面试题

上元君
2021-09-26 16:45:42
6人阅读

1、如何解决计算过程中精度丧失的问题?

例如:

double d1 = 3.0; double d2 = 2.9;

// 0.10000000000000009

// 因为计算机本身是二进制的,而浮点数实际上只是个近似值,

//所以从二进制转化为十进制浮点数时,精度容易丢失,导致精度下降 System.out.println(d1 - d2);

可以使用 BigDecimal 类来操作:

涉及金钱方面的计算一般都要使用该类型以提高精确度

double d1 = 3.0; double d2 = 2.9;

BigDecimal bd1 = new BigDecimal(String.valueOf(d1)); BigDecimal bd2 = new BigDecimal(String.valueOf(d2)); double d = bd1.subtract(bd2).doubleValue(); System.out.println(d);

Ø 求 1000000 个 0.01 的和?

使用 BigDecimal

2、char 型变量能否存储一个汉字?为什么?

在 Java 中,char 类型占 2 个字节,而且 Java 默认采用 Unicode 编码,一个 Unicode 码 是 16 位,所以一个 Unicode 码占两个字节,Java 中无论汉字还是英文字母都是用 Unicode 编码来表示的。所以,在 Java 中,char 类型变量可以存储一个中文汉字。

3、&&和&,||和|有什么异同?

&&和&:都表示逻辑“与”

对于&&,如果有两个表达,第一个表达式结果为 false,那就不会计算第二个表达式的 值,整个表达式的值都是 false。

对于&,如果有两个表达式,无论第一个表达式的结果是 true 还是 false,都会计算第二 个表达式的值。

对于&&,具有短路逻辑

||和|:都表示逻辑“或”

对于||,如果有两个表达式,第一个表达式为 true,就不会计算第二个表达式的值,整 个表达式的值就是 true

对于|,如果有两个表达式,无论第一表达式的结果是 true 还是 false,都会计算第二个 表达式的值。

对于||,具有短路逻辑。

4、switch……case……的条件表达式支持什么类型?

JDK1.5 之前:byte/short/int/char JDK1.5 以后:新增 enum

JDK1.7 过后:新增 String 类型

5、equals 比较和==比较有什么区别?

(1)对于基本类型变量,存储的就是变量值本身,对于引用类型变量,存储的是对象的内存地址

(2)对于基本类型,==比较的就是值本身,而对于引用类型,==比较的则是内存的地址, equals()方法比较的是堆中的内容。即比较两个对象在堆中的内容是否相同。

如果一个对象没有重写 equals 方法则默认采用的还是==比较

6、while 循环和 do……while 循环的区别?

while 循环先判断再执行,do……while 循环先执行一次再判断,它们的区别体现在第一 次就不满足条件的循环中,如果不是这样,两者之间是可以相互替换的。

7、Java 中如何一次性跳出多重循环?

Java 中的 break 默认只能跳出一重循环,可以使用带标号的 break 语句跳出多重循环。

here: for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) {

System.out.println("i=" + i + ",j=" + j); if (j == 1) {

break here;

}

}

}

想了解更多关于Java面试题,欢迎关注上元IT公众号,更多惊喜等你!

上一篇
收官之作 | 11月15日在南京《10万年薪财务人员必备十大技能》公益课最后一场,错过太可惜!
0基础小白学Python可以吗?
下一篇
扫码获取粉丝好礼
免费资料领取
最近直播
更多
空数据 undefined
APP下载
公众号
免费资料
顶部