【270天】我爱刷题系列(29)

叨叨两句

  1. 我发现我对熬夜身体累彻底不担忧,担忧的只是熬夜伤身体
  2. 原来我是你们的小太阳,哈哈,但愿大家和我相处都暖暖的^-^

牛客网——java专项练习009

1

下代码对其执行后,NumberList里的元素依次为:
List<Integer> NumberList =newArrayList<Integer>();
NumberList.add(2);
NumberList.add(4);
NumberList.add(1);
NumberList.add(3);
NumberList.add(5);
for(int i =0;i<NumberList.size();++i)
{
int v = NumberList.get(i);
if(v%2==0)
{
  NumberList.remove(v);
}
}
System.out.println(NumberList);
正确答案: D   你的答案: C (错误)

A 2,4,1,3,5
B 2,1,3,5
C 4,1,3,5
D 会出现越界状况

这题主要考察两点:
1.ArrayList删除元素后,剩余元素会依次向前移动,所以下标一直在变,size()也会减少;
2.remove()方法调用的是remove(int index),而不是remove(Object o),所以删除的是index索引处的元素;java

该题具体流程:
1.i=0,v=2,remove(2)删除掉了元素1,所以NumberList剩余元素【2,4,3,5】;
2.i=1,v=4,remove(4),此时线性表中只有四个元素,不可能删除索引为4的元素,所以会报数组下标越界异常。数组

2

关于JAVA堆,下面说法错误的是()?
正确答案: C   你的答案: 空 (错误)

A 全部类的实例和数组都是在堆上分配内存的
B 堆内存由存活和死亡的对象,空闲碎片区组成
C 数组是分配在栈中的
D 对象所占的堆内存是由自动内存管理系统回收

3

在使用super 和this关键字时,如下描述正确的是
正确答案: A   你的答案: A (正确)

A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,不然编译不经过
B super()和this()不必定要放在构造方法内第一行
C this()和super()能够同时出如今一个构造函数中
D this()和super()能够在static环境中使用,包括static方法和static语句块

1)调用super()必须写在子类构造方法的第一行,不然编译不经过。每一个子类构造方法的第一条语句,都是隐含地调用super(),若是父类没有这种形式的构造函数,那么在编译的时候就会报错。
2)super()和this()相似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。
3)super()和this()均需放在构造方法内第一行。
4)尽管能够用this调用一个构造器,但却不能调用两个。
5)this和super不能同时出如今一个构造函数里面,由于this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,因此在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会经过。
6)this()和super()都指的是对象,因此,均不能够在static环境中使用。包括:static变量,static方法,static语句块。
7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。函数

4

关键字super的做用是?
正确答案: D   你的答案: C (错误)

A 用来访问父类被隐藏的非私有成员变量
B 用来调用父类中被重写的方法
C 用来调用父类的构造函数
D 以上都是

5

下列哪一种状况能够终止当前线程的运行?
正确答案: D   你的答案: D (正确)

A 当一个优先级高的线程进入就绪状态时
B 当该线程调用sleep()方法时
C 当建立一个新线程时
D 抛出一个异常时

6

下列选项中是正确的方法声明的是?()
正确答案: A B C D   你的答案: A B C D (正确)

A protected abstract void f1();
B public final void f1() {}
C static final void fq(){}
D private void f1() {}
1.抽象方法只能定义在抽象类中,抽象方法和抽象类必须由abstract修饰,abstract关键字只能描述类和方法,不能描述变量。抽象方法只定义方法声明,不定义方法实现。抽象类不能够被实例化(建立对象),只有经过子类继承抽象类并覆盖抽象类中的全部抽象方法后,该子类才能够被实例化,不然该子类仍是一个抽象类。抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中能够含有非抽象方法。abstract关键字不能够与final,private,static关键字共存,由于被final修饰的方法不能够被重写,意味着子类不能够重写该方法,若是abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的做用),而final又不让该方法重写,这相互矛盾。若是private和abstract共同修饰父类中的方法,private修饰则该方法不能够被子类访问,可是abstract修饰须要子类去实现,二者产生矛盾。若是static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不须要在子类中去实现,这与abstract关键字矛盾。 

2.static用于修饰成员变量和成员函数,想要实现对象中的共性数据的对象共享,能够将这个数据进行静态修饰,被静态修饰的成员能够直接被类名调用,静态随着类的加载而加载,并且优先于对象存在。静态方法只能访问静态成员(静态方法和静态变量),不能够访问非静态成员,这是由于静态方法加载时,优先于对象存在,因此没有办法访问对象中的成员。静态方法中不能使用this和super关键字,由于this表明本类对象,super表明父类对象,而静态时,有可能没有对象存在,因此this和super没法使用。 

3.final关键字能够修饰类,方法,变量(成员变量内,局部变量,静态变量),被final修饰的类是一个最终类,不能够被继承,被final修饰的方法是一个最终方法,不能够被覆盖,可是能够被继承。被final修饰的变量只能是一个常量,只能赋值一次。内部类被定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。
相关文章
相关标签/搜索