zoukankan      html  css  js  c++  java
  • Java面试查漏补缺

    一、基础

    1、&&&的区别。 

    【概述】

    &&能用作逻辑与(and)运算符(具有短路功能);但是&可以作为逻辑与运算符(是“无条件与”,即没有短路的功能),也可以作为位的与运算符

    【详细】

    相同点:&&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

    不同点:

    1、&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,

      例如,对于if(str != null && !str.equals(“”))表达式,当strnull时,后面的表达式不会执行,所以不会出现NullPointerException;如果将&&改为&,则会抛出NullPointerException异常。

    2、&还可以用作位运算符&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4bit位,  例如,0x31 & 0x0f的结果为0x01。 

    【备注】:这道题先说两者的共同点,再说出&&&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。

     

     

    2、String s = a+b+c+d+e;创建了几个对象的详细分析?

    具体点击博文String s = a+b+c+d+e;创建了几个对象的详细分析?

     

    3java对象引用比较 

    直接说出以下程序的输出结果:
    Integer a = 10;
    Integer b = 10;
    System.out.println(a == b);
    Integer x = 156;
    Integer y = 156;
    System.out.println(x == y);

    答案是:True、False

    分析:
    两个Integer对象是不会自动拆包,Integer == Integer不会自动拆包比较的
    Integer == int这才会自动拆包。
    但是JDK缓存了-128-127这些数字的对象(类似于一个pool)
    所以a与b的存储地址都指向同一对象

    Integer a = new Integer(1);
    Integer b = new Integer(1);
    a == b 呢? 答案:False

    原因:new Integer()是强制
    强制生成一个新对象

     3、switch语句能否作用在byte上,能否作用在long上,能否作用在String? 

      在switchexpr1)中,expr1只能是一个整数表达式(int类型或者可以隐式转化为int类型的数据类型(short、byte等))、字符串或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int所以,这些类型以及这些类型的包装类型也是可以的。

      【注意】显然,long类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。 

     

     4、Java基本数据类型及其类型转换:

     

    类型名称类型定义类型取值
    boolean 布尔值,作二元判断 truefalse
    byte 8位有符号整数 最小值-128,最大值127
    short 16位有符号整数 最小值-32768,最大值32767
    int 32位有符号整数 最小值-2147483648(-231),最大值2147483647(231-1)
    long 64位有符号整数 -263~(263-1)
    float 32位浮点数 1.4E-45~3.4028235E38
    double 64位浮点数 4.9E-324~1.7976931348623157E308
    char 16位Unicode字符 不适用

     

    【注意】float a=1.0  //********编译错误,1.0默认是double类型,转换为float会出现错误异常。

     

     

    5short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 

    对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型所以结果是int,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

    对于short s1 = 1; s1 += 1;由于 += java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

     

    6char型变量中能不能存贮一个中文汉字?为什么? 

     

    【同第5题是同种类型题】Java中char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

     

    备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。 

     

  • 相关阅读:
    PHP基本的语法以及和Java的差别
    Linux 性能測试工具
    【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
    【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
    【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
    Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
  • 原文地址:https://www.cnblogs.com/mo-wang/p/3683331.html
Copyright © 2011-2022 走看看