java基础—面试题一
创始人
2024-05-22 21:13:30

文章目录

      • 1.==和equals区别是什么?
      • 2.Java中的 <<、>>、>>> 是什么
      • 3.if-else-if-else与switch的区别
      • 4.while和do-while的区别
      • 5.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在String上
      • 6.&和&&、|和||区别
      • 7.break和continue区别
      • 8.访问权限修饰符public、private、protected, 以及不写(默认)时的区别
      • 9.如何让计算机最高效的算出2乘以8
      • 10. Math.round(11.5)等于多少? Math.round(- 11.5) 又等于多少

1.==和equals区别是什么?

  • ==是关系运算符,equals()是方法,返回的都是布尔值。

  • Object的==和equals()比较的都是地址,作用相同。

  • == 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

equals源码

//equals 本质上就是 ==,String、Integer重写了 Object 的 equals 方法,把引用比较改成了值比较。
public boolean equals(Object obj) {return (this == obj);
}

String x = “string”;

String y = “string”;

String z = new String(“string”);

System.out.println(x == y); // true因为x和y指向同一个地址

System.out.println(x == z); // false

System.out.println(x.equals(y)); // true

System.out.println(x.equals(z)); // true

2.Java中的 <<、>>、>>> 是什么

  • <<表示左移,不分正负,低位补0。<< 1 相当于乘以2。
  • >> 表示右移,如果该数为正,则高位补0,若为负数,则高位补1,右移1位表示除以2
  • >>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

3.if-else-if-else与switch的区别

if-else-if-else

  • 适合分支较少
  • 判断条件不单一

switch

  • 适合较多分支
  • 适合判断条件类型单一
  • JDK1.7之前仅支持int和enum,JDK1.7之后多了支持String。但是企业开发中大部分用enum
  • 没有break语句,每个分支都会执行

4.while和do-while的区别

  • while先判断后执行,第一次判断为false,循环体一次都不执行。
  • do-while 先执行后判单,循环体最少执行一次。

5.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在String上

Java5 以前 switch(expr)中,expr 只能是 byte、short、char、int。

Java 5开始,Java中引入了枚举型,expr也可以是 enum类型。

ava 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

6.&和&&、|和||区别

  • &是逻辑与、例如a&b。a为false后,仍会运算b
  • &&是短路与。例如a&b。a为false后,后面就被短路了,不会运算b。

例如:某种判断有两个步骤,先去a表查指定数据,有数据(返回true)就进入下一步,没有数据就需要去b表查询是否有数据,有数据(返回true)就进行下一步。(a||b)

7.break和continue区别

  • 两者都是用来控制循环的语句。
  • break:用于结束一个循环,跳出循环执行后面的语句
  • continue:跳过本轮循环,进入下一个循环

8.访问权限修饰符public、private、protected, 以及不写(默认)时的区别

image-20230203015348159

9.如何让计算机最高效的算出2乘以8

2 <<3 CPU 直接支持位运算,效率最高

位运算符 <<,是将一个数左移 n 位,相当于乘以了 2 的 n 次方

一个数乘以 8 只要将其左移 3 位即可

10. Math.round(11.5)等于多少? Math.round(- 11.5) 又等于多少

Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5

然后进行取整。

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...