当前位置: 代码迷 >> 综合 >> Day03:笔试题总结
  详细解决方案

Day03:笔试题总结

热度:96   发布时间:2023-11-29 19:45:26.0

目录

一,选择题

二,编程题

1.字符串中展出连续最长的的数字串

2.数组中出现次数超过一半的数字


一,选择题

1.

解析:

1)对于父类的成员变量来说是私有的(private),在子类中无法调用

2)在同一个类中不能有两个public修饰的类(内部类除外,内部类是作为外部类的一个成员而存在) 

2.

解析:

 父类没有无参的构造方法,子类在创建对象时就会默认调用super,调用父类的无参构造方法,所以就会报错

3.

解析:

B.构造方法可以重载,可以有无参的,可以有只有一个参数的,也可以有多个参数的 

4.

解析:

 D.finally块可以不要即省略,但是catch块不能省略

5.

解析:

关于引用传递,当传递的对象是一个数组时,如果方法体的内容是更改某一个下标当中元素的值,那么就会反映到对象上 

6.

解析:

A.实例方法不能直接调用,如果是private就不能调用,这句话太绝对了

B.实例方法只能调用本类的类方法,超类的需要超类来调用

D.同B的分析

7.

解析:

“==”比较的是对象的地址,str1是直接从常量池中取到的,而对于str2,是拼接而来的,只要发生拼接就一定会new一个新的字符串,多以地址肯定不是相同的(堆上)

8.

解析: 

抛出异常是要new的,括号中直接输入抛出异常的描述即可

9.

解析:

A.map可以用null作为键,value值也可以为空,当null作为键时,他并不是返回值null的那种意思,他只是一个字符串

B.均实现了list接口

C.ArrayList底层是动态数组,因此,添加和删除都需要移动要添加位置后面的的所有元素,及其不方便,但是查找就非常的方便

D.如果要查找的元素是最后一个元素,其实就没有谁比谁快的说法了

10.

解析:

内部类就不一定是相同的

二,编程题

1.字符串中展出连续最长的的数字串

题目内容: 

解析:

1)对于这个字符串来说,首先要做的就是筛选每一段连续的数字串出来

2)我选择将每段数字串选出,并保存好,后面就直接进行长度对比,然后,得到结果字符串

解题代码

import java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);String s = sc.nextLine();List<String> list = new ArrayList<>();StringBuilder sb = new StringBuilder();//循环的作用是遍历整个字符串for(int i = 0;i < s.length();i++){char ch = s.charAt(i);//如果是字符属于0-9之间,sb就直接拼接//如果不是,那么就将这个字符串添加进list保存起来,并且将sb清空if(ch >= '0' && ch <= '9'){sb.append(ch);}else{list.add(sb.toString());sb.delete(0,sb.length());}}list.add(sb.toString());String str = "";//循环遍历整个list,找出数字串当中长度最长的,并赋值给strfor(int i = 0;i < list.size();i++){if(list.get(i).length() > str.length()){str = list.get(i);}}System.out.println(str);}
}

2.数组中出现次数超过一半的数字

题目内容:

解析:

1)直接使用HashMap结构进行保存,以数组元素做键,以出现的次数做值

2)以循环进行对比,找出出现次数超过一半的元素

解题代码:

import java.util.*;public class Solution {public int MoreThanHalfNum_Solution(int [] array) {//用map存放每个元素出现的次数(以元素做键,以出现的次数做值)Map<Integer,Integer> m = new HashMap<>();for(int i = 0;i < array.length;i++){m.put(array[i],m.getOrDefault(array[i],0) + 1);}int midpos = array.length / 2;int index = 0;//对每个元素出现的次数进行比较for(int i = 0;i < array.length;i++){if(m.get(array[i]) > midpos){index = i;}}return array[index];}
}