zoukankan      html  css  js  c++  java
  • 一些JAVA中有趣的面试题

      这几天的JAVA培训课上,不断的唤醒自己对JAVA的理解(时间太长,大学学的快忘干净了),其中有一些很有趣的面试题,都是在抠JAVA细节(唉,我是那种见坑就往下跳的人,一做就错),下面就来分享一下:
      1)用JAVA程序写出当你在超市购物花费1.1元时,你给收银员2元钱,收银员找你0.9元的过程;
      当时一看题目,好简单啊!迅速写出:

    public class Sell{
      public static void main(String[] args){
        double total = 2.0;
        double used = 1.1;
        double result = total - used;
        System.out.println("result : " + result);
      }
    }

    结果就悲剧了,因为JAVA中的浮点型运算只得到近似值,运行结果为:0.8999999999999999
    为得到精确结果,需要调用JAVA在java.math包中提供的API类BigDecimal。(float和double只能用来做科学计算或者工程计算,在商业计算中要用java.math.BigDecimal)
    正确结果为:

    import java.math.BigDecimal;
    
    public class Sell1{
      public static void main(String[] args){
        BigDecimal bd1 = new BigDecimal("2.0");
        BigDecimal bd2 = new BigDecimal("1.1");
        System.out.println((double)bd1.subtract(bd2));
      }
    }

    运行结果:0.9

      2)用强制类型转换(int)(char)(byte)-1,最后的结果为多少
      当时看到这道题瞬间一愣,后来一想不还是-1吗,但不确定,就运行了一下,的到的结果为:65535((⊙o⊙)…更蒙了),后来才知道char字符型,存放字符常量,底层使用16位无符号整型表示,而且有符号数采用符号扩展,无符号数采用0扩展(计算机中,数都以补码的形式存放),所以计算的过程为:
      100000000000000000000001
      111111111111111111111111
      1111,1111 byte
      1111,1111,1111,1111 char
      0000,0000,0000,0000,1111,1111,1111,1111 int
      最后结果为:65536

      3)int a = 1,b = 2,c = 3;
      if(a > b && c++ > b)

      int a = 1,b = 2,c = 3;
      if(a > b & c++ > b)
    两段程序中输出c值,各为多少?(哈哈,这道题我还知道第一个答案c = 3,第二个就蒙了)原来:

    &&:逻辑运算符,具有逻辑短路功能(连接的两个条件,如果第一个条件为假,后面的条件不进行运算)
    &:位运算符,但可以连接连个条件,但没有短路功能

    结果为:第一个c = 3,第二个c = 4

      4)String str1 = 'a' + 3 + "Hello";
         String str2 = "Hello" + 'a' + 3;
      str1,str2输出的结果为多少?(这回不敢大意了,一定有坑,但想了想,不会啊,还是跳坑吧)
    其实“+对String类型是做字符串连接操作”,程序员几乎都知道,但“char字符型,存放字符常量,底层使用16位无符号整型表示”注意到的人就少了,这道题的结果为:

    str1 = 100Hello

    str2 = Helloa3

      现在就这些,以后有的话再更新,JAVA要注重细节啊!

  • 相关阅读:
    背水一战 Windows 10 (26)
    背水一战 Windows 10 (25)
    背水一战 Windows 10 (24)
    背水一战 Windows 10 (23)
    背水一战 Windows 10 (22)
    背水一战 Windows 10 (21)
    背水一战 Windows 10 (20)
    背水一战 Windows 10 (19)
    背水一战 Windows 10 (18)
    背水一战 Windows 10 (17)
  • 原文地址:https://www.cnblogs.com/wsyblog/p/7258764.html
Copyright © 2011-2022 走看看