java面试中注意的问题01

一、数据类型:
阅读如下代码,写出运行结果。

public class Rigorous{
    public static void mian (String [] args){
       double d=10.00;
       double f=9.30;
       System.out.println(d-f);
    }
}

答:在这道题中,很多初学者会毫不犹豫写上“0.7”,但结果却是“0.699999999993”,这结果出乎意料,想要得到正确的结果可先将浮点类型装换成整型计算后,再讲整形转换成浮点型:

public class SwitchLong{
    public static void main(String[] rags){
        double d=10.00;
        double f=9.30;
        long d1=(long)(d*100);
        long f1=(long)(f*100);
        double re=(d1-f1)/100.0;
        System.out.println(re);
    }
}

二、运算符与表达式
1、What will happen when you attempt to compil and run the following code?(编译并运行下面的代码,会输出什么结果?)

public class Inc{
    public static void main(String[] rags){
    Inc inc=new Inc();
    int i=0;
    inc.fermin(i);
    i=i++;
    System.out.println(i);
   }
   void fermin(int i){
    i++;
   }
}

A.Compile time errror(编译错误)
B.Output of 2(输出2)
C.Output of 1(输出1)
D.Output of 0(输出0)
答:可以看出,fermin方法并不会返回值,所以i=0,接下来执行了i=i++语句后,i不会马上得到1,所以输出的还是0,选择D。但是如果把i=i++变成i++,则输出语句中再次调用i时,其值已经变成1。
2、“||”是短路或,在运算时第一个表达式为true,则不会计算第二个表达式的值;“|”或运算则是两个都要计算比较;“&&”短路与运算时,第一个表达式为false时,不用再比较第二个表达式;“&”与则是两个都要比较。

三、方法
1、已知程序如下:

public class MethodTest01{
    public static void main(String[] args){
      int i=test(-1);
      System.out.print(i);
    }
    public static int test(int a){
      if (a<0){
         return a++;
         }
    }
}

程序运行的结果为()
A、编译通过并输出-1
B、编译通过并输出0
C、编译错误,因为缺少返回值
D、编译错误,因为调用test()方法错误
答:这里有个坑,很多人想当然地认为应该输出-1,其实不是这样的。上面的程序是无法通过编译的,因为test()方法的返回值类型是int型,但是程序却有可能没有返回值。试想一下,如果输入的参数是1,那么if里面的代码就不会执行,也就没有返回值了。所以选C。
2、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

  switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值