1.下面程序执行的结果是?(C )
boolean b=true; //定义一个布尔类型变量,只是true
if(b=false) //赋值语句,将false赋值给b,括号里面的值是false,不执行
{
System.out.println("a");
}
else if(b) //b的值是false,所以也不执行
{
System.out.println("b");
}
else if(!b) //b的值是false,取反后是true,执行,输出c,结束循环
{
System.out.println("c");
}
else
{
System.out.println("d");
}
A. a
B. b
C. c
D. d
易错点:if(b=false) 是赋值语句,将false赋值给b,括号里面的值是false,不执行
2.下列函数中能和函数int max(int a, int b, double c)构成重载关系的是( BC )
A. double max(int a, int b, double c) //参数列表要不同,此处相同了
B. void max(int a, double c, int b) // 对应位置参数类型不同
C. int max(double a, int b) //参数列表(个数)不同
D. int max(int x, int y, double z) //跟参数列表的变量名无关
易错点:B选项,对应位置参数列表的类型不同也是重载,还有D选项,跟参数列表的变量名无关。
方法重载Overload:
同一个类中,出现方法名相同,参数列表不同(个数,对应的类型)的两个或两个以上的方法时称为方法重载,方法重载与返回值的数据类型无关。
3.JDK1.7之后,switch语句后括号里的表达式可以是以下哪种类型(ABD)
A. char
B. String
C. long // 没有
D. 枚举类型
易错点:此题考的是JDK1.7之后,switch语句后括号里的表达式支持的所有类型,而不是说JDK1.7之后才支持的什么类型。
switch(表达式)表达式可以是哪种类型?
byte,short,char,int,JDK1.5以后支持枚举,JDK1.7以后支持字符串(String)。
4.下面的哪一个程序片断可能导致错误。 ( B )
A.
String s = "Gone with the wind";
String t = " good ";
String k = s + t;
B.
String s = "Gone with the wind";
String t;
t = s[3] + "one"; //s[3]错误,需要数组,并未定义数组
C.
String s = "Gone with the wind";
String standard = s.toUpperCase();
D.
String s = "home directory";
s = s + "directory";
易错点:变量要先定义再使用,不能使用为定义的元素。
5.下列哪个声明是错误的?(BC)
A. int i=10;
B. float f=1.1; //要float f=1.1f;这样定义,小数默认类型是double类型
C. int other = (int) true; //boolean类型不参与运算
D. byte b=127;
易错点:整数默认类型是int类型,小数默认类型是double类型,定义float类型时要在后面加一个f;还有就是boolean类型不参与运算
6.下面程序执行的结果是( B)
public static void main(String [] args)
{
int num=100; //定义整型变量赋值100
if(num ++>100); //如果num ++>100则继续,否则不执行,但是后面直接加了分号,
{
num =200; //代码块,给num赋值200
}
System.out.println(num);//输出200
}
A. 100
B. 200
C. 201
D. 101
易错点:看清代码,if(num ++>100); 没有方法体,容易错选成D
7.编译如下代码,编译运行时,结果是(A)
public static void main(String[] atgs){
for(int i=0;i<3;i++){
System.out.print(i);
}
System.out.print(i); //i已被释放,未定义
}
A. 编译时报错
B. 正确运行,输出012
C. 正确运行,输出123
D. 正确运行,输出0123
易错点:for循环里面定义的变量,随着for循环的结束就释放了,在外面不能再被调用
8.下面关于代码String str = new String(“abc”);描述正确的是( bc )
a) 创建了一个字符串对象
b) 创建了两个对象,一个是new String( )对象,一个是”abc”对象
c) str.equals(“abc”);将返回true //String方法重写了equals方法
d) str.equals(“abc”);将返回false
易错点:String方法默认重写了equals方法
9.对字符串的说法正确的是( d )
a) 字符串是基本数据类型 //引用类型
b) 字符串值存储在栈内存中 //存储在常量池
c) 字符串值初始化后可以被改变 //不可以
d) 字符串值一旦初始化就不会被改变
易错点:字符串值一旦初始化就不会被改变,是对的,这里的“不能发生改变”指的是字符串在常量池中的值不能发生改变,因为字符串是常量。
10.下面代码运行的结果是( a )
ArrayList<String> al = new ArrayList<String>();//定义一个泛型是String类型的集合
al.add(true); //true是布尔类型
al.add(123); //123是基本数据类型
al.add(“abc”);
System.out.println(al);
a) 编译失败
b) [true,123]
c) [true,123,abc];
d) [abc];
易错点:泛型是一种安全机制,使用泛型避免了强制类型转换,这里要添加泛型指定的类型
11.关于将int数组使用系统提供的API转成集合后,不可以进行的操作是( a )
a) 增加集合中的元素 //数组长度是固定的,改变之后运行会报错
b) 迭代集合
c) 修改集合中的元素
d) 获取集合中元素的个数
易错点:数组数组长度是固定的,转成集合之后,一样不能改变长度,改变之后运行会报错
12.ArrayList的初始化内容如下:
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("aaa");
list.add("java");
list.add("java");
list.add("bbb");
下面可以删除list中所有的“java”的代码是( a )
a)
for (int i = list.size()-1; i >= 0; i--) {
if("java".equals(list.get(i))){
list.remove(i);
}
}
b)
for (int i =0; i < list.size(); i++) { //当删除一个元素时,对应索引向前移动一个,
if("java".equals(list.get(i))){ //i++的时候会跳到下一个元素,会漏删
list.remove(i);
}
}
c) list.remove("java"); //remove(int index)
d) list.removeAll("java");
易错点:remove()进行删除操作的时候,不会自动装箱,也就是说,我们传的整数会直接被识别为:索引。 |