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

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

1.以下选项中,合法的赋值语句是()
A.a>1;
B.i++;
C.a= a+1=5;
D.y = int ( i );

B项,中间变量缓存机制。
等同于
temp = i;
i=i+1;
i=temp;
D项,y=(int) i;
正确答案:B

2.java有8种基本类型,请问byte、int、long、char、float、double、boolean各占多少个字节?
A.1 2 8 2 4 8 1
B.1 4 8 2 4 8 1
C.1 4 4 2 4 4 2
D.1 4 4 2 4 8 2

byte:8位 一个字节 int:32位 四个字节 long:64位 八个字节 char:16位 两个字节 float:32位 四个字节 double:64位 八个字节 boolean:8位 一个字节.
正确答案:B

3.关于Java中的数组,下面的一些描述,哪些描述是准确的:( )
A.数组是一个对象,不同类型的数组具有不同的类
B.数组长度是可以动态调整的
C.数组是一个连续的存储结构
D.一个固定长度的数组可类似这样定义: int array[100]
E.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较
F.可以二维数组,且可以有多维数组,都是在Java中合法的

B 数组长度是不能动态调整的
D 固定长度的数组定义如int array[]=new int(100);
E数组的equals方法是object的equals,比较的是内存地址
正确答案:ACF

4.在Java中,以下关于方法重载和方法重写描述正确的是?
A.方法重载和方法的重写实现的功能相同
B.方法重载出现在父子关系中,方法重写是在同一类中
C.方法重载的返回值类型必须一致,参数项必须不同
D.方法重写的返回值类型必须相同或相容。(或是其子类)

方法重载(overload):
1.必须是同一个类
2.方法名(也可以叫函数)一样
3.参数类型不一样或参数数量不一样

方法的重写(override)两同两小一大原则:

  • 方法名相同,参数类型相同
  • 子类返回类型小于等于父类方法返回类型,子类抛出异常小于等于父类方法抛出异常
  • 子类访问权限大于等于父类方法访问权限。
    正确答案:D

5.下列关于修饰符混用的说法,错误的是( )
A.abstract不能与final并列修饰同一个类
B.abstract 类中不建议有private的成员
C.abstract 方法必须在abstract类或接口中
D.static方法中能直接处理非static的属性

A、abstract修饰的类,不可实例化,所以需要子类去继承,然后重写其中的抽象方法。但是final修饰类是不可继承的。两者属性相冲。
B、看清楚,人家说的是不建议有,不是不能有。
C、抽象类中可以没有抽象方法,但是抽象方法必须在抽象类中或者接口中
D、static不可以修饰非static的属性,因为类加载的时候,static属性比非static先初始化,那么一个存在的总不能访问一个没有存在的吧。
正确答案:D

6.以下关于构造函数的描述错误的是 ( )
A.每个类有且只能有一个构造函数。
B.构造函数是类的一种特殊函数,它的方法名必须与类名相同
C.构造函数的主要作用是完成对类的对象的初始化工作
D.一般在创建新对象时,系统会自动调用构造函数

一个类可以自定义无穷多个构造函数,选项第一个肯定就是错的了
构造函数不和类同名就不是构造了。
构造就是用来建立对象的,当然是在构造中做初始化了。
创建对象的时候JVM会默认调用构造方法 根据你的new对象的参数列表
正确答案:A

7.下面关于构造方法的说法不正确的是 ( )
A.构造方法也属于类的方法,可以创建对象的时候给成员变量赋值
B.构造方法不可以重载
C.构造方法没有返回值
D.构造方法一定要和类名相同

1.构造方法也是类的方法,可以在创建对象时为成员变量赋值
2.构造方法可以进行重载,但是参数列表必须不相同,不以返回值和访问级别进行区分
3.构造方法没有返回值
4.构造方法一定要与定义为public的类同名
正确答案:B

8.下列代码编译和运行的结果是()

public class Threads4{
 public static void main(String[] args){
 new Threads4().go();
 }
 public void go(){
 Runnable r=new Runnable(){
 public void run(){
 System.out.print("foo");
 }
 };
 Thread t=new Thread(r);
 t.start();
 }
 }

A.编译错误
B.抛出运行时异常
C.输出:foo
D.代码正常运行,但是无输出

在java多线程中实现多线程的方式有两种
①extends Thread
②implements Runnable。
这两种情况是我们最常见的,还有一种是由第二种变形而来的直接new Runnable(){},我们都知道java的接口是不可以实例化的,但代码中的new Runnable(){xxx}确是实例化了,为什么? 接口和抽象类不可以实例化是对的,这个是java语法规范来的,而new Runnable(){}其实不是实例化Runnable接口来的,实际上一种匿名内部类。
正确答案:C

9.(多选)已知String a=“a”,String b=“b”,String c=a+b,String d=new String(“ab”) 以下操作结果为true的是()
A. (a+b).equals ( c )
B. a+b= =c
C. c= =d
D. c.equals(d)

String a = “a”;
String b = “b”;

String str1 = “a” + “b”;//常量池中的对象
String str2 = a + b; //在堆上创建的新的对象
String str3 = “ab”;//常量池中的对象
String str4 = new String(“ab”) ; //一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 “aaa” 象)。
System.out.println(str3 == str4);//false
System.out.println(str1 == str2);//false
System.out.println(str1 == str3);//true
System.out.println(str2 == str3);//false

  1. 直接使用双引号声明出来的String对象会直接存储在常量池中,否则在堆中,使用“==”进行比较时要注意存储位置;
  2. Object 中的equals() 与 “= =” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容。
    正确答案:AD

10.运行下面代码,输出的结果是()

class A {
    public A() {
        System.out.println("class A");
    }
    { System.out.println("I'm A class"); } 
    static { System.out.println("class A static"); }
}
public class B extends A {
    public B() {
        System.out.println("class B");
    }
    { System.out.println("I'm B class"); }
    static { System.out.println("class B static"); }
     
    public static void main(String[] args) { 
 new B(); 
}
}

class A static
class B static
I’m A class
class A
I’m B class
class B

class A static
I’m A class
class A
class B static
I’m B class
class B

class A static
class B static
class A
I’m A class
class B
I’m B class

class A static
class A
I’m A class
class B static
class B
I’m B class

Java程序初始化顺序:

1.父类的静态代码块
2.子类的静态代码块
3. 父类的普通代码块
4. 父类的构造方法
5. 子类的普通代码块
6.子类的构造方法
正确答案:A

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

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰非一日之寒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值