java中最常见的面试问题

1.switch语句能否作用在byte上,能否作用在long,能否作用在String上:

        在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型

由于byte  short  char都可以隐含转换为int,所以,这些类型以及这些类型的包装类也是可以的,显然,long   String类型是

不符合switch的语法规定.

2.short s1=1; s1 =  s1+1;有什么错? short s1=1; s1+=1; 有什么错?

       对于short s1=1; s1=s1+1;  由于s1=s1+1运算时会自动提升表达式的类型,所以结果是int类型,在赋值给short类型s1

时,编译器将会报告需要强制转换类型错误.

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

3.char型变量中能不能存储一个中文汉字?为什么?

       char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以是可以的,不过呢,如果某个特殊

的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊的汉字.

       补充说明,unicode编码占用两个字节,所以,char类型的变量也是占用.

4.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

       指的是引用的变量不能变,引用变量所指向的对象中的内容还是可以变的,例如:

       final StringBuffer a = new StringBuffer("immutable");
        a = new StringBuffer("");  //编译报错
        a.append("broken");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章