眼瞅着javase学了一遍了,但是博主还是有很多都很懵逼,所以打算回顾一下之前的知识,碰到了一些问题,在这里做一记录:
- 强制类型转换问题:
short a = 128;
byte b = (byte)a;
请问a和b的值是多少?
在java中byte 占1个字节 00000000
short占2个字节 00000000 00000000
int占4个字节
long占8个字节
所谓的强制类型转换,就是一个截取的问题,以本题为例:short转为byte,截去了前面的八位二进制,保留了后面的八位二进制
short128=00000000 10000000截取后为10000000,由于电脑中存的是二进制的补码(补码=(-原码)+1),此时求得反码为01111111,原码为10000000,最高位为符号位(1为负数0为正数),则对应十进制为-0或-128,由于没有-0,故为-128.
2.子类继承父类后,父类的静态代码块,非静态代码块,构造方法,子类的静态代码块,非静态代码块,构造方法的运行顺序是?
答:父类的静态代码块->子类的静态代码块->父非静态代码块->父的构造->子的非静态代码块->子的构造
3.子类继承父类后,继承了父类的什么?
除了父类的构造和static方法外的所有方法和数据,包括父类的私有属性,只不过是无法访问罢了
4.volatile关键字
作用:保证不同线程对同一资源操作时的可见性,即volatile告诉jvm当前变量在寄存器(缓冲区)中的值是不可信的,要从内存中读取,从而保证在访问该变量时都是从内存读取的最新值。
注:不提供该数据修改的原子性保证,并且不会阻塞其它线程(不像synchronized会锁定当前变量,阻塞其它线程)
5.异常类
基类:Throwable
继承于Throwable的类:Exception(程序可处理异常)和error(程序无法处理的错误(非检查异常))
继承于Exception的类:RunTimeException(运行时异常,非检查异常)非运行时异常(检查异常)
针对检查异常java编译器要求要使用try-catch结构去捕获或者用throws抛出