ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java小题精炼训练营(篇十三)

2022-02-06 10:00:58  阅读:168  来源: 互联网

标签:Java 对象 子类 训练营 小题 父类 Servlet public 构造函数


1、下列外部类定义中,不正确的是:( )

class x { .... }
class x extends y { .... }
static class x implements y1,y2 { .... }
public class x extends Applet { .... }

内部类可以是静态static的,也可用public,default,protected和private修饰,

外部类的修饰符只能是public,abstract,final

C

2、Java的Daemon线程,setDaemon( )设置必须要?

在start之前
在start之后
前后都可以

java中线程分为两种类型:

1:用户线程。通过Thread.setDaemon(false)设置为用户线程;

2:守护线程。通过Thread.setDaemon(true)设置为守护线程,如果不设置,默认用户线程;

守护线程是服务用户线程的线程,在它启动之前必须先set。

A

3、下面的代码运行的结果是:

class B extends Object
{
    static
    {
        System.out.println("Load B");
    }
    public B()
    {
        System.out.println("Create B");
    }
}
class A extends B
{
    static
    {
        System.out.println("Load A");
    }
    public A()
    {
        System.out.println("Create A");
    }
}

public class Testclass
{
    public static void main(String[] args)
    {
        new A();
    }
}
Load B ->Create B->Load A -> Create A
Load B -> Load A  ->Create B  ->Create A

初始化块在构造器执行之前执行,类初始化阶段先执行最顶层父类的静态初始化块,依次向下执行,最后执行当前类的静态初始化块;创建对象时,先调用顶层父类的构造方法,依次向下执行,最后调用本类的构造方法。

执行顺序:

父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数

B

4、javac的作用是(    )。

将源程序编译成字节码
将字节码编译成源程序
解释执行Java字节码

javac是将源程序.java编译成.class文件

java是将字节码转换为机器码文件执行

A

5、以下哪个接口的定义是正确的?( )

interface  B
{  void print()  {  } ;}
interface  B
{ static void print() ;}
abstract  interface  B  extends  A1, A2  //A1、A2为已定义的接口
{ abstract  void  print(){  };}
interface  B
 {  void  print();}

A,接口中方法的默认修饰符时public abstract,抽象方法可是没有方法体的,没有大括号{}

B,JDK8中,接口中的方法可以被default和static修饰,但是!!!被修饰的方法必须有方法体。

C,注意一下,接口是可以多继承的。整个没毛病,和A选项一样,抽象方法不能有方法体

接口中的方法默认为public abstract,属性默认为public static final。接口中的方法不能有实现,Java中类只支持单继承,而接口可以支持多继承。

A、C中方法不能有方法体,B中方法前不能有static

D

6、正则表达式语法中 \d 匹配的是?()

数字
非数字

d      匹配一个数字字符。等价于 [0-9]。
\D     匹配一个非数字字符。等价于 [^0-9]。
\f       匹配一个换页符。等价于 \x0c 和 \cL。
\n      匹配一个换行符。等价于 \x0a 和 \cJ。
\r       匹配一个回车符。等价于 \x0d 和 \cM。
\s      匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S      匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t       匹配一个制表符。等价于 \x09 和 \cI。
\v      匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w     匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
\W    匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。

A

7、下列哪个语句语法正确?( )

byte y = 11; byte x = y +y;
String x = new Object();
Object x = new String(“Hellow”);
int a [11] = new int [11];

对于A,前一半语句赋值是没有问题的,问题是后半句,在对byte型的变量进行相加时,会先自动转换为int型进行计算,所以计算结果也是int型的,int型赋值给byte需要强制转换,所以A会出错

对于B,因为object是String的父类,所以不能这样使用,不能把父类对象赋值给子类,只能是Object x = new String();

对于C,因为String是Object的子类,所以可以将子类赋值给父类。

对于D,因为在声明变量时不需要指定容量,例如int  a[] = new int[11];这样是正确的,但是像D选项这样是错误的

C

8、BufferedReader的父类是以下哪个?

FilterReader
InputStreamReader
PipedReader

Reader

D

9、下面有关JSP内置对象的描述,说法错误的是?

session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止
request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应
application对象:多个application对象实现了用户间数据的共享,可存放全局变量
response对象:response对象包含了响应客户请求的有关信息

