Java面试题整理

  • Java是跨平台的吗?Jvm是跨平台的吗?
    答:
    Java程序是借助Jvm来完成跨平台的,需要Jre提供运行环境
    Jvm不是跨平台的,如果Jvm跨平台,只需要一个Jvm即可,但是针对不同的操作系统,必须提供对应平台版本的Jvm.

  • 哪句是编译失败的?为什么?
    byte b1 = 3 , b2 = 4 , b ;
    b = b1 + b2 ;
    b = 3 + 4 ;
    答:
    第二句编译失败,因为变量b1+b2 时数据类型由byte型提升成 int 型,而变量b 是byte类型,接收不了int型数值,会丢失精度

  • byte b = 130;有没有问题?如果想让赋值正确,可以怎么做?结果是多少?
    有问题,130超出了byte的取值范围(-128~127)
    想让赋值正确要进行变量的强制类型转换
    byte b = (byte)130;结果为-126
    正数的原、反、补码都相同,即二进制数
    130的二进制为10000010,再由补码推原码,先减00000001,在取反为11111110
    最高位(符号位)是1,不参与运算,算出结果为-126

  • 下面两个代码有没有问题,如果有,哪里有问题?
    A:short s = 1;s = s+1;
    B:short s = 1;s += 1;
    答:
    A有问题,数据类型不兼容,丢失精度
    存在默认类型提升,short类型在参与运算时默认提升为int类型
    s+1的结果是int类型,使用short类型变量接收int类型的值是不可以的!
    如何解决:只能强制类型转换>>>s = (short) (s+1);
    B没有问题,对于扩展运算符 " += “,” -= “,” *= “,” /= “,” %= ",隐藏了强制类型转换

  • 逻辑双与&&和逻辑单与&的区别?逻辑双或||和逻辑单或|的区别?
    答:
    &&和&都符合:有false,则false
    逻辑双与&&:如果&&符号的左边表达式为false,右边就不执行了(短路效果)
    ||和|都符合:有true,则true
    逻辑双或||:如果||符号的左边表达式为true,右边就不执行了

  • 有效的方式写出2乘以8的结果
    答:
    2<<3 = 2*2^3 = 16

  • 将两个数据的值进行互换
    (考查位运算符中位异或特点)
    答:
    int a,b;
    //方式一:使用中间变量
    int temp = a ;
    a = b ;
    b = temp ;
    //方式二,位异或的特点
    a = a ^ b ;
    b = a ^ b ;
    a = a ^ b ;
    //方式3,变量相加或相减
    a = a + b ;
    b = a - b ;
    a = a - b ;
    //一步走
    b = (a + b) - (a = b) ;
    System.out.print(“a=”+a);
    System.out.print(“b=”+b);

  • switch中的表达式可以是byte类型吗?
    答: 是,表达式一般接收具体的变量,类型一般情况:byte,short,int,char
    switch中的表达式可以是String类型吗?
    答: 如果是jdk1.7以后可以跟String
    switch中的表达式可以是枚举类型吗?
    答: 如果是jdk1.5以后可以是枚举

  • 数组中有没有length()?
    答: 没有,只有length属性
    String类中有没有length()?
    答: String有length(),获取字符串长度
    集合中有没有length()?
    答: 没有,获取集合长度size()

  • 静态代码块、构造代码块、构造方法的执行顺序?
    答: 静态代码块>>>构造代码块>>>构造方法

  • final的应用?
    答:
    可以修饰类,被修饰的类无法被继承
    可以修饰变量,此时这个变量是常量,被修饰的变量只能赋值一次
    可以修饰成员方法,此刻该方法不能被重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值