java面试题(中)

一、JDK和JRE的区别是什么?

JDK:是java开发工具包,可以编写java程序,是面向开发者的工作环境,需要配置环境变量。
JRE:java运行时环境,包含了java虚拟机,java基础类库,java程序能够依赖运行的平台,不需要配置环境变量。
二、什么是构造函数,什么是构造函数重载?什么是复制构造函数?

构造函数是类函数,函数名与类名完全相同,无返回值,重载是指可以写多个构造函数,只是参数类型个数不同。
复制构造函数java中没有,它是指将本类的对象作为参数的构造函数。
三、创建线程有几种不同的方式?哪一种好?

1、继承Thread类
2、实现Runnable接口
3、实现Runnable接口比较好,因为不需要继承Thread类,java是单继承的,不支持多继承,在一个继承了其他类的类中,要想实现线程,只能实现接口来完成。
四、Array和ArrayList有什么区别?什么时候应该用Array而不是ArrayList?

1、Array大小固定,存储数据和对象。声明同时必须进行实例化,至少得初始化数组的大小。只能存储同构的对象(类型一致)。
2、ArrayList是动态增长的,只存对象类型。可以只声明。他可以存储异构的对象。
如果我们想要保存一些在整个程序运行期间都存在而且不变的数据,我们可以用Array。根据他们的区别判断具体什么时候用,不多赘述了。
五、谈谈对异常的理解

异常分为error和exception
1、error是系统异常,不可控。
2、exception是可控的异常。可以分为编译时异常和运行时异常,对于编译时异常可以通过try-catch捕获,或者throw抛出。
六、throw与throws区别

1、throw用来声明异常,后面跟的是一个具体的异常实例,写在方法体内。表示抛出异常,由方法的调用者来处理。
2、throws后面跟的是异常类,异常类可以出现多个,用逗号隔开。

七、作用域public,private、protected以及不写的区别

public:在同包下、不同包下都可以访问
private:私有,只在本类上调用。
protected:受保护的类,只能在同一包下可访问,子类也可以访问。
不写默认为friendly,类同包。
在这里插入图片描述
八、抽象方法是否可以同时是static,native,synchronized?

不能是static,抽象方法需要子类重写,静态方法是无法被重写的。
不能是native,本地方法是由本地代码实现的方法,抽象方法没有方法体,没有实现。
不能是synchronized,它跟实现细节有关,抽象方法不涉及实现细节,无方法体。

九、String s=new String(‘xyz’)创建了几个String对象?

可能是一个,也可能是两个。
1、当JVM读到‘xyz’时,首先检查常量池,要是有的话,不会为‘xyz’再次创建,读到new的时候,创建一个对象,把常量池中的‘xyz’的引用地址指向当前对象。所以这种情况一共创建了一个对象。
2、要是常量池中没有,先创建‘xyz’对象,在new的时候,再创建对象指向刚创建的对象。这时创建了两个对象。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卧龙不言

欢迎关注java基础笔记公众号

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值