2021年09月19日 java1
考点1:赋值运算符左值必须是变量
下面语句正确的是()
- A
x+1=5
- B
i++=1
- C
a++b=1
- D
x+=1
显示答案/隐藏答案
正确答案: D赋值运算符 左值必须是变量
首先赋值运算符“=”右值可以是任何常数、变量或者表达式(只要能生成一个值就行)。但左值必须是一个明确的、已命名的变量。
常用的双元运算符:+=
,-=
,*=
,/=
解析:
A:x+1=5,赋值运算符左边是表达式,不对;
B:i++=1,从左到右运算是i=i+1=1,赋值运算符左边是表达式,错误;
C:a++b=1,赋值运算符左边为表达式,错误。
D:x+=1,既x=x+1,正确。
注意背一下各个运算符的先后顺序。
考点2:负数求余运算
以下代码段执行后的输出结果为
1 | public class Test { |
- A -1
- B 2
- C 1
- D -2
显示答案/隐藏答案
正确答案: D换个角度去理解,y%x
算得是y在除以x后还剩多少。这里显然是还剩-2没有除。
验算:
1 | 不论正负,都是a%b=a-a/b*b |
1 | -2=-12 - (-12/-5)*(-5) |
在java中,求余运算,a%b,结果的符号和被除数a的符号一致。
1 | System.out.println("-12 % -5= " + (-12 % -5)); |
运行结果:
1 | -12 % -5= -2 |
当a为-12时,无论b是+5,还是-5。a%b的结果都是-2
当a为+12时,无论b是+5,还是-5。a%b的结果都是+2
1 | System.out.println("-17 % -5= " + (-17 % -5)); |
运行结果:
1 | -17 % -5= -2 |
考点3:使用迭代器遍历集合时,不可改变集合
list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()
1 | Iterator it = list.iterator(); |
- A
it.remove();
- B
list.remove(obj);
- C
list.remove(index);
- D
list.remove(obj,index);
显示答案/隐藏答案
正确答案: A迭代器遍历集合时 不可调用集合对象的remove方法或add方法
如果你想在循环语句中删除集合中的某个元素,就要用迭代器iterator的remove()方法,因为它的remove()方法不仅会删除元素,还会维护一个标志,用来记录目前是不是可删除状态,例如,你不能连续两次调用它的remove()方法,调用之前至少有一次next()方法的调用。
通过for循环遍历集合时,如何调用集合的remove方法删除元素,又不报错
1 | for(int i=0;i<list.size();i++){ |
迭代器在迭代过程中要注意的事项:
1.迭代器在迭代过程中不允许使用集合对象改变集合的元素个数。否则会报出:ConcurrentModificationException,即并发修改异常。
2.在迭代过程中如果需要改变集合中的元素个数,只能使用迭代器的方法去改变。如add()方法和remove()方法。
不使用迭代器时,可以通过集合对象remove和add
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
运行结果:
1 | [0, 1, 2, 3, 4, 5] |
使用迭代器遍历集合时,不可调用集合对象remove方法
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
运行结果:
1 | [0, 1, 2, 3, 4, 5] |
使用迭代器遍历集合是不可调用集合对象的add方法
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
运行结果:
1 | [0, 1, 2, 3, 4, 5] |
迭代器遍历集合时,如果要删除集合中的元素,只能调用迭代器对象的remove方法
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
运行结果:
1 | [0, 1, 2, 3, 4, 5] |
考点4:不同的Map的key和value是否能为null
在Java中,关于HashMap类的描述,以下正确的是 ()
- A HashMap使用键/值得形式保存数据
- B HashMap 能够保证其中元素的顺序
- C HashMap允许将null用作键
- D HashMap允许将null用作值
显示答案/隐藏答案
正确答案: ACDMap集合类 | key | value |
---|---|---|
HashMap | 允许为null | 允许为null |
TreeMap | 不允许为null | 允许为null |
ConcurrentMap | 不允许为null | 不允许为null |
HashTable | 不允许为null | 不允许为null |
考点5:对象序列化
以下关于对象序列化描述正确的是
- A 使用FileOutputStream可以将对象进行传输
- B 使用PrintWriter可以将对象进行传输
- C 使用transient修饰的变量不会被序列化
- D 对象序列化的所属类需要实现Serializable接口
显示答案/隐藏答案
正确答案: CDstatic和transient的成员变量不能对象序列化
使用ObjectOutputStream和ObjectInputStream可以将对象进行传输.
声明为static和transient类型的成员数据不能被串行化。
因为static代表类的状态, transient代表对象的临时数据。
考点7:正则表达式
正则表达式语法中 \d
匹配的是?()
- A 数字
- B 非数字
- C 字母
- D 空白字符
显示答案/隐藏答案
正确答案: A正则表达式 | 描述 |
---|---|
\d |
匹配一个数字字符。等价于 [0-9] 。 |
\D |
匹配一个非数字字符。等价于 [^0-9] 。 |
\f |
匹配一个换页符。等价于 \x0c 和 \cL 。 |
\n |
匹配一个换行符。等价于 \x0a 和 \cJ 。 |
\r |
匹配一个回车符。等价于 \x0d 和 \cM 。 |
\s |
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] 。 |
\S |
匹配任何非空白字符。等价于 [^ \f\n\r\t\v] 。 |
\t |
匹配一个制表符。等价于 \x09 和 \cI 。 |
\v |
匹配一个垂直制表符。等价于 \x0b 和 \cK 。 |
\w |
匹配字母、数字、下划线。等价于’[A-Za-z0-9_] ‘。 |
\W |
匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_] ‘。 |
考点6:数组的下标
已知声明并初始化二维数组
1 | int arr[][]={{1,2},{3,4},{5,6}} |
,则的arr[1][1]
值为()
- A
1
- B
2
- C
4
- D
5
显示答案/隐藏答案
正确答案: C一定要记住数组中以0下标开始
考点8:List和Set的异同
列表(List)和集合(Set)下面说法正确的是?( )
- A Set中至多只能有一个空元素
- B List中至多只能有一个空元素
- C List和Set都可以包含重复元素的有序集合
- D List和Set都是有序集合
显示答案/隐藏答案
正确答案: Ajava里面讲的有序无序,指的是你按照顺序存进去数据,然后再按照顺序取出来,两者是一样的。比如List(0)我放的是“a”,那么我list.get(0)取出来也是“a”。并不代表我存了打乱顺序存1到10十个数,它会自己给按照升序或者降序给你排好序。
list有序有重;set无序无重
考点9:Servlet过滤器
在J2EE中,使用Servlet过滤器,需要在web.xml
中配置()元素
- A
<filter>
- B
<filter-mapping>
- C
<servlet-filter>
- D
<filter-config>
显示答案/隐藏答案
正确答案: AB答案:AB
Servlet过滤器的配置包括两部分:
第一部分是过滤器在Web应用中的定义,由<filter>
元素表示,包括<filter-name>
和<filter-class>
两个必需的子元素
第二部分是过滤器映射的定义,由<filter-mapping>
元素表示,可以将一个过滤器映射到一个或者多个Servlet或JSP文件,也可以采用url-pattern
将过滤器映射到任意特征的URL
。
字符编码过滤器示例
举个例子,如下图:
1 | <!-- 字符编码过滤器 --> |
没有<servlet-filter>
和<filter-config>
考点10:反序列化 clone不调用构造器,new,反射newInstance调用构造器
下面的对象创建方法中哪些会调用构造方法 ()?
- A new语句创建对象
- B 调用Java.io.ObjectInputStream的readObject方法
- C java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
- D 调用对象的clone()方法
显示答案/隐藏答案
正确答案: ACreadObject方法只是从文件中还原对象,clone只是一种复制拷贝对象。
考点11:String 基本类型转String
java中 String str = "hello world"
下列语句错误的是?
- A
str+=' a'
- B
int strlen = str.length
- C
str=100
- D
str=str+100
显示答案/隐藏答案
正确答案: ABCA选项,单引号中不能有两个字符,
B选项,String对象没有.length属性,只有.length()方法
C选项,int类型的数据不能赋值给String类型的变量str