目录

1. finalize的含义

2.Statement和PreparedStatement用法

3. 接口能用protected修饰吗

4.java实现分解质因数


今天去参加了一场国企单位的笔试,很基础,但是有些细节的地方还是觉得答得不好,所以复盘一下。

1. finalize的含义

finalize: 是Object类的一个方法,因为所有的类都继承自Object类,所以所有的类都有finalize方法。 在垃圾收集器将该对象清除出内存之前会先调用它的finalize方法,做一些内存清理工作,通常这部分内存是非java内存,如socket,finalize只会被调用一次。

程序员都了解初始化的重要性,但是会常常忘记同样重要的清理工作,java有垃圾回收器负责回收无用对象占用的内存资源,但是也有特殊情况,你的对象获得了一块特殊的内存区域,并不是通过 new 方法,由于垃圾回收器只知道释放那些经由new分配的内存, 所以它不知道如何释放这些特殊的内存。

java 考虑到这种情况,允许在类中定义一个名为 finalize() 的方法。他的工作原理是这样的:一旦垃圾回收器准备释放对象占用的存储空间,将首先调用 finalize() 方法,并在下一次垃圾回收动作发生时,才会真正的回收对象占用的内存。就像为垃圾回收器添加一个回调方法一样。

这个题我只回答了是Object类的方法,可以进行手动GC,不是很准确。

2.Statement和PreparedStatement用法

这里考的是一道选择题,因为实在是很少手动写jdbc,平时太过依赖框架和IDE的自动生成,很遗憾,答错了。

stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

createStatement方法是没有参数,PreparedStatement才有,晕,实在是不怎么写这种代码。

ps = conn.prepareStatement(sql);

这个太细节了,只能强记。

3. 接口能用protected修饰吗

接口方法只能使用public,既然只能用public,java编译器在你忘了在方法前写public的时候干脆自动帮你转成public了。

至于接口类能不能用protected,自己看吧

4.java实现分解质因数

public class PrimeTest {

 public static void main(String[] args) {
  Scanner in=new Scanner(System.in);
        int number=in.nextInt();
        if(isPrime(number)){
         System.out.print(number);
        }else{
         System.out.print(number+"=");
         factor(number);
        }
       
 }
 public static void factor(int num){
  for(int i=2;i<num;i++){
   if(num%i==0){
    System.out.print(i+"*");
    if(isPrime(num/i)){
     System.out.print(num/i);
    }else{
    factor(num/i); 
    }
    //结束方法非常重要,下面的方法就会因为方法没有结束而继续进行下去
    return;
   }
  }
 }

public static boolean isPrime(int num){
 boolean isPrime=true;
 for(int i=2;i<num;i++){
  if(num%i==0){
   isPrime=false;
   break;
  }
 }
 return isPrime;
}
}

posted on 2022-11-11 16:07  剽悍一小兔  阅读(19)  评论(0)    收藏  举报  来源