2021年08月28日 java1
考点2:
以下语句的执行结果是什么?
1 | 1+"10"+3+"2" |
- A “11032”
- B “16”
- C 16
- D “32101”
解析
显示答案/隐藏答案
正确答案: A1 | System.out.println(1+"10"+3+"2");//11032 |
注意“+”的两边的类型
相当于按顺序从左向右+,以2个为一个单元,例如
System.out.println(3+5+”12”+3+3);
前两个是3+5,值为8,这时变为
System.out.println(8+”12”+3+3);
前两个是8+”12”,值为”812”,然后”812”+3=”8123”,故最后值为”81233”。
考点3:
以下程序的运行结果是:( )
1 | TreeSet<Integer> set = new TreeSet<Integer>(); |
- A 编译失败
- B 发生运行时异常
- C [606, 608, 610, 612, 629] [608, 610]
- D [606, 608, 610, 612, 629] [608, 610,629]
解析
显示答案/隐藏答案
正确答案: CSet的subset方法
subset方法是求set的范围内的子集,两个true是表示是否包含端点(608和611),故subSet的值为[608,610]
subset(form,true,to,true)
是Treeset的非静态方法,该方法返回从form元素到to元素的一个set集合,两个boolean类型是确认是否包含边境值用的。
https://blog.csdn.net/yingpaixiaochuan/article/details/49019131
1 | /** |
总结:subset()就是截取from到to的值。其中截取的值是否包含边境由fromInclusive、toInclusive的boolean值的变化决定。
考点4:
下面有关java的一些细节问题,描述错误的是?
- A 构造方法不需要同步化
- B 一个子类不可以覆盖掉父类的同步方法
- C 定义在接口中的方法默认是
public
的 - D 容器保存的是对象的引用
解析
显示答案/隐藏答案
正确答案: BA构造方法都是构造出新的对象,所以不需要同步
B synchronized关键字不能被继承。虽然可以用synchronized来定义方法,但是synchronized却并不属于方法定义的一部分,所以synchronized关键字并不能被继承。如果父类中的某个方法使用了synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上synchronized关键字才可
C接口里面的变量其实际是常量,常用public static final修饰 ;接口里面的方法其实际是抽象方法,常用public abstrac修饰
D容器保存的是对象的引用 而非对象本身
考点5:
以下哪个式子有可能在某个进制下成立()?
- A 13*14=204
- B 12*34=568
- C 14*14=140
- D 1+1=3
解析
显示答案/隐藏答案
正确答案: A按权展开,然后相乘
我们假设是x进制,然后带入算式计算即可: A选项:13*14=204
;
1 | (1*x^1+3*x^0) *( 1*x^1+4*x^0)= 2*x^2+4*x^0 |
A选项有答案,为八进制时,可成功匹配,所以A答案正确。
B选项:12*34=568;
1 | (1*x^1+2*x^0)*(3*x^1+4*x^0)=5*x^2+6*x^1+8*x^0 |
B选项也有答案,为二进制,但是却是错误的,因为就像在16进制中一样,不能出现比15(也就是F)更大的数,到了16就会进位了。所以在二进制中,不能出现比1更大的数,到了2就会进位了。而B选项的等式中,出现了3,4,5,6,8都比1更大,所以肯定不是二进制数,所以也是错误的。
C,D选项也是类似规则
考点6:
Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?
- A 重写是父类与子类之间多态性的一种表现
- B 重写是一个类中多态性的一种表现
- C 重载是一个类中多态性的一种表现
- D 重载是父类与子类之间多态性的一种表现
解析
显示答案/隐藏答案
正确答案: AC重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写
(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。
重写是子类继承父类方法并对其进行修改,可选择调用父类方法或子类重写后的同名方法
重载是在一个类可以存在同名但参数列表不同的方法,可根据传入的参数调用相应的方法
考点7:
以下 json 格式数据,错误的是
- A
{company:4399}
- B
{"company":{"name":[4399,4399,4399]}}
- C
{[4399,4399,4399]}
- D
{"company":[4399,4399,4399]}
- E
{"company":{"name":4399}}
解析
显示答案/隐藏答案
正确答案: AC- 必须有键 和 值
- 键和值必须用双引号
- 值中可以嵌套 JSON 元素
考点8:
关于OutOfMemoryError,下面说法正确的是()?
- A
java.lang.OutOfMemoryError: PermGen space
增加-XX:MaxPermSize
这个参数的值的话,这个问题通常会得到解决。 - B
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
当你正准备创建一个超过虚拟机允许的大小的数组时,这条错误将会出现 - C
java.lang.OutOfMemoryError: Java heap space
一般情况下解决这个问题最快的方法就是通过-Xmx
参数来增加堆的大小 - D
java.lang.OutOfMemoryError: nativeGetNewTLA
这个异常只有在jRockit
虚拟机时才会碰到
解析
显示答案/隐藏答案
正确答案: ABC关于此题,《深入理解java虚拟机》有关于OOM(OutOfMemory)问题的解释 A:属于运行时常量池导致的溢出,设置-XX:MaxPermSize可以解决这个问题, B:属于堆空间不足导致的错误,问题比较少见,解决方式和C相同, C:属于java堆内存问题,一般的手段是通过内存映像分析工具,对Dump出来的堆转储存快照进行分析,重点是确认内存中的对象是否是有必要的,也就是要判断是出现了内存泄漏,还是出现了内存溢出,如果是内存列楼,通过工具检查泄露对象打GC Roots的引用链信息,可以准确的确定出泄露代码的位置,不存在泄露,就应该检查虚拟机的堆参数,如果可以继续调大,可以设置-Xmx解决问题 D:java.lang.OutOfMemoryError: nativeGetNewTLA指当虚拟机不能分配新的线程本地空间(Thread Local Area)的时候错误信息,此错误是线程申请一个新的TLA时产生的,这个异常一般只会发生在jRockit虚拟机,只有过于绝对。
考点9:
如下哪些是 java 中有效的关键字()
- A
native
- B
NULL
- C
false
- D
this
解析
显示答案/隐藏答案
正确答案: ADtrue false null都是常量而不是关键字
const和goto是保留关键字。
true和false看起来像关键字,但严格来说,它们是boolean常量;
null看起来也像关键字,但严格来说,它是null常量。
综上,true,false,null不是关键字。而是常量。
点击查看 java se 8 官方解释