JavaDay_4

1、
下列哪种说法是正确的?(C)
A、实例方法可直接调用超类的实例方法
B、实例方法可直接调用超类的类方法
C、实例方法可直接调用本类的类方法
D、实例方法可直接调用其他类的实例方法
解析:
a.实例方法可以调用超类公有实例方法
b.实例方法可以直接调用超类的公有类方法
d.实例方法可以通过类名调用其他类的类方法
2、
Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述错误的是?(C)
A、ArrayList和LinkedList均实现了List接口
B、ArrayList的访问速度比LinkedList快
C、随机添加和删除元素时,ArrayList的表现更佳
D、HashMap实现Map接口,它允许任何类型的键和值对象
解析:
“HashMap实现Map接口,它允许任何类型的键对象” 这句话是有前提条件的。
这需要查看HashMap底层源码,在计算hashcode的过程中会用到equals()和hashCode()这两个函数;
所以键的对象类型必须遵守这两个函数的规则,保证键的不变性,即:
1.若两对象equals,则它两hashcode一定相等;
2.若两对象不equals,则它两hashcode有可能相等;
3.若两对象hashcode相等,则它两不一定equals;
4.若两对象hashcode不相等,则它两一定 不equals;
举个栗子:String类,Integer类,Wrapper类,都满足如上的规则。那是Java给我们实现好了的
3、
在Java中,关于HashMap类的描述,以下错误的是(A)?
A、HashMap能够保证其中元素的顺序
B、HashMap允许将null用作值
C、HashMap允许将null用作键
D、HashMap使用键/值得形式保存数据
解析:
HashMap的底层是由数组加链表实现的,对于每一个key值,都需要计算哈希值,然后通过哈希值来确定顺序,并不是按照加入顺序来存放的,因此可以认为是无序的,但不管是有序还是无序,它都一个自己的顺序。故A错。
最开始有Hashtable,Hashtable是不允许key和value的值为空的,但后来开发者认为有时候也会有key值为空的情况,因为可以允许null为空,通过查看HashMap的源代码就知道:if(key = null) {putForNullKey(value);};
Map底层都是用key/value键值对的形式存放的
4、
下面的程序 编译运行后,在屏幕上显示的结果是(A)
public class test {
public static void main(String args[]) {
int x,y;
x=5>>2;
y=x>>>2;
System.out.println(y);
}
}
A、0
B、2
C、5
D、80
解析:
5的二进制是0101。
x=5>>2 (>>带符号右移)
将0101右移2位,为:0001。
y=x>>>2 (>>>无符号右移,左边空缺补充为0)
将0001右移2位,补0。结果为:0000。
所以得出答案0

这道题首先要知道二进制的计算方式
举例:0011
二进制换算十进制,从右到左,以当前位数字 乘以 2 的索引字幂,然后相加,索引从0开始计算。
如:
右一数字为1,索引为0。所以为:12^0(1乘以2的0次方)
右二数字为1,索引为1。所以为:1
2^1(1乘以2的1次方)
右三数字为0,索引为2。所以为:02^2(0乘以2的2次方)
右四数字为0,索引为3。所以为:0
2^3(0乘以2的3次方)
最后把结果相加。所以计算方式为:
023+0*22+121+1*20
=0+0+2+1
=3
5、
下列哪一种叙述是正确的(D)
A、abstract修饰符可修饰字段、方法和类
B、抽象方法的body部分必须用一对大括号{ }包住
C、声明抽象方法,大括号可有可无
D、声明抽象方法不可写出大括号
解析:
abstract修饰符可修饰字段、方法和类. × abstract只能用来修饰类、方法,不修饰字段(属性)。
抽象方法的body部分必须用一对大括号{ }包住. × 抽象方法用“;”结束。
声明抽象方法,大括号可有可无. × 抽象方法没有方法体,也不用大括号。
6、
方法通常存储在进程中的哪一区(D)
A、堆区
B、栈区
C、全局区
D、方法区
解析:
Java运行时的数据区包括:(其中前两个是线程共享的)
1.方法区(Method Area) 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
2.堆(Heap) 存放对象实例,几乎所有对象实例都在这里分配内存
3.虚拟机栈(VM Stack) 描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量表、操作数栈、动态连接、方法出口等信息
4.本地方法栈(Native Method Stack) 与虚拟机栈了类似,不过则为虚拟机使用的到的Native方法服务。(有的虚拟机譬如Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一)
5.程序计数器(Program Counter Register) 可看作当前线程所执行的字节码的行号的标识器
7、
以下声明合法的是(B)
A、default String s
B、public final static native int w( )
C、abstract double d
D、abstract final double hyperbolicCosine( )
解析:
A:变量不能被defalut修饰
B:native修饰方法,native修饰的方法简单来说就是:一个Java方法调用了一个非Java代码的接口。
定义navtive方法时,并不提供实现体,因为其实现体是用非Java语言在外面实现的。native可以和任何修饰符连用,abstract除外。因为native暗示这个方法时有实现体的,而abstract却显式指明了这个方法没有实现体。
C:abstract修饰方法和类
D:final修饰的方法不能被重写。而abstract定义的方法没有实现,必须被子类重写,明显不能一起使用。
8、
在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为(B)
A、this.A(x)
B、this(x)
C、super(x)
D、A(x)
解析:
A.这是调用普通方法的写法
C.这时显示调用父类构造方法
D.调用静态方法
9、
以下 json 格式数据,错误的是(AC)
A、{company:4399}
B、{“company”:{“name”:[4399,4399,4399]}}
C、{[4399,4399,4399]}
D、{“company”:[4399,4399,4399]}
E、{“company”:{“name”:4399}}
解析:
A:错误 {company:4399} 首先,其为json对象。但json对象要求属性必须加双引号。 B:正确 C:错误 {[4399,4399,4399]} 。使用 {} 则为json对象。json对象必须由一组有序的键值对组成。 D:正确。 答案:AC. 另参考(摘自<<Javascript 高级程序设计(第三版)>>): JSON语法可以表示以下三种类型的值: 1.简单值:使用与JavaScript 相同的语法,可以在JSON中表示字符串,数值,布尔值和null。 2.对象:对象作为一种复杂数据类型,表示的是一组有序的键值对。而每组键值对中的值可以是简单值,也可以是复杂数据类型的值。 3.数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型–简单值,对象或数组。
10、
true、false、null、sizeof、goto、synchronized 哪些是Java关键字?(EF)
A、true
B、false
C、null
D、sizeof
E、goto
F、synchronized
解析:
1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留关键字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留关键字), if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留关键字) , const (保留关键字) , null

编程题

找出100到200之间所有能被5或6整除的数,但不能被两者同时整除(异或)
每行显示10个数,数字之间用空格隔开
解:public class Demo4_12 {
public static void main(String[] args){
int count=0;
for(int i=100;i<=200;i++){
if((i%50||i%60)&&(i%50^i%60)){
System.out.print(i+" ");
count++;
if(count%10==0){
System.out.println();
}
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值