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要注重细节啊!

  • 相关阅读:
    错误
    分页查询
    异步请求jquery
    深入理解C/C++ [Deep C (and C++)]
    C语言经典算法100例(三)
    《Python》 计算机基础
    Python程序员的进化史
    以前没有写笔记的习惯,现在慢慢的发现及时总结是多么的重要。 这一篇文章主要关于java多线程一些常见的疑惑点。因为讲解多线程的书籍和文章已经很多了,所以我也不好意思多说,嘻嘻嘻、大家可以去参考一些那些书籍。我这个文章主要关于实际的一些问题。同时也算是我以后复习的资料吧,。还请大家多多指教。 同时希望多结交一些技术上的朋友。谢谢。
    快速读入函数
    一元二次方程公式
  • 原文地址:https://www.cnblogs.com/wsyblog/p/7258764.html
Copyright © 2011-2022 走看看