牛客网刷题——08

1、局部变量能否和成员变量重名?

可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量

2、以下代码输出结果为什么?

public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i); }catch(Exception e){
System.out.print(1);
throw new RuntimeException(); }finally{
System.out.print(2); }
System.out.print(3); } }

12

需要理解Try…catch…finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了.
如果catch中没有抛出RuntimeException,则执行结果为123。
3、

类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A可以访问类B的方法testB
在这里插入图片描述
public(公共)> protected(子类)> default(包)> private(自身)

4、以下是java concurrent包下的4个类,选出差别最大的一个
正确答案: C 你的答案: C (正确)

A、Semaphore:类,控制某个资源可被同时访问的个数;
B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
C、 Future:接口,表示异步计算的结果;
D、 CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类。

5、识别合法的构造方法;

1:构造方法可以被重载,一个构造方法可以通过this关键字调用另一个构造方法,this语句必须位于构造方法的第一行;
重载:方法的重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。
2 当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法;
3 子类通过super关键字调用父类的一个构造方法;
4 当子类的某个构造方法没有通过super关键字调用父类的构造方法,通过这个构造方法创建子类对象时,会自动先调用父类的缺省构造方法
5构造方法不能被static、final、synchronized、abstract、native修饰,但可以被public、private、protected修饰;
6 构造方法不是类的成员方法;
7 构造方法不能被继承。

6、在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。( B )

A、正确
B、 错误

方法调用时,会创建栈帧在栈中,调用完是程序自动出栈释放,而不是gc释放

JVM 内存可简单分为三个区:

1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)

2、栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)

3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap)

Java 的垃圾回收器(GC)主要针对堆区

7、下列Java代码中的变量a、b、c分别在内存的(堆区、栈区、栈区)存储区存放。

class A {
    private String a = “aa”;
    public boolean methodB() {
        String b = “bb”;
        final String c = “cc”;
    }
}

堆区:只存放类对象,线程共享;
方法区:又叫静态存储区,存放class文件和静态数据,线程共享;
栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区,线程不共享;

8、以下集合对象中哪几个是线程安全的(C、D)

LinkedList
ArrayList
Vector
Hashtable

简单记忆线程安全的集合类: 喂!SHE! 喂是指 vector,S是指 stack, H是指
hashtable,E是指:Eenumeration
Collection 是对象集合, Collection 有两个子接口 List 和 Set,

List 可以通过下标 (1,2…) 来取得值,值可以重复,而 Set 只能通过游标来取值,并且值是不能重复的

ArrayList , Vector , LinkedList 是 List 的实现类

ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的

LinkedList 是线程不安全的,底层是由链表实现的

Map 是键值对集合

HashTable 和 HashMap 是 Map 的实现类

HashTable 是线程安全的,不能存储 null 值

HashMap 不是线程安全的,可以存储 null 值

9、实现或继承了Collection接口的是
List Vector Set

10、局部内部类可以用哪些修饰符修饰?
abstract final

猜你喜欢

转载自blog.csdn.net/Pandora_417/article/details/90519922