菜鸟进阶练习(01)

Vevina ·
更新时间:2024-11-13
· 870 次阅读

注:力扣选择题练习总结

1、在java中,在同一包内,类Cat里面有个公有方法sleep(),该方法前有static修饰,则可以直接用Cat.sleep()。

【正确答案】正确;
【解析】可以直接使用本类中的静态方法,静态方法可以直接使用 类名.方法。

2、Java Application(Java 应用程序) 源程序文件编译后的字节码文件的扩展名是 ?
A: java B: class C: exe D: jar

【正确答案】 B:class;
【解析】A: .java是java程序的源代码文件;
B:Java文件经过JVM编译成字节码文件,即.class文件,将字节码文件在不同的操作系统中运行时,操作系统再将字节码文件编译成机器码文件。这就是Java跨平台 ;
C: java可以编写成.exe,虽然是exe文件,但是不代表是windows可执行文件;
D: 可以打包成jar,需要有jdk支持,通过JVM运行,这个才是java真正的运行包。这个文件是在生成 JAR 文件的时候自动创建的。[Jar 包,是一个 zip 压缩包,按一定的标准管理的起来的一组类文件(*.class)].

3、下列关于继承的描述正确的是( )
A:函数的出口应该尽可能少,最好只有一个出口
B:为了防止程序中内存漏,应该不使用动态分配内存
C:在函数实现中应该少使用全局变量
D:函数的功能应该单一

【正确答案】CD
【解析】 函数最好要提供多个出口,如果是一个出口,那么可能死循环。

4、面向对象的主要特征:封装,继承,多态。

结构化设计方法的核心是:自顶向下、逐步求精、结构化和模块化。

5、Jvm内存区:程序计数器 堆 jvmstack 本地方法栈 方法区。

6、“ ” 引起的存放在字符串常量池;
普通final常量放在栈上;
count 实例变量,在方法外,放在堆上;
加static属于类,不属于对象,放在方法区;
方法里面的放在栈上。

7、String str = new String(“Hello”);
// 方式一 System.out.println(str.equals(“Hello”));
// 方式二 System.out.println(“Hello”.equals(str));

我们更推荐使用 “方式二”。因为 一旦 str 是 null, 方式一的代码会抛出异常, 而方式二不会。

8、如果常量池当中存在将要入池的字符串,直接将常量池当中的字符串常量的地址返回;如果不存在,那么在常量池当中将该字符串入池。

9、下面有关 java final 的基本规则,描述错误的是? ( )
A:final修饰的类不能被继承
B:final修饰的成员变量只允许赋值一次,且只能在类方法赋值
C:final修饰的局部变量即为常量,只能赋值一次
D:final修饰的方法不允许被子类覆盖

【正确答案】B
【解析】final修饰的方法,不允许被子类覆盖。
final修饰的类,不能被继承。
final修饰的变量,不能改变值。
final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。
final修饰的成员变量在赋值时不唯一可以有三种方式。1、在声明时直接赋值。2、在构造器中赋值。3、在初始代码块中进行赋值。

10、要使对象具有序列化能力,则其类应该实现如下哪个接口()。
A. java.io.Serializable
B. java.lang.Cloneable,
C. java.lang.CharSequence
D. java.lang.Comparable

【正确答案】A
【解析】java.io.Serializable接口是一个标志性接口,在接口内部没有定义任何属性与方法。只是用于标志此接口的实现类可以被序列化与反序列化。
java.lang.Cloneable接口是一个标志性接口,在接口内部没有定义任何属性与方法。以指示Object.clone()方法可以合法地对该类实例进行按字段复制。
java.lang.CharSequence接口对许多不同种类的char序列提供统一的只读访问接口。CharSequence是char值的一个可读序列。
java.lang.Comparable接口,此接口强制对实现它的每个类的对象进行整体排序,此序列被称为该类的自然排序

11、在基本 JAVA 类型中,如果不明确指定,整数型的默认是 int 类型,带小数的默认是 double 类型。

12、不考虑反射,关于私有访问控制符 private 修饰的成员变量,只能被该类自身所访问和修改。

13、Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( )

【解析】round()方法可以这样理解:
将括号内的数+0.5之后,向下取值,
比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3;
round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10
即:四舍五入。

14、假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()

public class A { public int i; static String s; void method1(){} static void method2(){} }

A、System.out.println(a.i);
B、 a.method1();
C A.method1();
D A.method2();

【正确答案】C
【解析】静态成员和静态方法, 可以直接通过类名进行调用;
其他的成员和方法则需要进行实例化成对象之后, 通过对象来调用。

15、下列代码的执行结果是

public class Test { public int aMethod(){ static int i = 0; i++; return i; } public static void main(String args[]){ Test test = new Test(); test.aMethod(); int j = test.aMethod(); System.out.println(j); } }

A 0
B 1
C 2
D 编译失败

【正确答案】D
【解析】static不能修饰局部变量。

16、下列哪一种叙述是正确的()
A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{ }包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号

【正确答案】D
【解析】如果写了大括号就表示这个方法已经实现了(里边有没有代码没关系),抽象方法的定义就是没有体的方法 所有抽象方法有方法体肯定是不对的。

17、下列说法正确的有:()
class中的constructor不可省略
B constructor必须与class同名,但方法不能与class同名
C constructor在一个对象被new 时执行
D 一个class只能定义一个constructor

【正确答案】C
【解析】constructor在一个对象被new时执行。
Constructor简介:
构造函数(Constructor)在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。构造器Constructor在js不能被继承,因此不能重写Overriding,但可以被重载Overloading。构造函数在C++中如果写成public属性那么可以继承。

18、选项中哪一行代码可以替换 //add code here 而不产生编译错误

public abstract class MyClass { public int constInt = 5; //add code here public void method() { } }

A public abstract void method(int a);
B consInt=constInt+5;
C public int method();
D public abstract void anotherMethod(){}

【正确答案】A
【解析】
A 是重载。重载的参数名不一样,就可以
B 类中不能这样赋值
C 不是重载,和原来的方法一样的
D 抽象方法不能有方法体

19、哪个关键字可以对对象加互斥锁?()
A. synchronized
B. volatile
C. serialize
D. static

【正确答案】A
【解析】synchronized 关键字 : 用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。
serialize:Java 对象序列化为二进制文件。
static关键字: static关键字可以修饰变量,方法,静态代码块。
静态变量:
由static修饰的变量称为静态变量
静态变量属于类,而不属于某个对象
静态变量它的副本只有一个(静态变量在类中只加载一)
静态方法:
在静态方法中只能调用静态变量和静态方法
在非静态方法中,可以调用静态方法或者变量。
在静态方法中不能使用this和super关键字。
静态代码块
作用:用来给静态成员变量初始化

20、transient变量和下面哪一项有关()?
A. Serializable
B. Cloneable
C. Runnable
D. Throwable
E. Comparable

【正确答案】A
【解析】一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 这个类的有些属性需要序列化,而其他属性不需要被序列化; java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

在这里插入图片描述


作者:盖盖的博客



菜鸟

需要 登录 后方可回复, 如果你还没有账号请 注册新账号