返回顶部
首页 > 资讯 > 后端开发 > Python >Java日常练习题,每天进步一点点(12)
  • 470
分享到

Java日常练习题,每天进步一点点(12)

2024-04-02 19:04:59 470人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、Which is the return type of the method main()?2、java中用()字指明继承关系.用()关键字指明对接口的实现。3、顺序

承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

1、Which is the return type of the method main()?

正确答案: B

int

void

Boolean

static

题解:
main()方法的返回类型是什么?
public static void main(String[] args){
//代码段
}

2、java中用()字指明继承关系.用()关键字指明对接口的实现。

正确答案: B

implements extends

extends implements

extend implement

implement extend

题解:
考查关键字
extends表继承父类
implements表是实现接口

3、顺序执行下列程序语句后,则b的值是()

String a=“Hello”;

String b=a.substring(0,2);

正确答案: C

Hello

Hel

He

null

题解:
substring[0,2),左闭右开(包含左边的起始点,不包含结束点)

4、下面程序的输出是什么?


package alGorithms.com.guan.javajicu;
public class TestDemo
{
    public static String output = ””;
    public static void foo(inti)
    {
        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);
    }
}

正确答案: B

342

3423

34234

323

题解:
首先是foo(0),在try代码块中未抛出异常,finally是无论是否抛出异常必定执行的语句,
所以 output += “3”;然后是 output += “4”;
执行foo(1)的时候,try代码块抛出异常,进入catch代码块,output += “2”;
前面说过finally是必执行的,即使return也会执行output += “3”
由于catch代码块中有return语句,最后一个output += “4”不会执行。
所以结果是3423

5、下面属于JSP内置对象的是?

正确答案: A B C D

out对象

response对象

application对象

page对象

题解:
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对象)

6、关于抽象类与接口,下列说法正确的有?

正确答案: A C

优先选用接口,尽量少用抽象类

抽象类可以被声明使用,接口不可以被声明使用

抽象类和接口都不能被实例化。

以上说法都不对

题解:
java只是单继承,但是可以实现多个接口,继承的耦合性太强,java推荐高内聚低耦合的设计思路,不推荐使用继承。在用继承的情况下,如果还必须要继承另外的接口会很麻烦,尽量用接口,这样在你必须要用到继承的时候就可以用了。抽象类和接口都不能被实例化。接口没有构造方法,不能被实例化,但是抽象方法可以有构造方法,不过不是用来实例化对象的,是用来初始化的。
1.一个子类只能继承一个抽象类,但能实现多个接口
2.抽象类可以有构造方法,接口没有构造方法
3.抽象类可以有普通成员变量,接口没有普通成员变量
4.抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
5.抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
6.抽象类可以有静态方法,接口不能有静态方法
7.抽象类中的方法可以是public、protected;接口方法只有public

7、下面哪些写法能在 java8 中编译执行()

正确答案: A D

dir.listFiles((File f)->f.getName().endsWith(“.Java”));

dir.listFiles((File f)=>f.getName().endsWith(“.Java”));

dir.listFiles((_.getName().endsWith(“.Java”)));

dir.listFiles( f->f.getName().endsWith(“.Java”));

题解:
Lanbda表达式的主要作用就是代替匿名内部类的繁琐语法, 它由三部分组成:
(1) 形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
(2) 箭头(→)。必须通过英文中画线和大于符号组成。
(3)代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号,那么那条语句就不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一套省略了return的语句。Lambda表达式会自动返回这条语句的值。
由此可见,应该是A和D正确。
在这里插入图片描述

8、Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( )

正确答案: A D F

A Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下

B 通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法

C 通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员

D Java反射机制提供了字节码修改的技术,可以动态的修剪一个类

E Java的反射机制会给内存带来额外的开销。例如对永生堆的要求比不通过反射要求的更多

F Java反射机制一般会带来效率问题,效率问题主要发生在查找类的方法和字段对象,因此通过缓存需要反射类的字段和方法就能达到与之间调用类的方法和访问类的字段一样的效率

题解:
A:java.lang.reflect包中的Field、Method、Constructor,分别用于描述类的与、方法和构造器。A中的Class类在java.lang中,错;
B:动态代理可以通过接口与类实现,通过反射形成新的代理类,这个代理类增强了原来类的方法。对;
C:反射可以强制访问private类型的成员,对;
D:反射并不能对类进行修改,只能对类进行访问,错;
E:反射机制对永生堆要求较多,对;
F:即使使用缓存,反射的效率也比调用类的方法低,错;

9、以下哪种JAVA得变量声明方式可以避免程序在多线程竞争情况下读到不正确的值( )

正确答案: A B

volatile

static volatile

synchronized

static

题解:
synchronized不是修饰变量的,它修饰方法或代码块或对象
synchronized修饰的对象有几种:
1、修饰一个类:其作用的范围是synchronized后面括号括起来的部分,作用的对象是这个类的所有对象;
2、修饰一个方法:被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
3、修饰一个静态的方法:其作用的范围是整个方法,作用的对象是这个类的所有对象;
4、修饰一个代码块:被修饰的代码块称为同步语句块,其作用范围是大括号{}括起来的代码块,作用的对象是调用这个代码块的对象;

首先需要理解线程安全的两个方面:执行控制和内存可见。

执行控制的目的是控制代码执行(顺序)及是否可以并发执行。
内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。

synchronized关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被synchronized关键字保护的代码块无法被其它线程访问,也就无法并发执行。更重要的是,synchronized还会创建一个内存屏障,内存屏障指令保证了所有CPU操作结果都会直接刷到主存中,从而保证了操作的内存可见性,同时也使得先获得这个锁的线程的所有操作,都happens-before于随后获得这个锁的线程的操作。

