JAVA基础相关面试题--02

@ final , finalize,finally的异同
final:用来修饰类、方法和变量。修饰类时,这个类不能被继承,此类中的所有成员方法都被隐式的定义为final。修饰方法不能被重写,类的private方法会隐式的指定为final方法。修饰变量,是引用不变,但是引用的对象其内容可变,只能赋值一次。被final修饰的变量必须被初始化。
finally:是try语句的一个语句体,不能单独使用,用来释放资源。提供finally块来执行任何清除操作。
finally何时被调用。?
finalize:finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。finalize不一定被jvm调用,只有当垃圾回收器要清除垃圾时才被调用。

@ 父子类之间构造方法的调用机制?递归调用父类的构造方法?
创建子类时一直调用父类的构造方法,一直调用到object。
实例化一个类时,其父类也实例化,一直实例化到Object类。若代码中还加入代码块,代码块中,静态代码块最先执行且只执行一次,非静态代码块每次随着父类的构造之前执行一次。
当实例化子类时会递归调用父类中的构造方法
当new一个子类对象时,需要调用父类的构造方法,如果在子类中我们没有显示的调用父类的构造方法(没有写super函数),就会调用父类的无参构造方法,如果父类中没有这个无参的构造方法就会报错。
子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有显示的调用父类构造方法(没有super),就默认调用父类的无参的构造方法,若父类没有无参的构造方法,我们就需要显示(写上super)的调用父类的构造方法。

  1. 非静态语句块,在类每次使用new创建对象时都会被执行。
  2. 静态语句快在类的加载时就执行,且只执行一次。
  3. static{ } 静态语句块
    在这里插入图片描述在这里插入图片描述
    结果 t1 2 1 5 \n t2 1 1 5
    执行非静态语句块中的int i 和 test()函数中的int j 时,都是局部变量,对全局变量无影响。最后输出的 i , j , s 的值为全局变量的值。

静态语句块只能调用静态变量
static的方法只能调用static的方法和变量。
static语句块只能调用static变量。

@@ 【 扩展】
父子类中含有成员变量、静态成员变量、非静态语句块、构造方法,请问创建一个父类对象和一个子类对象时,他们的执行顺序是什么?
父类静态成员变量与父类静态代码块(谁在前先调用谁,顺序加载)
子类静态成员变量与子类静态代码块(顺序加载)
父类非静态成员变量、
父类非静态代码块、
父类构造函数
子类非静态成员变量
子类非静态代码块
子类构造函数

@ 算数运算符
整型做除法的结果仍是整型
i++,i-- 叫做表达式 有两种值:

  1. 整体表达式的值。
  2. 表达式中的变量自己的值。

整体表达式的值是先增+1,后增不+1,无论是先增还是后增,整体变量i的值总是+1的。

int k = i++ ;    k=0, i=1
if (i++>5)    
while(j--<3)  j--的值与3比较
i-- ; if (i>3)

在这里插入图片描述
@关系比较运算符 > ,< ,== , >= , <= 运算结果是Boolean类型的
在这里插入图片描述
@ 如何不使用第三个临时变量,如何交换两个整型变量的值?
第一种方法:数值相加减

	    a = a + b;
	    b = a - b;
	    a = a - b;

第二种方法:位运算交换

	    a = a ^ b;
	    b = a ^ b;
	    a = a ^ b;

第三种方法:使用栈

	    int exchange(int x,int y) 
	    { 
	     stack S; 
	     push(S,x); 
	     push(S,y); 
	     x=pop(S); 
	     y=pop(S); 
	    }

@计算机中的所有数(+,- , 0)都是以补码的形式存在的。位运算是在补码的基础上进行的

@原码、补码、反码
原码:负数最高位用1表示,正数用0表示
反码:正数反码是其本身,负数反码是符号位不变,数值为取反
补码:正数补码是其本身,负数补码是符号位不变,数值为取反+1

课后作业:
在这里插入图片描述
結果:t1: 2 1 6 \n t2: 1 1 6

执行顺序t1.it1.jt1.s
初始化:000
1
012
3
114
215
6
执行顺序t2.it2.jt2.s
初始化:002
013
116
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值