Day04

DAY03

1.抽象方法

abstract class xy
{
    abstract sum (int x, int y) { }
}
1.抽象方法不能有方法体,只能申明
2.该方法缺少返回值,只有构造没有返回值 ex: abstract int sum(int x,int y)

2.JAVA的垃圾回收机制

1.当调用“System.gc()"来强制回收时,系统不会立即回收垃圾 ,System.gc()来建立执行垃圾回收器回收内存,但是具体的回收时间,是不可知的,当对象的引用变量被赋值为null,可能会被当成垃圾
2.java提供了一个系统级的线程,即垃圾回收器线程,用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收没块可能被回收的内存,GC是完全自动的,不能被强制执行。
3.局部变量分为引用变量和基本类型变量,基本类型的变量名称和值都是存储在栈中。引用变量只存储引用在栈中,值在堆中,题目中说的是局部变量的引用,而释放这个需要finalize()方法,这个方法即便是使用了也不是一定立刻执行。一般局部变量是随着方法执行结束而释放

3.关于异常处理的描述

1.程序运行时异常是由Java虚拟机自动进行处理
2.编译时异常必须显示处理,运行时异常交给虚拟机
3.运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。如Null Pointer Exception异常,他就是运行时异常,并且这种异常还是最常见的异常之一,出现运行时异常后,系统会把异常一直往上层抛,一直遇见处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出,抛出以后,如果是线程,这个线程也就退出了,如果是主程序抛出的异常,整个程序也就退出了。运行时异常时Exception的子类,也有一般异常的特点,是可以被Catch块处理的,只不过往往不对它处理罢了,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

4.对list操作

nums={5,3,1}

nums.add(6) ---->{5,3,1,6}

nums.add(0,4) ----->在0位置上插入4 {4,5,3,1,6}

nums.remove(1) ---->删除1位置上的数 {4,3,1,6}

5.多线程

线程间是异步的,也就是随机调用的;而线程内部是同步的,也就是顺序执行的。

6.异常

Exception 异常的捕获顺序是,先是捕获子类,再捕获父类。

error is a subclasa of of Throwable that indicates serious problem

下面赋值语句中正确的是()

正确答案: A   你的答案: B (错误)
A	double d=5.3e12;
B.	float f=11.1;
C.	int i=0.0;
D.	Double oD=3;

java中整型默认的是int,浮点默认的是double.

B: double类型的11.1 转成 float,是需要强制转换的

C: double类型的0.0 转成 int,也是需要强制转换的

D: int 转为 封装类型Double,是无法编译的

Double oD = 3.0, 会把double类型的3.0自动装箱为Double,没有问题

占用字节空间少的类型可以向占用字节多的类型自动转换。反之则不行,需要强转确保用户明确精度丢失的风险

小数默认为double类型的,所以要用小数表示float的话要加上f或者F后缀;同理,整数默认为int型,用整数表示long的话需要加上l后者L后缀

  1. 关于不能用来修饰interface的关键字

    1.static
    2.protect
    3.private
    

    1.对应抽象类中的抽象方法(其中有abstract修饰)不能用private、static、synchronize、native修饰符修饰。原因是

    • 抽象方法没有方法体,是用来被继承的,所以不能用private修饰;

    • 对于static修饰的方法可以通过类名来访问该方法(即该方法的方法体),抽象方法用static修饰没意义。

    • 使用syncharonized关键字是为该方法加一个锁。而如果该关键字修饰的方法是static方法,则是使用的锁就是class变量的锁,如果是修饰类方法。则用this变量锁,但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的,是在其子类实现的。所以,锁应该归其子类所有,抽象方法并不能用synchronized关键字修饰了,native 本身就与abstract 冲突,他们都是方法的声明,只是一个把方法实现移交给了子类,另一个是移交给了本地操作系统,如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁是实现具体方法呢?

    2.是对于接口(interface)接口是一种特殊的接口,接口中的方法都是抽象方法(但其中的abstract可以省略) protected访问修饰符也不能使用,因为接口可以让所有的类去实现(非继承),不只是关于其子类。

Day04
Day04
Day04

上一篇:Day04-迭代器和生成器


下一篇:每日面试题总结 day04