首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java面试 >

JAVA面试题解惑系列(8)——聊聊基本类型(内置类型)

2013-11-08 
JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)原文地址:http://rmyd.group.iteye.com/group/topic/6193

JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)

原文地址:http://rmyd.group.iteye.com/group/topic/6193

?

基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一下与基本类型相关的知识。?

基本类型共有八种,它们分别都有相对应的包装类。关于它们的详细信息请看下表:

?

JAVA面试题解惑系列(8)——聊聊基本类型(内置类型)

?

基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:?

?

?

图中的实线表示无精度损失的转换,而虚线则表示这样的转换可能会损失一定的精度。如果我们想把一个能表示更大范围或者更高精度的类型,转换为一个范围更小或者精度更低的类型时,就需要使用强制类型转换(Cast)了。不过我们要尽量避免这种用法,因为它常常引发错误。请看下面的例子,如果不运行代码,你能预测它的结果吗?

?

public class MathTest {    // 枚举类型,Java5.0以上版本可用    static enum enum_e {    A, B    }      public static void main(String[] args) {    // byte    byte byte_n = 0;    switch (byte_n) {    case 0:    System.out.println("byte可以用于switch语句");    break;    }      // Byte类    Byte byte_m = 0;    // 需要Java5.0(1.5)以上版本支持    switch (byte_m) {    case 0:    System.out.println("Byte类可以用于switch语句");    System.out.println();    break;    }      // char    char char_n = 0;    switch (char_n) {    case 0:    System.out.println("char可以用于switch语句");    break;    }      // Character类    Character char_m = 0;    // 需要Java5.0(1.5)以上版本支持    switch (char_m) {    case 0:    System.out.println("Character类可以用于switch语句");    System.out.println();    break;    }      // short    short short_n = 0;    switch (short_n) {    case 0:    System.out.println("short可以用于switch语句");    break;    }      // Short    Short short_m = 0;    // 需要Java5.0(1.5)以上版本支持    switch (short_m) {    case 0:    System.out.println("Short类可以用于switch语句");    System.out.println();    break;    }      // int    int int_n = 0;    switch (int_n) {    case 0:    System.out.println("int可以用于switch语句");    break;    }      // Integer类    Integer int_m = 0;    // 需要Java5.0(1.5)以上版本支持    switch (int_m) {    case 0:    System.out.println("Integer类可以用于switch语句");    System.out.println();    break;    }      // long    long long_n = 0;    // 编译错误,long型不能用于switch语句    // switch (long_n) {    // case 0:    // System.out.println("long可以用于switch语句");    // break;    // }      // Long类    Long long_m = 0L;    // 编译错误,Long类型不能用于switch语句    // switch (long_m) {    // case 0:    // System.out.println("Long类可以用于switch语句");    // System.out.println();    // break;    // }      // float    float float_n = 0.0F;    // 编译错误,float型不能用于switch语句    // switch (float_n) {    // case 0.0F:    // System.out.println("float可以用于switch语句");    // break;    // }      // Float类    Float float_m = 0.0F;    // 编译错误,Float类型不能用于switch语句    // switch (float_m) {    // case 0.0F:    // System.out.println("Float类可以用于switch语句");    // System.out.println();    // break;    // }      // double    double double_n = 0.0;    // 编译错误,double型不能用于switch语句    // switch (double_n) {    // case 0.0:    // System.out.println("double可以用于switch语句");    // break;    // }      // Double类    Double double_m = 0.0;    // 编译错误,Double类型不能用于switch语句    // switch (double_m) {    // case 0.0:    // System.out.println("Double类可以用于switch语句");    // System.out.println();    // break;    // }      // boolean    boolean bool_b = true;    // 编译错误,boolean型不能用于switch语句    // switch (bool_b) {    // case true:    // System.out.println("boolean可以用于switch语句");    // break;    // }      // Boolean类    Boolean bool_l = true;    // 编译错误,Boolean类型不能用于switch语句    // switch (bool_l) {    // case true:    // System.out.println("Boolean类可以用于switch语句");    // System.out.println();    // break;    // }      // String对象    String string_s = "Z";    // 编译错误,long型不能用于switch语句    // switch (string_s) {    // case "Z":    // System.out.println("String可以用于switch语句");    // System.out.println();    // break;    // }      // enum(枚举类型,Java5.0以上版本可用)    switch (MathTest.enum_e.A) {    case A:    System.out.println("enum可以用于switch语句-A");    break;    case B:    System.out.println("enum可以用于switch语句-B");    break;    }    }  } 

?

运行结果如下:?

1、byte可以用于switch语句?
2、Byte类可以用于switch语句?
3、
4、char可以用于switch语句?
5、Character类可以用于switch语句?
6、
7、short可以用于switch语句?
8、Short类可以用于switch语句?
9、
10、int可以用于switch语句?
11、Integer类可以用于switch语句?
12、
13、enum可以用于switch语句-A?

结果已经出来了,我们来总结一下:?

1、byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持)都可以用于switch语句。?
2、long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中)都不能用于switch语句。?
3、enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支持。?
4、所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除byte、char、short、int四种基本类型对应的包装类)都不能用于switch语句。

热点排行