Java面题DAY02

每日一练day02

-01Java异常处理机制

1、异常处理机制让程序具有容错性和健壮性,程序运行出现状况时,系统会生成一个Exception对象来通知程序
2、处理异常的语句由try、catch、finally三部分组成。try块用于包裹业务代码,catch块用于捕获并处理某个类型的异常,finally块则用于回收资源。
3、如果业务代码发生异常,系统创建一个异常对象,并将其提交给JVM,由JVM寻找可以处理这个异常的catch块,并将异常对象交给这个catch块处理。如果JVM没有找到,运行环境终止,Java程序退出。
4、Java也允许程序主动抛出异常。当业务代码中,判断某项错误的条件成立时,可以使用throw关键字向外抛出异常。

-02 对面向对象的理解

1、面向对象三大基本特征:封装、继承、多态。
2、封装:将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,让外部程序通过该类提供的方法来实现对内部信息的操作和访问,提高了代码的可维护性;
3、继承:实现代码复用的重要手段,通过extends实现类的继承,实现继承的类被称为子类,被继承的类称为父类;
4、多态的实现离不开继承,在设计程序时,我们可以将参数的类型定义为父类型。在调用程序时根据实际情况,传入该父类型的某个子类型的实例,这样就实现了多态。

- 03重载和重写的区别,构造方法为什么不能重写

重写和重载的区别:
1.重载发生在同一类中,而重写发生在子类中。
2.重载要求方法名相同,参数列表,返回值,访问修饰符都可以不同。重写要求方法名相同,参数列表相同,返回值类型要小于等于父类的方法,抛出的异常要小于等于父类方法抛出的异常,访问修饰符权限大于等于父类方法的访问修饰符权限。
3.final,private修饰的方法不能重写,构造方法也不能重写。

-04 访问修饰符

private,default,protected,public private:类中被private修饰的只能在被当前类的内部访问,
default:类中被default修饰的只能在当前类和当前类所在包的其他类访问。protected:类中被protected修饰的可以被当前类和当前类所在的包的其他类以及子类访问。
public:类中被public修饰的能被当前项目下的所有类访问。

-05泛型,泛型擦除

1.泛型:Java在jdk1.5引入了泛型,在没有泛型之前,每次从集合中读取的对象都必须进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理的阶段就出错;在提出泛型之后就可以明确的指定集合接受哪些对象类型,编译器就能知晓并且自动为插入的代码进行泛化,在编译阶段告知是否插入类型错误的对象,程序会变得更加安全清晰。

2.泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。

- 06对反射的了解

反射就是在程序运行期间动态的获取对象的属性和方法的功能叫做反射。它能够在程序运行期间,对于任意一个类,都能知道它所有的方法和属性,对于任意一个对象,都能知道他的属性和方法。
获取Class对象的三种方式:getClass();xx.class;Class.forName(“xxx”); 反射的优缺点:
优点:运行期间能够动态的获取类,提高代码的灵活性。 缺点:性能比直接的Java代码要慢很多。
应用场景:spring的xml配置模式,以及动态代理模式都用到了反射。

- 07对多线程的了解

1.线程是程序执行的最小单元,一个进程可以拥有多个线程
2.各个线程之间共享程序的内存空间(代码段、数据段和堆空间)和系统分配的资源(CPU,I/O,打开的文件),但是各个线程拥有自己的栈空间
3.多线程优点:减少程序响应时间;提高CPU利用率;创建和切换开销小;数据共享效率高;简化程序结构

-08 线程的状态

Java线程一共有6种状态。
NEW初始状态,还没调用start方法。Runnable运行状态,线程正在JVM中执行,也可能在等待操作系统的调度。
BLOCKED:阻塞状态,线程正在等待获取监视器锁。 WAITING:等待状态,线程正在等待其他线程的通知或中断。
TIMED_WAITING:超时等待状态,在WAITING的基础上增加了超时时间,即超出时间自动返回。
TERMINATED:终止状态,线程已执行完毕。

-09wt()何sleep()区别

  1. 所属的类型不同
  • wt()是Object类的实例方法,调用该方法的线程将进入WTING状态。
  • sleep()是Thread类的静态方法,调用该方法的线程将进入TIMED_WTING状态。
  1. 对锁的依赖不同
  • wt()依赖于synchronized锁,通过监视器进行调用,调用后线程会释放锁。
  • sleep()不依赖于任何锁,所以在调用后它也不会释放锁。
  1. 返回的条件不同
  • 调用wt()进入等待状态的线程,需要由notify()/notifyAll()唤醒,从而返回。
  • 调用sleep()进入超时等待的线程,需要在超时时间到达后自动返回。

-10 线程有三种创建方式,分别是

1、继承Thread类,重写run()方法,无返回值
2、实现Runnable接口,并实现该接口的run()方法(推荐使用),无返回值
3、实现Callable接口,重写call()方法,有返回值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

septnancye

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值