一、 单选题
1. 下列关于方法定义说法错误的( )
A、定义在类中方法外面
B、返回值类型,必须要和 return 语句返回的类型相同,否则编译失败 。
C、必须是 public 类型的
D、不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
解析:C 类中方法外没问题方法内嵌套,方法外离谱 其他都没啥问题
2. 有如下程序段:
则表达式 a == b 与 s == s2 的结果分别是:( )。
A、true 与 true
B、false 与 true
C、true 与 false
D、false 与 false
解析:B 做过不解释 但是强调下a++ 加上去了,a为6 b还是5
3. 根据以下的代码得出的 a、b、c 和 d 的值为?
A: 5,4,5,5
B: 6,5,6,5
C: 6,4,6,4
D: 6,4,6,5
解析: D b为4 a为6 d为5 c为6
4. ArrayList 的初始化内容如下:
下面可以删除 list 集合中所有的”b”的代码是()
A、 for (int i = 0; i < list.size (); i++) {
if (list.get (i).equals ("b")) { list.remove (i); } }
B、 for (int i = list.size ()-1; i > 0; i--) {
if (list.get (i).equals ("b")) { list.remove (i); } }
C、list.remove ("b");
D、以上的代码都不能成功删除 list 集合中所有的”b”;
解析:B 做过不解释 但是吧集合删除有个坑如果正序容易漏记得i--,或者倒序删除
5. 以下关于构造方法说法错误的是?()
A、方法名与类名相同
B、如果你提供了构造方法,系统还会提供默认构造方法
C、没有返回值类型,连 void 都没有
D、没有具体的返回值
解析:B 自己重载构造方法默认的无参就没了 需要自己写 一般就都写了就行了反正都是快捷键
6. 下面的代码执行完 x 的值是()
A、35
B、36
C、34
D、16
解析: A 穿透 这里我说个东西就是default在最开始如果没有匹配到会一直穿透到底
7. 下列 test 类中的变量 r 的最后结果为
A、31
B、30
C、28
D、29
解析:A 做过不解析 简单题 ++在前就先加就完事了,除非单独一句.
8. 以下哪两个基本数据类型占 4 个字节()
A、long,double
B、short,int
C、int,float
D、long,char
解析:C 记住就行了 short2 int4 long8 float4 double8 个字节
9.以下代码反转字符串逻辑正确的是( )
A :
String s = "12345";
for (int i = s.length(); i >= 0; i--) {
s+= s.charAt(i); }
System.out.println(s);
B :
String s = "12345";
for (int i = s.length()-1; i >= 0; i--) {
s+= s.charAt(i); }
System.out.println(s);
C :
String s = "12345";
String s2 = "";
for (int i = s.length()-1; i >= 0; i--) {
s2+= s.charAt(i);}
s = s2;
System.out.println(s);
D :
String s = "12345";
String s2 = "";
for (int i = 0; i < s.length(); i++) {
s2+= s.charAt(i); }
s = s2;
System.out.println(s);
解析:C 简单题
10. 下面变量名定义正确的是()
A、final
B、1var1
C、_var2
D、var3&
解析:C 简单题
二、 多选题(每题 4 分,共计 28 分;得分____)
11. 给定如下 java 代码,编译运行时,以下哪个语句的值为 true()
A、s.equals(t);
B、 t.equals(c);
C、t.equals(e);
D、 t==c;
解析:AC 比较的是两字符串的内容是否相同
12. 以下表达式结果为 True 的有( )
A、
int a=8;
byte b=8;
System.out.println(a==b);
B、int a=97;
char b='a';
System.out.println(a==b);
C、
int a=10;
long b=10;
System.out.println(a==b);
D、
short a=127;
long b=127;
System.out.println(a==b);
解析:ABCD 基本数据类型比较自动类型转换ACD没问题 B在参与运算char会转为int字符aASCII码是97所以相同.
13. 以下选项中不能获取到下图所示字符串(包含空格)的有()
A、
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String x = sc.next ();
B、
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String x = sc.nextInt ();
C、
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String x = sc.nextLine();
D、
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String x = sc.nextDouble ();
解析:A(X)BD 唯有nextLine不行,因为除了回车谁也不能让他停下接收,答案A可以接收
14. 现有 Animal 类 属性有 name 和 age,下列选项中属于它的构造方法的有( )
A.
public Animal() { }
B.
public Animals() { }
C.
public Animal(String name, int age) { this.name = name; this.age = age; }
D.
public void Animal(String name, int age) { this.name = name; this.age = age; }
解析:AC 构造方法没有返回值连void都没 同类名
15. 若只能修改一处,想要输出结果为 0,可以对哪一步进行修改( )
public static void main(String[] args) {
int [ ] arr = new int[1]; ①
arr[0] = 3;②
System.out.println( arr[1] ); ③
}
A、②处修改为 arr[3] = 0;
B、③处修改为 System.out.println(arr[0]-3) ;
C、①处修改为 int [ ] arr = new int[2];
D、②处修改为 arr[1] = 0;
解析: BC A就没那么大边界 B优秀直接干为0 C再加一个默认值为0 D没有空间
16. 下列关于形参、实参说法正确的是()
A、形参是指在方法定义时的参数
B、实参是指在方法调用时的参数
C、方法调用时,形参实参之间的个数,顺序,类型不一定都需要一致
D、方法调用时,形参实参之间的个数,顺序,类型都需要一致
解析:ABD 解析 简单不解释
17.下面关于 String 的描述不正确的是()
A、toCharArray()是将此字符串转换成新的字符数组
B、equals()方法比较的是两个字符串的地址和内容
C、charAt()返回的是指定的索引处的 char 值
D、length 属性代表的是字符串的长度
解析:BD 字符串没有length属性,B的话对于我有点迷惑在我看到源码后确定是要比较地址但是,分装给我们使用就是比较值了.
三、 代码题(共计 42 分;得分____)
18.本题本质为代码分析题,下载试题附件(需要分析的代码图片),代码图片中共有 5 处
错误,红框标出的代码中存在错误,请找出具体的错误并给出修改方案。
答案格式要求如下:
错误代码的行号,正确代码;
解析:
11,while (i<=5){ //因为i的值为1 要5个也就是1-5 a.length连循环体都进不去 这个较难想
15,int num=scanner.nextInt(); //这个简单
20,i++; //这个必须要加要不死循环了
27,int nextInt = random.nextInt(10)+1; //1-10 范围为[x,y]就要 (y-x+1)+1
31,if(arr[j]%nextInt==0){ //取余写成除了
19.本题本质为代码填空
public class wanxing { public static void main(String[] args) { //分别实例化四个Singer对象, Singer s1=new Singer("郭富城",55,"踢足球"); Singer s2=new Singer("张学友",35,"游泳"); Singer s3=new Singer("刘德华",25,"打篮球"); Singer s4=new Singer("黎明",18,"击剑"); //创建一个ArrayList集合,这个集合里面存储的是Singer类型,分别将上面的四个Singer对象添加到集合中 ArrayList<Singer> list=new ArrayList<>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); //遍历集合,如果集合中对象的年龄大于30,将这个对象的爱好改成”打保龄球” ______________1________________ //遍历集合,如果对象的年龄小于30,那么就把这个对象删除 ______________2________________ //打印修改后集合里面全部对象所有的属性信息到控制台。 for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getName()+list.get(i).getAge()+list.get(i).getLike()); } } } //定义"歌手"类,Singer class Singer{ // 成员属性: name (姓名):String类型,age (年龄):int类型,like (爱好):String类型,属性必须使用private修饰。 // 成员方法:有参构造方法 ______________3_________________________ //3个属性的get/set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getLike() { return like; } public void setLike(String like) { this.like = like; } }
放入程序中运行通即为正确,此题较为简单.懒得解析了.直接放答案.
import java.util.ArrayList; public class wanxing { public static void main(String[] args) { //分别实例化四个Singer对象, Singer s1=new Singer("郭富城",55,"踢足球"); Singer s2=new Singer("张学友",35,"游泳"); Singer s3=new Singer("刘德华",25,"打篮球"); Singer s4=new Singer("黎明",18,"击剑"); //创建一个ArrayList集合,这个集合里面存储的是Singer类型,分别将上面的四个Singer对象添加到集合中 ArrayList<Singer> list =new ArrayList<>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); //遍历集合,如果集合中对象的年龄大于30,那么将这个对象的爱好改成”打保龄球” for(int i=0;i< list.size();i++){ if (list.get(i).getAge()>30){ list.get(i).setLike("打保龄球"); } } //遍历集合,如果对象的年龄小于30,那么就把这个对象删除 for(int i=0;i< list.size();i++){ if (list.get(i).getAge()<30){ list.remove(i); i--; } } //打印修改后集合里面全部对象所有的属性信息到控制台。 for(int i=0;i< list.size();i++){ System.out.println(list.get(i).getName()+list.get(i).getAge()+list.get(i).getLike()); } } } //1.定义"歌手"类,Singer,包含以下成员: // class Singer{ // 成员属性: name (姓名):String类型,age (年龄):int类型,like (爱好):String类型,属性使用private修饰。 // 成员方法: 1).get/set方法 2)生成有参构造方法 private String name; private int age; private String like; public Singer(String name, int age, String like) { this.name = name; this.age = age; this.like = like; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getLike() { return like; } public void setLike(String like) { this.like = like; } }
20.【代码题】
定义返回值类型为 int 类型,名为 getScore(int[] arr)的静态方法,方法内完成:获取指定数
组 arr 中大于平均值的元素的个数,并返回。
定义 main 方法,方法内完成:
1).定义一个长度为 5 的 int 数组 arr
2).使用随机数生成 5 个范围为 1-99 的数字存入 arr 中(包含 1 和 99),之后打印数组
3).传递 arr 调用 getScore(int[] arr)方法,获取方法返回值并在控制台打印输出该返回值
/*定义返回值类型为 int 类型,名为 getScore(int[] arr)的静态方法,方法内完成:获取指定数
组 arr 中大于平均值的元素的个数,并返回。
定义 main 方法,方法内完成:
1).定义一个长度为 5 的 int 数组 arr
2).使用随机数生成 5 个范围为 1-99 的数字存入 arr 中(包含 1 和 99),之后打印数组
3).传递 arr 调用 getScore(int[] arr)方法,获取方法返回值并在控制台打印输出该返回值*/
import java.util.Random; public class Test { public static void main(String[] args) { int[] arr = new int[5]; Random r = new Random(); for (int i = 0; i < arr.length; i++) { int anInt = r.nextInt(99) + 1; arr[i] = anInt; } int score = getScore(arr); System.out.println(score); } public static int getScore(int[] arr) { int sum = 0; int avg = 0; int count = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; if (i==arr.length-1) { avg = sum / arr.length; for (int i1 = 0; i1 < arr.length; i1++) { if (arr[i1] > avg) { count++; } } } } return count; } }
最后一道题耗了我十分钟吧,我一直以为一个for循环可以,但是两件不同的事儿怎么能一个for循环如果有想法欢迎骚扰,睡觉了.答案没什么问题.