Java基础错题汇总(一)

2021-12-16 14:28:10 浏览数 (1)

这段时间工作比较忙,技术上用到的不多,感觉公司的测试还是以业务为准,技术为辅。技术只是一种提升效率的手段,但是现在被神话了,无论你是测试什么岗位,都需要会有代码基础。

抱怨归抱怨,既然大环境这样,我们就抓紧补补短板吧。编程语言搞起来,这里给大家分享一下,我在练习Java基础过程中手机的错题集。

在 JAVA 编程中, Java 编译器会将 Java 程序转换为( )

  • 字节码
  • 可执行代码
  • 机器代码
  • 以上都不对

选择A

  • 编译器将Java源代码编译成字节码class文件
  • 类加载到JVM里面后,执行引擎把字节码转为可执行代码
  • 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。

以下Java程序运行的结果是:

复制代码

代码语言:javascript复制
public class Tester{
public static void main(String[] args){
   Integer var1=new Integer(1);
   Integer var2=var1;
   doSomething(var2);
   System.out.print(var1.intValue());
   System.out.print(var1==var2);
}
public static void doSomething(Integer integer){
    integer=new Integer(2);
    }
}

java中引用类型的实参向形参的传递,只是传递的引用,而不是传递的对象本身。

自己画的图,而且没有visio!直接画图画的!

以下代码执行的结果显示是多少()?

代码语言:javascript复制
public class Demo{
    public static void main(String[] args){
        System.out.print(getNumber(0));
        System.out.print(getNumber(1));
        System.out.print(getNumber(2));
        System.out.print(getNumber(4));
    }
    public static int getNumber(int num){
        try{
            int result = 2 / num;
            return result;
        }catch (Exception exception){
            return 0;
        }finally{
            if(num == 0){
                return -1;
            }

            if(num == 1){

                return 1;

            }

        }

    }

}

规则:

1.try块是必须的,catch块和finally块都是可选的,但必须存在一个或都存在。try块不能单独存在。

2.try块里的语句运行中出现异常会跳过try块里其他语句,直接运行catch里的语句。

3.无论try块中是否有异常,无论catch块中的语句是否实现,都会执行finally块里的语句。

4.如果try块或catch块中有return语句,finally块里的语句会执行在try块或catch块中的return语句前。

5.如果finally块里有return语句,则直接返回,而不执行try块或catch块里的return语句。

6.只有一种办法不执行finally块里的语句,那就是调用System.exit(1);方法,即退出java虚拟机。

强调:finally块里的语句在try或catch里的return前执行!!!

下列有关Servlet的生命周期,说法不正确的是?

代码语言:javascript复制
在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
代码语言:javascript复制
在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
代码语言:javascript复制
在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
代码语言:javascript复制
destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet

(2)创建:通过调用servlet构造函数创建一个servlet对象

(3)初始化:调用init方法初始化

(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求

(5)卸载:调用destroy方法让servlet自己释放其占用的资源

对于构造方法,下列叙述正确的是( )。

代码语言:javascript复制
构造方法的优先级一般比代码块低。
代码语言:javascript复制
构造方法的返回类型只能是void型。
代码语言:javascript复制
构造方法的主要作用是完成对类的对象的初始化工作。

一般在创建新对象时,系统会自动调用构造方法。

A:静态成员变量或静态代码块>main方法>非静态成员变量或非静态代码块>构造方法

B:think in java中提到构造器本身并没有任何返回值。

C: 构造方法的主要作用是完成对类的对象的初始化工作。

D: 一般在创建(new)新对象时,系统会自动调用构造方法。

以下程序的输出结果是

复制代码

代码语言:javascript复制
public class Print{
    static boolean out(char c){
        System.out.println(c);
        return true;
    }
    public static void main(String[] argv){
        int i = 0;
        for(out('A');out('B') && (i<2);out('C')){
            i  ;
            out('D');
        }
    }
}

for循环执行开始

首先执行out('A') 输出A;

然后执行out('B')&&(i<2)此时输出B,i=0,判断条件为真,执行for循环的循环体;

执行i ,out('D'),输出D i=1;

执行out('C'),输出C

然后执行out('B')&&(i<2) 此时输出B,i=1 判断条件为真 ,执行for循环的循环体;

执行i ,out('D'),输出D i=2;

执行out('C'),输出C

然后执行out('B')&&(i<2) 此时输出B,i=2,不满足i<2 判断条件为假 ,跳出循环;

所以结果为ABDCBDCB

好的,今天就先到这里了

0 人点赞