JavaSE常见错题整理

深入解析Java switch/case:误区与特性
本文详细讨论了Java中的条件分支结构switch/case,澄清了default语句的位置、数值类型的限制、break的使用误区,并通过代码实例展示了运行结果。重点在于理解case子句常量值的要求和正确用法。

文章目录

条件分支

  1. 对于switch/case语句以下说法正确的有。
    A、default语句是可选的,但是如果出现default则必须位于所有的case后面
    B、case子句后面的值必须是常量,且不可重复
    C、switch后面的表达式的值如果是数值型,则必须是可精确匹配的整数值,如int\long,而不能是浮点数
    D、case后面的break是必选的,不能省略break
    正确答案:B选项
    错误分析:
    A选项,default语句可以不放在所有的case后面
    C选项,switch/case不支持long类型
    D选项。break是可以省略的
  2. 以下代码执行结果

System.out.println(1/0.0);
System.out.println(-1/0.0);
System.out.println(1/0);

答案:
Infinity
-Infinity
运行期异常java.lang.ArithmeticException

### JavaSE 常见面试汇总 以下是关于JavaSE的一些常见面试目及其解答: #### String类中的“==”和“equals()” 在Java中,“==”是一个关系运算符,用于比较两个变量的值是否相同。对于基本数据类型,它会直接比较其值;而对于引用类型,则是比较它们的内存地址。当应用于`String`对象时,“==”实际上是在比较这两个字符串对象是否指向同一块内存区域[^1]。 另一方面,`equals()`方法是定义于`Object`类的一个方法,在`String`类中有具体的实现。这个方法被设计用来比较两个对象的内容是否一致。因此,当我们调用`str1.equals(str2)`时,我们关心的是两者的字符序列是否完全一样,而不管它们是否存储在同一位置上[^1]。 #### 包装类型的比较 包装器(Wrapper Class)是用来封装原始数据类型的类。由于这些属于引用类型而非基础数据类型,所以使用`==`操作符来对比的时候,实际上是查看两者是否代表相同的实例或者说是共享着同样的堆空间指针。这意味着即使两个不同的整数型包装器拥有相等的具体数值,只要他们是通过不同途径创建出来的独立实体,那么利用`==`检测就会返回false。只有当二者确实是指向同一个实际存在的对象时候才会得到true的结果[^2]。 为了验证内容上的平等性,应该采用各自对应的`.equals(Object obj)`函数形式来进行判定。例如Integer, Double等等都有重写过的版本可以满足我们的需求去判断内部所保存的数据单元之间是否存在匹配情况。 ```java // Example of using equals method with Integer wrapper class. public static void main(String[] args){ Integer num1 = new Integer(5); Integer num2 = new Integer(5); System.out.println(num1 == num2); // Output: false because they are different objects in memory. System.out.println(num1.equals(num2)); // Output: true since their values match according to the overridden .equals definition within Integer class. } ``` #### 面试常考知识点总结 除了以上提到的几个方面外,还有许多其他重要的概念也是经常会被问到的地方比如但不限于: - **多线程编程**: 如何同步资源访问? volatile关键字的作用是什么? - **集合框架(Collection Framework)** : ArrayList vs LinkedList性能差异在哪里? - **异常处理(Exception Handling)** :try-catch-finally结构如何工作?自定义异常怎么构建? - **面向对象特性(OOP Features)**:继承(Inheritance),多态(Polymorphism), 封装(Encapsulation)以及抽象(Abstract Classes & Interfaces).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值