application对象是共享的,多个用户共享一个,以此实现数据共享和通信

JSP内置对象和属性列举如下:

1.request对象
     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
     out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
     page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
     application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
   exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

C

10、下面哪个选项放在point X这里可以正确执行?

//point X
public class Foo {
    public static void main(String[] args) throws Exception {

        PrintWriter out = new PrintWriter(
                new java.io.OutputStreamWriter(System.out), true);
        out.println("Hello");
    }

}
import java.io.PrintWriter;
include java.io.PrintWriter;
import java.io.OutputStreamWriter;
include java.io.OutputStreamWriter;

java中没有include关键字,导包用import

由于代码中使用了printWriter 类,所以要导入此类Import java.io.PrintWriter;

A

11、根据以下代码段,执行new Child("John", 10); 要使数据域data得到10,则子类空白处应该填写(    )。

class Parent {
    private int data;
    public Parent(int d){ data = d; }
}

class Child extends Parent{
    String name;
    public Child(String s, int d){

        __________________

        name = s;
    }
}
data = d;
super.data = d;
Parent(d);
super(d);

1.子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格式:super.xx  (注:xx是成员名);

2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法,格式:super(yy) (注:yy是父类构造方法需要传递的参数)

D

12、对于子类的构造函数说明,下列叙述中错误的是( )。

子类不能继承父类的无参构造函数。
子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。
在创建子类的对象时,若不含带参构造函数,将先执行父类的无参构造函数,然后再执行自己的无参构造函数。
子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。

构造函数不能被继承,构造方法只能被显式或隐式的调用。

D

13、关于Java语言描述正确的是?  ( )

java和C++都保留了指针
java和C++都有三个特征:封装、继承和多态
java的垃圾回收机制是指程序结束时系统自动回收内存

A,Java没有指针,只有引用。

C,并不是程序结束的时候进行GC,GC的时间是不确定的,且GC的过程需要经过可达性分析,一个对象只有被标记两次才会被GC。

下图是一个对象被GC的全过程。

B

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

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

Servlet的生命周期

1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet

2.创建:通过调用Servlet的构造函数来创建一个Servlet实例

3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。

4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的

Service()方法来响应客户端请求(Service方***根据请求的method属性来调用doGet()和doPost())

5.卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源。

创建Servlet的实例是由Servlet容器来完成的,且创建Servlet实例是在初始化方法init()之前

A

15、下面代码运行结果是?

public class Test{
static{
   int x=5;
}
static int x,y;
public static void main(String args[]){
   x--;
   myMethod( );
   System.out.println(x+y+ ++x);
}
public static void myMethod( ){
  y=x++ + ++x;
 }
}
prints:1
prints:2
prints:3
prints:7

1.静态语句块中x为局部变量,不影响静态变量x的值

2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。

3.java中自增操作非原子性的 

main方法中:

  • 执行x--后 x=-1
  • 调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
  • x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3

C

16、下面有关servlet的层级结构和常用的类,说法正确的有?

GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet。
大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现
ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象
HttpServletRequest接口扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息

ABCD

17、有关会话跟踪技术描述正确的是()

Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
关闭浏览器意味着临时会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
在禁用Cookie时可以使用URL重写技术跟踪会话
隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示

1.session用来表示用户会话,session对象在服务端维护,一般tomcat设定session生命周期为30分钟,超时将失效,也可以主动设置无效;

2.cookie存放在客户端,可以分为内存cookie和磁盘cookie。内存cookie在浏览器关闭后消失,磁盘cookie超时后消失。当浏览器发送请求时,将自动发送对应cookie信息,前提是请求url满足cookie路径;

3.可以将sessionId存放在cookie中,也可以通过重写url将sessionId拼接在url。因此可以查看浏览器cookie或地址栏url看到sessionId;

4.请求到服务端时,将根据请求中的sessionId查找session,如果可以获取到则返回,否则返回null或者返回新构建的session,老的session依旧存在,请参考API。

5.隐藏域在页面中对于用户(浏览器)是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。

ABC

标签:Java,对象,子类,训练营,小题,父类,Servlet,public,构造函数
来源: https://blog.csdn.net/qq_50156012/article/details/122795691

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有