【进击的Java小白】--Java强化练习题(期末冲刺系列)

马上期末了🐌,这是我做错的题或感觉有意思的题,解释来自牛客评论区的大佬们,希望对大家有帮助💪,共同学习,备战🐱‍🏍✨期末✨🐱‍🏍!!!
(以防直接就看见答案,答案的字体调成了白色)

1.(多选)在使用super和this关键字时,以下描述错误的是()
A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法内第一行
C.this()和super()可以同时出现在一个构造函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块

1、super()表示调用父类构造函数、this()调用自己的构造函数,而自己的构造函数第一行要使用super()调用父类的构造函数,所以这俩不能在一个构造函数中会出现重复引用的情况。
2、super()和this()都必须在构造函数第一行,所以这一点也表明他俩不能在一个构造函数中。
3、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块(里面不能使用非static类型的)。
正确答案:BCD

2.下列方法中哪个是执行线程的方法? ()
A.run()
B.start()
C.sleep()
D.suspend()

run()方法用来执行线程体中具体的内容
start()方法用来启动线程对象,使其进入就绪状态
sleep()方法用来使线程进入睡眠状态
suspend()方法用来使线程挂起,要通过resume()方法使其重新启动
正确答案:A

3.下列程序的运行结果

public static void main(String args[]) {
    Thread t = new Thread() {
        public void run() {
            pong();
        }
    };
    t.run();
    System.out.print("ping");
}
static void pong() {
    System.out.print("pong");
}

A.pingpong
B.pongping
C.pingpong和pongping都有可能
D.都不输出

若调用start,则先执行主线程的,后执行子线程的,即结果为pingpong
若调用run,相当于函数调用,顺序执行,即结果为pongping
正确答案:B

4.以下代码执行后输出结果为( )

public class Test { 
    public static void main(String[] args) { 
        System.out.println("return value of getValue(): " +
        getValue()); 
    } 
     public static int getValue() { 
         try { 
             return 0; 
         } finally { 
             return 1; 
         } 
     } 
 }

A.return value of getValue(): 1
B.return value of getValue(): 0
C.return value of getValue(): 0return value of getValue(): 1
D.return value of getValue(): 1return value of getValue(): 0

根据官方的JVM规范
如果try语句里有return,返回的是try语句块中变量值。
详细执行过程如下:

1.如果有返回值,就把返回值保存到局部变量中;
2. 执行jsr指令跳到finally语句里执行;
3.执行完finally语句后,返回之前保存在局部变量表里的值。
如果try,finally语句里均有return,忽略try的return,而使用finally的return.
正确答案:A

5.问这个程序的输出结果

package Wangyi;
class Base
{
    public void method()
    {
        System.out.println("Base");
    } 
}
class Son extends Base
{
    public void method()
    {
        System.out.println("Son");
    }
    
    public void methodB()
    {
        System.out.println("SonB");
    }
}
public class Test01
{
    public static void main(String[] args)
    {
        Base base = new Son();
        base.method();
        base.methodB();
    }
}

A.Base SonB
B.Son SonB
C.Base Son SonB
D.编译不通过

这类多态问题中,无论向上或向下转型,都记住一句话就可以了。
编译看左边,运行看右边。意思编译时候,看左边有没有该方法,运行的时候结果看 new 的对象是谁,就调用的谁。
正确答案:D

6.(多选)Java的体系结构包含( )。
A.Java编程语言
B.Java类文件格式
C.Java API
D.JVM

Java体系结构包括四个独立但相关的技术:
Java程序设计语言
Java.class文件格式
Java应用编程接口(API)
Java虚拟机(JVM)
我们再在看一下它们四者的关系:
当我们编写并运行一个Java程序时,就同时运用了这四种技术,用Java程序设计语言编写源代码,把它编译成Java.class文件格式,然后再在Java虚拟机中运行class文件。当程序运行的时候,它通过调用class文件实现了Java API的方法来满足程序的Java API调用
正确答案:ABCD

7.请写出程序的输出结果。

public class Test
{
    public static void main(String[] args)
    {
        int x = 0;
        int y = 0;
        int k = 0;
        for (int z = 0; z < 5; z++) { 
            if ((++x > 2) && (++y > 2) && (k++ > 2))
            {
                x++;
                ++y;
                k++;
            }
        }
        System.out.println(x + ”” +y + ”” +k);
    }
}

A.432
B.531
C.421
D.523

&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。
++x是先x=x+1再进行运算;x++是进行运算再x=x+1
正确答案:B

8.定义有StringBuffer s1=new StringBuffer(10);s1.append(“1234”)则s1.length()和s1.capacity()分别是多少?
A.4 10
B.4 4
C.10 10
D.10 4

length() 返回当前长度
如果字符串长度没有初始化长度大,capacity返回初始化的长度
如果append后的字符串长度超过初始化长度,capacity返回增长后的长度
PS:
StringBuffer和StringBuilder的默认大小16
ArrayList和LinkedList的默认大小10
正确答案:A

9.列表(List)和集合(Set)下面说法正确的是? ( )
A.Set中至多只能有一个空元素
B.List中至多只能有一个空元素
C.List和Set都可以包含重复元素的有序集合
D.List和Set都是有序集合

Set 不能有重复的元素,且是无序的,要有空值也就只能有一个(因为它不允许重复)。 List 可以有重复元素,且是有序的,要有空值也可以有多个,因为它可重复.
正确答案:A

10.在Jdk1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?

A.抽象类中可以有普通成员变量,接口中没有普通成员变量。
B.抽象类和接口中都可以包含静态成员常量。
C.一个类可以实现多个接口,但只能继承一个抽象类
D.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:
1.抽象类可以有构造方法,接口中不能有构造方法
2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
3.抽象类中可以有普通成员变量,接口中没有普通成员变量
4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类

【每日美图】
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰非一日之寒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值