前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《面试季》高频面试题-基础篇(二)

《面试季》高频面试题-基础篇(二)

作者头像
IT学习日记
发布2022-09-13 12:38:05
3350
发布2022-09-13 12:38:05
举报
文章被收录于专栏:IT知识进阶学习
  • 💂 个人网站: IT学习日记
  • 🤟 版权: 本文由【IT学习日记】原创、需要转载请联系博主

前言

  • 大家好,这里是IT学习日记,相信大家对今年IT的行情应该也有所了解了,从大厂到小厂,各种裁员消息。公司裁员我们无法决定,我们能做的就是不断提升自己,提前准备。
  • 本系列文章主要分享了之前博主真实面试中遇到的一些问题,希望能够帮助准备就业或者跳槽的朋友。

一: float f = 6.6 这个代码是否有问题?

   有,在JAVA语言中,默认小数是双精度(double),而float是单精度类型,使用float接收双精度的数值,相当于向下转型(down-casting),会造成精度丢失,因此需要强制类型转换即float f = (float)6.6或者在数值后指定类型即float f = 6.6F;

追问1: short s1 = 1; s1 = s1 + 1;存在问题吗,存在则具体说明,short s1 = 1; s1 += 1;存在问题吗?

   s1 = s1 + 1存在问题,无法通过编译。因为1是int类型在JAVA语言中占4个字节,而short类型在JAVA中占2个字节,使用short类型接收,则表明需要强制类型转换即写成:想要编译通过需要写成: s1 = (short) (s1 + 1);

   short s1 = 1; s1 += 1;写法没有错误,可以正常编译,"+="是一个复合运算符,JAVA编译器会对它进行特殊处理,它包含了隐式的强制类型转换,相当于s1 = (short)s1 + 1;

二: &和&&的区别?

1、&运算符有两种用法:

   (1)按位与: 具体的含义是参与运算的两数各对应的二进制位相与,只有对应的两个二进位均为1时,结果位才为1 ,否则为0。

   (2)逻辑与: 要求左右两边的条件都为true时,返回的结果才为true,否则为false。

2、&&运算符也叫短路与运算,特点如下:

   (1)、如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。只有运算符两边的条件都为真时,才会返回true。

   (2)、它的运用场景很多,合理运用可以避免空指针,如判断用户名不是null且不为空字符串时,使用username != null &&!username.equals(“”),运算符的条件顺序不能调换,否则会出现空指针。

   (3)、逻辑或运算符(|)和短路或运算符(||)的差别也是相似,短路或运算符(||)只要运算符左边的条件为真,则不运行右边的条件判断,直接返回true。

三: Math.round(2.5) 等于多少?Math.round(-2.5)等于多少?

   round方法的作用是四舍五入,Math.round(2.5)的返回值是3,Math.round(-2.5)的返回值是-2。四舍五入的原理是在参数上加0.5然后进行下取整(向下取整表示取更小的值)。

四: switch(condition)中,condition的值可以是哪些类型?

  1、Java5以前,switch(condition)中,condition只能是byte、short、char、int(包括它们的包装类型)类型的值。

  2、Java5开始,Java中引入了枚举类型,condition也可以是enum类型的值

  3、Java7开始,condition还可以是字符串(String),但是长整型(long),浮点数(float)到目前为止还不支持。

五: 当两个对象x、y的equals方法为true时,他们的hashCode方法返回的值可以是不同,这个说法正确?

  这个说法是错误的!当x.equals(y)时,它们的hash code也应该相同。对于equals和hashCode方法Java中有以下的规定:

  1、如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;

  2、如果两个对象的hashCode相同,它们equals并不一定相同,只能说明两个对象在散列存储结构中,存放在相同的一个位置。

  3、如果违背了上面两点的规范,那么在使用容器的时候,在Set集合中可能出现相同的对象,增加元素的效率会大大下降,频繁的哈希冲突会导致性能大大的下降。

追问1: 重写equals方法应该注意哪些事项

  如果重写了一个对象的equals方法,那么一定要重写这个对象的hashCode方法,目的是为了保证equals方法相同的对象拥有相同的hashCode,《Effective Java》书籍中写到重写equals需要注意以下事项:

  1、自反性: 针对非空的x,使用x.equals(x)应该返回true

  2、对称性: 针对x,y,如果x.equals(y)为true,那么y.equals(x)也应该为true

  3、传递性: 如有x,y,z,存在x.equals(y)和y.equals(z)都为True,那么x.equals(z)也应该为true

  4、一致性: 如果比较对象未发生改变,则反复调用equals方法应该返回同样的结果

  5、对于任意的非空x,x.equals(null)应该返回false

追问2: 重写equals方法应该大概包含哪些内容

  一个好的equals方法重写应该具有以下的特点:

  1、使用==操作符检查”,判断参数是否为这个对象的引用”;

  2、使用instanceof操作符检查”参数是否为正确的类型”;

  3、对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

  4、编写完equals方法后,要判断它是否满足自反性、对称性、传递性、一致性;

  6、重写equals时总是要重写hashCode;

  7、不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。

小结

   不积跬步,无以至千里;不积小流,无以成江海。今天播种努力的种子,总会有一天发芽!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一: float f = 6.6 这个代码是否有问题?
    • 追问1: short s1 = 1; s1 = s1 + 1;存在问题吗,存在则具体说明,short s1 = 1; s1 += 1;存在问题吗?
    • 二: &和&&的区别?
    • 三: Math.round(2.5) 等于多少?Math.round(-2.5)等于多少?
    • 四: switch(condition)中,condition的值可以是哪些类型?
    • 五: 当两个对象x、y的equals方法为true时,他们的hashCode方法返回的值可以是不同,这个说法正确?
      • 追问1: 重写equals方法应该注意哪些事项
        • 追问2: 重写equals方法应该大概包含哪些内容
          • 小结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档