2021年09月04日 java
考点1:访问控制权限修饰符
下列修饰符中与访问控制权限无关的是?( )
- A
private - B
public - C
protected - D
final
解析
显示答案/隐藏答案
正确答案: Djava常见修饰符
权限修饰符
private: 修饰私有变量
默认修饰符default(不用把default写出来): 比private限制更少,但比protected限制更多
protected: 修饰受保护变量
public: 修饰公有变量
状态修饰符
final 最终变量(final修饰类,该类不能被继承,final修饰方法,该方法不能被重写,final修饰变量,该变量不能被重新赋值(相当于常量))
static 静态变量(随着类的加载而加载,优先于对象存在,被所有对象所共享,可以通过类名调用)
抽象修饰符
abstract 抽象类&抽象方法(抽象类不能被实例化,抽象类中不一定有抽象方法,但有抽象方法的类必须定义为抽象类)
考点2:main方法
Java Application 中的主类需包含main方法,以下哪项是main方法的正确形参?( )
- A
String args - B
String[] args - C
Char arg - D
StringBuffer[] args
解析
显示答案/隐藏答案
正确答案: B考点3:重载
类 ABC 定义如下:
1 | public class ABC{ |
将以下哪个方法插入行 3 是不合法的。()
- A
public float max(float a, float b, float c){ } - B
public double max (double c, double d){ } - C
public float max(float a, float b){ } - D
private int max(int a, int b, int c){ }
解析
显示答案/隐藏答案
正确答案: B重载要求:两同一不同
重载要求方法的参数列表需要不一样(个数,或者参数类型),修改参数名或者修改返回值以及访问权限并没有用
考点4:异常try-catch-finally执行流程
AccessViolationException异常触发后,下列程序的输出结果为( )
1 | static void Main(string[] args) |
- A
1
2error2
error3 - B
error3 - C
error2 - D
error1
解析
显示答案/隐藏答案
正确答案: A考点5:集合HashMap的key和value可以为null,放入时如果key相同,则新value覆盖旧的value
以下java程序代码,执行后的结果是()
1 | java.util.HashMap map=new java.util.HashMap(); |
- A 0
- B
null - C 1
- D 2
解析
显示答案/隐藏答案
正确答案: C- HashMap可以插入null的key或value。
- 插入的时候,检查是否已经存在相同的key,
- 如果不存在,则直接插入,
- 如果存在,则用新的value替换旧的value。
在本题中,第一条put语句,会将key/value对插入HashMap,而第二条put,因为已经存在一个key为name的项,所以会用新的value替换旧的value,
因此,两条put之后,HashMap中只有一个key/value键值对。那就是(name,jack)。所以,size为1.
考点6:boolean变量只能和boolean变量比较
已知boolean result = false,则下面哪个选项是合法的:
- A
result=1 - B
result=true; - C
if(result!=0) {//so something…} - D
if(result) {//do something…}
解析
显示答案/隐藏答案
正确答案: BD1、boolean类型只有两个直接量值:true和false.
2、除成员变量会有默认初始值外,其他变量必须在第一次使用之前初始化
boolean类型的默认值是false;
基本数据类型的默认值(成员变量)
其余的7种基本类型默认值:
byte是 (byte)0;
short是 (short)0;
int是 0;
long是 0L;
float 是0.0f;
double 是0.0d;
char是 \u0000.
String是null.
考点7:java关键字和常量
下列不是 Java 关键字的是 ( )
- A
abstract - B
false - C
native - D
sizeof
解析
显示答案/隐藏答案
正确答案: BDJava中的关键字有哪些
答:1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
Java保留字
2)2个保留字(现在没用以后可能用到作为关键字):goto、const。
Java特殊直接量 Java常量
3)3个特殊直接量:true、false、null。
考点8:暂时不懂:Jvm垃圾回收
以下哪些jvm的垃圾回收方式采用的是复制算法回收
- A 新生代串行收集器
- B 老年代串行收集器
- C 并行收集器
- D 新生代并行回收收集器
- E 老年代并行回收收集器
- F
cms收集器
解析
显示答案/隐藏答案
正确答案: AD答案AD
新生代串行收集/并行回收器:复制算法;
老年代串行收集/并行回收器:标记-压缩算法;
并行收集器:将串行收集器多线程化,回收策略和串行收集器一致,因此该收集器是新生代为复制算法,老年代为标记-压缩算法。
CMS收集器:Concurrent Mark Sweep,从名字就能知道使用的是多线程的标记-清除算法。
在垃圾的分代回收机制中
新生代一般采用“复制”算法:因为新生代每次都有大批量对象死去,就以少量对象的复制成本完成收集
老年代一般采用“标记-整理/清除”算法:因为对象存活率高,且没有额外内存,故采用“标记-整理”或者“标记-清除”
两个最基本的java回收算法:复制算法和标记清理算法
复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
两个概念:新生代和年老代
新生代:初始对象,生命周期短的
永久代:长时间存在的对象
整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法
Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法
Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
Parallel Old(并行)收集器,针对老年代,标记整理 CMS收集器,基于标记清理
G1收集器:整体上是基于标记 整理 ,局部采用复制
综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。
考点9:int赋值给Integer时自动装箱 Integer自动装箱时-128~+127范围内使用缓存数组中的值 Integer和int比较时自动拆箱然后比较值
1 | Integer a1=17,b2=17; |
以下语句返回值为 true 的2是()
- A
a1==a2 - B
d1==d2 - C
b1==b2 - D
c1==c2
解析
显示答案/隐藏答案
正确答案: ABInteger缓存-128到+127
选A,B. Integer a1 = 17; 语句执行的是valueOf()方法
1 | ...... |
对于-128到127之间的数, Integer直接从数组中取, 故a1, a2指向的是同一个对象, A正确.
其余都是new出来的对象, 显然地址都不相同.
int与Integer比较时 只比较值
int类型与Integer类型比较时, 先将Integer拆箱, 再比较值, 故B正确.
考点10:正则表达式身份证号
关于身份证号,以下正确的正则表达式为( )
- A
isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; - B
isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/; - C
isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; - D
isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;
解析
显示答案/隐藏答案
正确答案: AC正确选项
A选项:isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/
C选项:isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/
常用正则表达式
^:起始符号,^x表示以x开头$:结束符号,x$表示以x结尾[n-m]:表示从n到m的数字\d:表示数字,等同于[0-9]X{m}:表示由m个X字符构成,\d{4}表示4位数字
身份证构成 15位 18位
15位身份证的构成:六位出生地区码+六位出身日期码+三位顺序码
18位身份证的构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码
C选项的构成:[1-9]\d{5}:六位出生地区码,出生地区码没有以0开头,因此第一位为[1-9]。[1-9]\d{3}:八位出生日期码的四位年份,同样年份没有以0开头。((0\d)|(1[0-2])):八位出生日期码的两位月份,| 表示或者,月份的形式为0\d或者是10、11、12。(([0|1|2]\d)|3[0-1]):八位出生日期码的两位日期,日期由01至31。\d{4}:三位顺序码+一位校验码,共四位。
A选项的构成:[1-9]\d{7}:六位出生地区码+两位出生日期码的年份,这里的年份指后两位,因此没有第一位不能为0的限制,所以合并了。
后面的与C选项类似了。
好吧其实我也是第一次知道身份证还有15位的。