1.下面哪个选项是main方法的返回类型?
正确答案: B 你的答案: B (正确)
int void Boolean static
主方法是没有返回值的,所以用void修饰;
2. 有程序片段如下,以下表达式结果为 true 的是( )
Float s=new Float(0.1f);
Float t=new Float(0.1f);
Double u=new Double(0.1);
正确答案: B 你的答案: A (错误)
s==t s.equals(t) u.equals(s) t.equals(u)
float的==比较的是地址,而equals方法重写了Object的,比较的是它的类型和值;Double的equals方法也是一样;
3.如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0)) {
//打印出i和j的值。
}
正确答案: D 你的答案: D (正确)
i=0;j=0 i=1;j=1 i=0;j=1 i=1;j=0
if语句中++i>0 与++j就行逻辑或,所以当前一个条件为真时,后一个条件就跳过了,因为if的判断已经是true,所以++i,i = 1;j = 0;
4.下面哪个不是标准Statement类?
正确答案: D 你的答案: D (正确)
Statement PreparedStatement CallableStatement BatchedStatement
statement用于将SQL语句发送到数据库,因为它是通过字符拼接SQL语句,所以存在SQL注入,所以出现了PreParedStatement,对SQL语句进行预编译,可以防止SQL注入;它是statement的子类,CallableStatement是PreParedStatement的子类,是用来调用存储过程的。 BatchedStatement用于批量操作数据库,BatchedStatement不是标准的Statement类
5.以下代码的输出的正确结果是
public class Test {
public static void main(String args[]) {
String s = “祝你考出好成绩!”;
System.out.println(s.length());
}
}
正确答案: D 你的答案: D (正确)
24 16 15 8
七个文字一个感叹号;
6. 在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( )。
正确答案: B 你的答案: B (正确)
System.out.print (buffer[i]);
DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename));
DataInputStream din = new DataInputStream(new FileInputStream(this.filename));。
System.in.read(buffer)。
outputstream 是输出流,相对于电脑来说,也就是将数组写进电脑的文件中;
inputstream是输入流,用于读取;
7.关于Float,下列说法错误的是()
正确答案: C 你的答案: C (正确)
Float是一个类
Float在java.lang包中
Float a=1.0是正确的赋值方法
Float a= new Float(1.0)是正确的赋值方法
小数默认是double型,double类型值无法赋值给比它字节还小的float,会造成精度损失,所以c选型应该改为Float a = 1.0f;
8.Which lines of the following will produce an error?
byte a1 = 2, a2 = 4, a3;
short s = 16;
a2 = s;
a3 = a1 * a2;
正确答案: A 你的答案: A (正确)
Line 3 and Line 4
Line 1 only
Line 3 only
Line 4 only
题目找哪行有错,因为s = 16;也就是a2 = 16;16是int型,a2是byte型,所以会报错,a3 = 8;也是一样,高级类型向下转型需要强转;
9. 以下JAVA程序的运行结果是什么( )
public static void main(String[] args) {
Object o1 = true ? new Integer(1) : new Double(2.0);
Object o2;
if (true) {
o2 = new Integer(1);
} else {
o2 = new Double(2.0);
}
System.out.print(o1);
System.out.print(" ");
System.out.print(o2);
}
正确答案: D 你的答案: A (错误)
1 1
1.0 1.0
1 1.0
1.0 1
查看评论发现, 三元运算符会对两个结果的数据类型,进行自动的类型提升。
因此,可以把
Object o1 = true ? new Integer(1) : new Double(2.0);
看作
Object o1 = true ? new Double(1.0) : new Double(2.0);
所以o1 = 1.0
三元操作符类型的转换规则:
1.若两个操作数不可转换,则不做转换,返回值为Object类型
2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。
3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。
4.若两个操作数都是直接量数字,则返回值类型为范围较大者
10. 在Java中下面Class的声明哪些是错误的?
正确答案: A B C 你的答案: A C (错误)
public abstract final class Test {
abstract void method();
}
public abstract class Test {
abstract final void method();
}
public abstract class Test {
abstract void method() {
}
}
public class Test {
final void method() {
}
}
这个题属实是当时没注意看,只要记住final 和 abstract不能同时用,final是不让继承,而abstract抽象类就是让子类继承的;



