根据以下代码段,下列说法中正确的是( )
public class Parent {
private void m1(){}
void m2(){}
protected void m3(){}
public static void m4(){}
}
选项
子类中一定能够继承和覆盖Parent类的m1方法
子类中一定能够继承和覆盖Parent类的m2方法
子类中一定能够继承和覆盖Parent类的m3方法
子类中一定能够继承和覆盖Parent类的m4方法
答案
子类中一定能够继承和覆盖Parent类的m3方法
public和protected都可以作用于子类,但在多态情况下,静态函数调用时编译和运行看左边,所以子父类存在同名静态函数访问的是父类,子类并不能覆盖父类的方法,所以选C
通过继承,子类可以拥有所有父类对其可见的方法和域
A.私有方法只能在本类中可见,故不能继承,A错误
B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误
C.保护修饰符凡是继承自该类的子类都能访问,当然可被继承覆盖;C正确
D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误
在某个类A中存在一个方法:void set(int x),以下不能作为这个方法的重载的声明的是()
答案
void set(int y)
方法重载满足的条件
1. 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载
2. 参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同
3. 方法的返回值类型,方法的修饰符可以不同。
编程语言Javascript源自Java,其功能是Java SE的子集()
答案
错误
1,JS是网景公司的产品,前身是LiveScript;
Java是SUN公司的产品,现在是Oracle的了
2,JS是基于对象,Java是面向对象
3,JS只需解释就可以执行,Java需要先编译成字节码文件再执行
4,JS是弱类型,Java是强类型
面向对象设计方法主要特征的是( )
封装 \ 继承 \ 多态
这道题本来是完全会做的,但是看到设计方法这四个字就一下子犹豫了,就选了其他答案.可惜了
下列整型常量 i 的定义中,正确的是( )
选项
final i;
static int i;
static final int i=234;
final float i=3.14f;
答案
static final int i=234;
java中final修饰的变量有三种:
静态变量、实例变量和局部变量,
分别表示三种类型的常量。
int关键字修饰整型类型。static修饰静态变量,
即当利用这个关键字来修饰一个变量的时候,在创建对象之前就会为这个变量在内存中创建一个存储空间。以后创建对对象如果需要用到这个静态变量,那么就会共享这一个变量的存储空间。
A:缺少必要的整型类型声明
B:缺少常量关键字final
D:定义一个浮点常量
自我检讨:我没有看到整型!整型!整型!
Vector & ArrayList 的主要区别
1)同步性:Vector是线程安全的,也就是说是同步的 ,而ArrayList 是线程序不安全的,不是同步的 数2。
2)数据增长:当需要增长时,Vector默认增长为原来一倍 ,而ArrayList却是原来的50% ,这样,ArrayList就有利于节约内存空间。
如果涉及到堆栈,队列等操作,应该考虑用Vector,如果需要快速随机访问元素,应该使用ArrayList 。
扩展知识:
Hashtable & HashMap
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
ArrayList & LinkedList
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
在try的括号里面有return一个值,那在哪里执行finally里的代码?
选项
不执行finally代码
return前执行
return后执行
答案:
return前执行
每一本Java书都有讲过。
“假设利用 return 语句从 try 语句块中退出。在方法返回前,finally子句的内容将被执行。如果 finally 子句中也有一个 return 语句,这个返回值将会覆盖原始的返回值。”
public static void main(String[] args) {
int k = f_test();
System.out.println(k);
}
public static int f_test(){
int a = 0;
try{
a = 1;
return a;
}
finally{
System.out.println("It is in final chunk.");
a = 2;
return a;
}
}
输出
It is in final chunk.
2
如果将 return a; 注释掉,将输出
It is in final chunk.
1
关于C++/JAVA类中static 成员和对象成员的说法正确的是?
选项
static 成员变量在对象构造时生成
static 成员函数在对象成员函数中无法调用
虚成员函数不可能是static 成员函数
static 成员函数不能访问static 成员变量
答案
虚成员函数不可能是static 成员函数
static成员变量是在类加载的时候生成的
static成员函数既可以通过类名直接调用,也可以通过对象名进行调用
虚函数是C++中的,虚函数不可能是static的
static成员函数可以访问static成员变量
以下哪项陈述是正确的?
选项
垃圾回收线程的优先级很高,以保证不再 使用的内存将被及时回收
垃圾收集允许程序开发者明确指定释放 哪一个对象
垃圾回收机制保证了JAVA程序不会出现 内存溢出
进入”Dead”状态的线程将被垃圾回收器回收
以上都不对
答案
以上都不对
A: 垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收
以下集合对象中哪几个是线程安全的()
LinkedList
ArrayList
Vector
Hashtable
简单记忆线程安全的集合类: 喂!SHE! 喂是指 vector,S是指 stack, H是指 hashtable,E是指:Eenumeration
集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口
java 声明一个数组时,不能直接限定数组长度
在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。
选项
char a[][];
String a[];
String[] a;
Object a[50];
String a[50];
Object a[];
A:char[][] 定义了二位字符数组。在Java中,使用字符串对char数组赋值,必须使用toCharArray()方法进行转换。所以A错误。
B、C:在Java中定义String数组,有两种定义方式:String a[]和String[] a。所以B、C正确。
D、E:数组是一个引用类型变量 ,因此使用它定义一个变量时,仅仅定义了一个变量 ,这个引用变量还未指向任何有效的内存 ,因此定义数组不能指定数组的长度。所以D、E错误。
F:Object类是所有类的父类。子类其实是一种特殊的父类,因此子类对象可以直接赋值给父类引用变量,无须强制转换,这也被称为向上转型。这体现了多态的思想。所以F正确。
最后选B、C、F