java程序员面试(二)

基本类型与应用

  1. Java提供了哪些基本数据类型;

    • 8种原始的数据类型(byte、short、int、long、float、double、boolean、char)
    • 基本数据类型在声明之后就会立刻在栈上被分配内存空间。
    • 引用类型(数组、类、接口)在声明变量时不会被分配内存空间,只是存储了一个内存地址而已。
    • boolean这种数据类型,理论上只需要一个bit就可以存储,但是在JAVA中并没有具体的规定,不同的JVM上面是不同的。
    • char数据类型使用unicode(16bit)字符,两个字节;能存储中文字符;而在String中,存储中文字符用两个字节,存储英文字符用一个字节。
    • 基本类型void,在java.lang.void类中
    • 封装类型和原始类型的不同点:首先,原始类型在传递参数时都是按值传递,而封装类型是按引用传递。其次,当封装类型和原始类型当作某个类的实例数据时,他们所指的默认值不同。对象引用的默认值为null,而原始类型的默认值与他们的类型有关。
    • null不是合法的Object实例,仅用于表明该引用目前没有指向任何对象。
  2. 什么是不可变类;

    • 不可变类指当创建了这个类的实例后,就不允许修改它的值了。所有基本类型的封装类基本都是不可变类,String类也是。
    • 如和理解对String类型的值进行修改,String类型的对象并没有改变,只是变量指向了不同的对象引用。
    • 不可变类的特点:使用简单、线程安全、节省内存;会因值的不同产生新的对象。
    • 其实不是很懂这个啥不可变类。
  3. 值传递和引用传递有哪些区别;

    • 基本数据类型都是值传递
    • 对象都是引用传递
    • 但本质上都是值传递,因为引用地址值传递也是值
  4. 不同数据类型的转换有哪些规则;

    • 类型自动转换
    • 类型强制转换
    • “+=”不会引起类型自动转换
  5. 强制类型转换的注意事项有哪些;

    • 精度损失
  6. 运算符优先级是什么;

    • +的运算符高于 >>位运算符
  7. Math类中round、ceil和floor方法的功能各是什么;

    • round 四舍五入
    • ceil天花板
    • floor地板
  8. ++i和i++有什么区别;

    • 这个考的很多,也没啥说的;
  9. 如何实现无符号数的右移操作;

    • 负数的无符号右移算出来的是啥子鬼
    • 移动的位数是有限制的,如int类型移动33位,实际上移动33%32
  10. char型变量中是否可以存储一个中文汉字;

    • 可以

本文链接:

https://heyzen.club/index.php/J/294.html
1 + 3 =
快来做第一个评论的人吧~