Java考试常考基础题(Examination Questions Parsing04)

 想学习架构师构建流程请跳转:Java架构师系统架构设计

一、 单选题

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循环如果有想法欢迎骚扰,睡觉了.答案没什么问题.

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值