Java语言练习答案04

这篇博客涵盖了Java语言的基础知识,包括Servlet的层级结构、常用类的解释,如GenericServlet和HttpServletRequest,还涉及了Java基本类型的默认值和取值范围。此外,博客还讨论了Java中的抽象类、接口、继承和多态的概念,并通过示例代码解析了程序执行流程。同时,还讲解了Java集合框架中List和Set继承自Collection接口,以及ASCII码和ANSI码的相关知识点。博客以多项选择题的形式呈现,帮助读者巩固和测试Java编程理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 下面有关servlet的层级结构和常用的类,说法正确的有?
  • GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet。
  • 大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现
  • ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象
  • HttpServletRequest接口扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息

正确答案ABCD 答案解析

在这里插入图片描述

  1. 下面有关java基本类型的默认值和取值范围,说法错误的是
  • 节型的类型默认值是0,取值范围是-2^7— 2^7-1
  • boolean类型默认值是false,取值范围是true/false
  • 字符型类型默认是0,取值范围是-2^15 —2^15-1
  • long类型默认是0,取值范围是-2^63— 2^63-1

正确答案C 答案解析 补充一点是byte的范围是-128~127 字符型没有负号取值,正确的取值范围是0~2^16-1
  1. A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明
    A a0=new A();
    A a1 =new B();
    A a2=new C();
    问以下哪个说法是正确的?( )
  • 第1行不能通过编译
  • 第1、2行能通过编译,但第3行编译出错
  • 第1、2、3行能通过编译,但第2、3行运行时出错
  • 第1行、第2行和第3行的声明都是正确的

正确答案A 答案解析
第1行不能通过编译,抽象类和接口不能实例化
如果删除第1行,第2行和第3行可以通过编译并不会报错,BC是子类的情况下
BC是接口的情况下,编译不能通过


  1. 下列程序输出的结果是
class TestDemo {
    public static String output = "";

    public static void foo(int i) {
        try {
            if (i == 1) {
                throw new Exception();
            }
        } catch (Exception e) {
            output += "2";
            return;
        } finally {
            output += "3";
        }
        output += "4";
    }

    public static void main(String[] args) {
        foo(0);
        foo(1);
        System.out.println(output);
    }
}
  • 342
  • 3423
  • 34234
  • 323

正确答案B 答案解析
首先程序执行拼串操作
foo(0)不满足try条件,执行finally语句,执行完finally,执行外部的代码
输出34
foo(1)会执行catch语句的拼串,执行完catch语句,执行finally语句,执行完finally语句才执行catch语句的return语句,如果把try块的代码改成return,程序就会输出343


  1. 下面代码输出是什么
class Base {
    private String baseName = "base";

    public Base() {
        callName();
    }

    public void callName() {
        System.out.println(baseName);
    }

    static class Sub extends Base {
        private String baseName = "sub";

        public void callName() {
            System.out.println(baseName);//sub
        }
    }

    public static void main(String[] args) {
        Base b = new Sub();
    }
}
  • null
  • sub
  • base

正确答案A 答案解析
new Sub();
在创造派生类的过程中首先创建基类对象,然后才能创建派生类
创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法
此时派生类还未构造,所以变量baseName的值为null
如果去掉无参构造的方法调用代码,程序什么都不会输出,但也不会报错


  1. 以下哪些继承自 Collection 接口
  • List
  • Set
  • Map
  • Array

正确答案AB 答案解析
需要熟悉继承关系
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 关于ASCII码和ANSI码,以下说法不正确的是()
  • 标准ASCII只使用7个bit
  • 在简体中文的Windows系统中,ANSI就是GB2312
  • ASCII码是ANSI码的子集
  • ASCII码都是可打印字符

正确答案D 答案解析
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)
ANSI(American National Standards Institute,美国国家标准学会)
ASCII码包含一些特殊空字符,所以不能打印
0-31是控制字符,不能打印
ASCII标准是7bit,扩展是8bit


  1. 在JDK1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?
  • 抽象类中可以有普通成员变量,接口中没有普通成员变量。
  • 抽象类和接口中都可以包含静态成员常量。
  • 一个类可以实现多个接口,但只能继承一个抽象类
  • 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。

正确答案ABCD 答案解析
记住就行了,可以手写代码测试以下,注意B选项的常量


  1. 请问下列代码最后打印出来的是什么?()
public class Test{ 
    private static int i=1;
    public int getNext(){ 
         return i++;
    } 
    public static void main(String [] args){ 
        Test test=new Test(); 
        Test testObject=new Test(); 
        test.getNext(); 
        testObject.getNext(); 
        System.out.println(testObject.getNext()); 
    } 
}
  • 2
  • 3
  • 4
  • 5

正确答案B 答案解析
return i++, 先返回i,然后i+1;
第一次调用getNext()方法时,返回的是1,但此时i=2;
第二次调用 getNext()方法时,返回的是2,但此时i=3;
第三次调用 getNext()方法时,返回的是3,但此时i=4;

该题主要考察的是static属性和i++操作
因为i是static的,是类属性,所以不管有多少对象,都共用的一个变量。
这里getNext()方法被调用了三次,所以进行了三次i++操作。


  1. @SuppressWarnings(“deprecation”)的功能是什么?
  • 屏蔽不赞同使用的类和方法的警告
  • 屏蔽在强制类型转换的时候编译器给出的警告
  • 关闭所有警告信息
  • 当在可序列化的类上缺少serialVersionUID定义的警告

正确答案A 答案解析

1.Java三大注解分别是 @Override @Deprecated @Suppresswarnings
2.@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
3.@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
4.@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

muskfans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值