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

  • 相关阅读:
    Delphi CxGrid 用法详解
    Delphi数据库字段
    如何使DevExpress的cxGrid内容只读?
    win10系统没有Windows照片查看器怎么办 win10系统下如何找回Windows照片查看器
    Delphi XE10 dxLayoutControl 控件应用指南
    在 docker 中查看容器日志
    处理 SQL SERVER 数据库的连接查询相关问题
    nginx 禁止 ip 地址访问
    查看 SQL SERVER 的连接情况
    Linux 下同步时间,另附 NTP 服务器地址
  • 原文地址:https://www.cnblogs.com/wsyblog/p/7258764.html
Copyright © 2011-2022 走看看