volatile关键字解决的是内存可见性的问题,会使得所有对volatile变量的读写都会直接刷到主存,即保证了变量的可见性。这样就能满足一些对变量可见性有要求而对读取顺序没有要求的需求。
使用volatile关键字仅能实现对原始变量(如boolen、 short 、int 、long等)操作的原子性,但需要特别注意, volatile不能保证复合操作的原子性,即使只是i++,实际上也是由多个原子操作组成:read i; inc; write i,假如多个线程同时执行i++,volatile只能保证他们操作的i是同一块内存,但依然可能出现写入脏数据的情况。

对于volatile关键字,当且仅当满足以下所有条件时可使用:
1.对变量的写入操作不依赖变量的当前值,或者你能确保只有单个线程更新变量的值。
2.该变量没有包含在具有其他变量的不变式中。

10、下列哪些操作会使线程释放锁资源?

正确答案: B C

sleep()

wait()

join()

yield()

题解:
1.sleep()方法
在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。sleep()使当前线程进入阻塞状态,在指定时间内不会执行。
2.wait()方法
wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。“直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”),通过wait()来通知对象内置的monitor对象释放,而且事实上因为这涉及对硬件底层的操作,所以wait()方法是native方法,底层是用C写的。
3.join()方法
join()等待该线程终止。
等待调用join方法的线程结束,再继续执行。
join()有资格释放资源其实是通过调用wait()来实现的(join()源码中调用了wait())
主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到 join() 方法
4.yield()方法
暂停当前正在执行的线程对象。
yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
yield()只能使同优先级或更高优先级的线程有执行的机会。

答案汇总:

1、正确答案: B

2、正确答案: B

3、正确答案: C

4、正确答案: B

5、正确答案: A B C D

6、正确答案: A C

7、正确答案: A D

8、正确答案: A D F

9、正确答案: A B

10、正确答案: B C

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java日常练习题,每天进步一点点(12)

本文链接: https://lsjlt.com/news/130953.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java日常练习题,每天进步一点点(12)
    目录1、Which is the return type of the method main()?2、java中用()字指明继承关系.用()关键字指明对接口的实现。3、顺序...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(61)
    目录1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()2、代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是()3、以下哪个方法用于定义线程的执行体?4...
    99+
    2020-04-03
    Java日常 Java练习题
  • Java日常练习题,每天进步一点点(26)
    目录1、定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new S...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(27)
    目录1、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了属性和方法的被访问范围,private修饰符则缩小了这种范围。2、下列叙述错误的是( )3、能用来...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(28)
    目录1、为AB类的一个无形式参数无返回值的方法method书写方法头,可以用AB.method()方式调用,该方法头的形式为( )。2、以下类定义中的错误是什么?()3、请问以下代码...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(29)
    目录1、下列不属于访问控制符的是()2、Java 源程序文件的扩展名为()3、以下程序的执行结果是:4、给定代码:5、下面有关List接口、Set接口和Map接口的描述,错误的是?6...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(30)
    目录1、以下程序段的输出结果为:2、在java7中,下列不能做switch()的参数类型是?3、以下代码的输出结果是?4、What results from the followin...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(31)
    目录1、现有如下代码段:2、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。3、多重继承的概念在Java中实现是通过如下哪些?()4、关于 Socket 通信编...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(32)
    目录1、如果一个方法或变量是"private"访问级别,那么它的访问范围是:2、代码将打印?3、下面关于hibernate核心接口说明错误的是?4、以下哪项陈述是正确的?5、在jdk...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(33)
    目录1、如果一个方法或变量是"private"访问级别,那么它的访问范围是:2、代码将打印?3、下面关于hibernate核心接口说明错误的是?4、以下哪项陈述是正确的?5、在jdk...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(34)
    目录1、abstract和final可以同时作为一个类的修饰符。( )2、下列描述中,错误的是3、关于protected 修饰的成员变量,以下说法正确的是4、以下哪个类包含方法flu...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(35)
    目录1、关于抽象类叙述正确的是? ( )2、____技术是一种可以使音频,视频和其他多媒体信息在 Internet 及 Intranet 上以实时的,无需下载等待的方式进行播放的技术...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(36)
    目录1、Java中所有类的父类是( )。2、Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ).3、选项中哪一行代码可以替换 /...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(37)
    目录1、java中,用( )关键字定义常量?2、以下代码的循环次数是3、下面代码的执行结果是 :4、如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(38)
    目录1、正则表达式语法中 \d 匹配的是?()2、接口不能扩展(继承)多个接口。( )3、执行语句“int a= ' 2 ' ”后,a的值是( )4、下面属于java合法变量定义的是...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(39)
    目录1.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。2.ArrayList和Vector主要区别是什么?3.pub...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(40)
    目录1.下面有关JSP内置对象的描述,说法错误的是?2.Java语言与其它语言相比,独有的特点是( )3.下面哪个选项正确创建socket连接?4.定义有StringBuffer s...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(41)
    目录1.下列关于计算机系统和Java编程语言的说法,正确的是()2.变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000; 变量b是一...
    99+
    2024-04-02
  • java日常练习题,每天进步一点点(1)
    目录1、HashSet子类依靠()方法区分重复元素。2、下列哪个类的声明是正确的?3、下列关于包(package)的描述,正确的是()4、以下代码执行后输出结果为( )5、Given...
    99+
    2024-04-02
  • Java日常练习题,每天进步一点点(2)
    目录1、现有如下代码段:2、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。3、多重继承的概念在Java中实现是通过如下哪些?()4、关于 Socket 通信编...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作