美文网首页
java面试题集(一)

java面试题集(一)

作者: 我呀有一只小毛驴 | 来源:发表于2018-08-28 14:48 被阅读0次

    1、面向对象的特征有哪些方面?

    封装、继承、多态

    2、访问修饰符public,private,protected,以及不写(默认)时的区别?

    修饰符 当前类 包内 子孙类 包外
    public
    protected ×
    default × ×
    private × × ×

    注:
    不写时默认为default,默认为包内使用。

    3、String 是最基本的数据类型吗?

    String和Integer都是包装类型;
    Java有8种基本数据类型: byte、short、int、long、double、float、boolean、char;

    4、float f=3.4;是否正确?

    答案:不正确。
    原因:精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f
    在java里面,没小数点的默认是int,有小数点的默认是 double;
    编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高
    double 转成 float 就不能自动做了,所以后面的加上个 f;

    5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

    1、对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
    2、对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
    3、s1是short型,1是int型,所以两个加完后是类型加大的那个是int,但是s1=s1+1;赋值的时候,s1是short型,不能将int型隐式转换成short。

    6、Java有没有goto?

    goto是Java中的保留字,但是现在还没有在Java中使用goto,Java用带标签的continue和break语句能够完全代替goto的功能,从而避免了goto语句的滥用。

    7、int和Integer有什么区别?

    int 是基本数据类型,而integer 是对象(也就是一个类)。因此在类进行初始化时int类的变量初始为0,而Integer的变量则初始化为null。
    类似的还有:float Float; double Double; String等

    8、&和&&的区别?

    对于:& -- > 不管怎样,都会执行"&"符号左右两边的程序;
    对于:&& -- > 只有当符号"&&"左边程序为真(true)后,才会执行符号"&&"右边的程序。

    9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

    堆区:专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中)
    1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
    2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.
    3.一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
    栈区:对象实例在Heap 中分配好以后,需要在Stack中保存一个4字节的Heap内存地址,用来定位该对象实例在Heap 中的位置,便于找到该对象实例。
    1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
    2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
    3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
    4.由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.
    静态区/方法区:
    1.方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
    2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
    3.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

    10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

    答:11.5+0.5后是12再向下取整是12;-11.5+0.5后是-11再向下取整-11
    扩展:Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整, 所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

    想要面试BAT,做完这160道Java技术面试题,让你胸有成竹!

    相关文章

      网友评论

          本文标题:java面试题集(一)

          本文链接:https://www.haomeiwen.com/subject/pwcfwftx.html