一条咸鱼的java学习笔记第2天

1.final finalize finally的异同点?

1. final

在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。

1.1 修饰类

当用final修饰类的时,表明该类不能被其他类所继承。,但要注意:
final类中所有的成员方法都会隐式的定义为final方法。

1.2 修饰方法

使用final方法的原因:把方法锁定,以防止继承类对其进行更改。

final方法意味着“最后的、最终的”含义,即此方法不能被重写。

注意:若父类中final方法的访问权限为private,将导致子类中不能直接继承该方法,因此,此时可以在子类中定义相同方法名的函数,此时不会与重写final的矛盾,而是在子类中重新地定义了新方法。
1.3 修饰变量

final成员变量表示常量,只能被赋值一次,赋值后其值不再改变。
  
2.finally
finally是关键字,在异常处理中,try子句中执行需要运行的内容,catch子句用于捕获异常,finally子句表示不管是否发生异常,都会执行。finally可有可无。

3.finalize()
finalize()是Object类的方法,Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

2.父子类之间构造方法的调用机制?子类递归调用父类的构造方法?

有两个类,他们是父子类,这两个类中,都有自己的构造方法,当创建父类对象的时候,它会执行父类构造方法,当创建子类对象的时候,它会选执行父类的构造方法,然后再执行子类的构造方法
子类递归调用父类的构造方法与jvm双亲加载机制(当某个特定的类收到类加载请求时会依次向他的父类发送请求,如果父类可以完成则返回,若不能完成则子类自身完成。)有关。

3.父子类中含有成员变量、静态成员变量、非静态语句块、静态语句块、构造方法、请问创建一个父类对象和一个子类对象时执行顺序是?

在这里插入图片描述
{父类静态变量
父类静态代码块
子类静态变量
子类静态代码块
父类非静态变量
父类非静态代码块
父类构造函数
子类非静态变量
子类非静态代码块
子类构造函数}

1、父类的静态语句块、
2、子类的静态语句块、
3、父类的成员变量初始化、
4、父类的非静态语句块、
5、父类的构造方法
6、子类的成员变量初始化
7、子类的非静态语句块
8、子类的构造方法

1、如果一个类的成员变量在声明时就进行初始化处理, 则先执行成员变量的初始化,然后调用构造方法创建实例
2、如果一个类中有静态语句块,则在加载到jvm时(不一定创建实例),先执行静态语句块,(并且只执行一次),再执行成员变量的初始化,最后调用构造方法创建实例
3、如果一个类中有非静态语句块,则非静态语句块在类的成员变量初始化之后,构造方法执行之前进行执行。(并且每次使用new创建实例对象时都会执行一次)

4.int i=0;i=i++; 则变量i的值为多少?

思路1.
表达式i++的值是为0,变量i=1,但是是将i++的值赋给i,所以i还是等于0,也可以这样理解:int i=1,y=0;i=y;所以i=0

思路2.
这个代码是这么执行的:
int temp = 0; //表达式的值,先保存起来
i++; //i自增
i = temp; //表达式的值赋值给i
这个问题在《java解惑》一书的谜题25中有详细的解释 (已收藏)

5.如何不使用第三个临时变量交换两个整型变量的值?

在这里插入图片描述
采用异或运算(相异为1,相同为0)
function swap(a, b) {
a = a ^ b; // 以a为临时变量
b = a ^ b; // b=a^b => b=(ab)b => a(bb) => a
a = a ^ b; // a=a^b => a=a(ab) => (aa)b => b
}

6.原码,反码,补码?

反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则;
补码:解决负数加法运算正负零问题,弥补了反码的不足。
总之,反码与补码都是为了解决负数运算问题。

1、正数的原码、补码、反码均为其本身;
2、负数(二进制)的原码、补码、反码公式:
反码 = 原码(除符号位外)每位取反
补码 = 反码 + 1
反码 = 补码 - 1

7.重要知识点:计算机中的所有的数(正数负数0)都是以补码的形式存在的。位运算是在补码的基础上进行的。

计算机里的数都是补码形式,因为CPU只会做加法,数的补码形式就可以用加法实现减法运算,进而以加法完成所有的运算。

8.成员变量与局部变量

Java高频面试题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值