2021年09月08日 java2

考点1:Java标识符

在JAVA中, 下列标识符合法的是()

  • A 3kyou
  • B @163
  • C name
  • D while
显示答案/隐藏答案正确答案: C

Java中标识符规则

  • 字母数字美元符号$、**下划线_**4种组成,
  • 不能以数字开头,
  • 不能是保留字和关键字
  • 不能是true,false,null等引用常量

C语言标识符规则

  • 标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,
  • 首字符不能是数字,但可以是字母或者下划线
  • 不能是保留字和关键字

Java标识符字符构成比C语言的多了一个美元符$

考点2:java常识 局部变量 成员变量

局部变量能否和成员变量重名?

  • A 可以,局部变量可以与成员变量重名,这时可用“this”来指向成员变量
  • B 可以,这时可用“local”关键字来指向局部变量
  • C 不能,局部变量不能与成员变量重名
  • D 不能,在一个类中不能有重名变量,不管是成员变量还是函数中的局部变量
显示答案/隐藏答案正确答案: A

java访问变量采用就近原则

JAVA访问变量采用就近原则,局部变量与成员变量重名时,局部变量比较近,使用局部变量。

java采用局部优先的思想。局部变量可以和成员变量相同,使用标识符调用时,优先使用局部变量。在实例方法中出现变量名相同时,可以使用this关键字来调用实例变量。

考点3:Java常识

有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。( )

1.
2. public class Interesting{
3. // 省略代码
4. }
  • A import java.awt.*;
  • B package mypackage;
  • C class OtherClass{ }
  • D public class MyClass{ }
显示答案/隐藏答案正确答案: D

一个.java文件中只能有一个public外部类

在同一个java原文件中,可以有多个class类,但是只有有一个公共的 public class

一个.java文件中,可以有多个类,包括内部类和外部类。

考虑到内部类的原因,一个.java文件可以中可以有多个public类。

但是对于外部类而言,一个.java文件必须只能有一个public类,同时这个类的类名必须和.java的文件名一致(包括大小写)

考点4:内存泄漏

java程序内存泄露的最直接表现是( )

  • A 频繁FullGc
  • B jvm崩溃
  • C 程序抛内存控制的Exception
  • D java进程异常消失
显示答案/隐藏答案正确答案: C

java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值
但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大.
最终超出内存界限,抛出OutOfMemoryExpection。

答案 C,依次解释一下相关选项

什么是内存泄漏

首先理解一下内存泄漏的概念,内存泄漏就是对象引用消失了,对象内存却没有被回收

A 答案:FullGC 是老年代内存空间不足的时候,才会触发的,老年代一般是生命周期较长的对象或者大对象,频繁的 FullGC不会可能会影响程序性能(因为内存回收需要消耗CPU等资源),但是并不会直接导致内存泄漏。
B 答案:JVM奔溃的可能是内存溢出引起的,也可能是其他操作导致JVM崩溃,例如设置了错误的JVM参数等。
C 答案:内存异常,最常见的 就是 StackOverFlow了把,内存溢出,其实内存泄漏的最终结果就是内存溢出。所以,基本上C是对的答案。
D 答案:Java 进程异常消失,这个明显不对的。

题目有问题:
“程序抛内存控制的Exception”
java只有OutOfMemoryError,是Error。
java没有OutOfMemoryException。
C#倒是有OutOfMemoryException。

考点5:Java关键字 Java非法标识符

以下为 java 语法保留不能作为类名和方法名使用的是

  • A default
  • B int
  • C implements
  • D throws
显示答案/隐藏答案正确答案: ABCD

Java8关键字default也被使用了,所以正确答案应该全选
implements《注意有s结尾》是java实现接口的关键字,而implement则是普通单词,
default是保留字,
throws是抛出异常的关键字,所以正确答案是ABD

考点6:Java常见数据类型

int,String,*point,union哪些不是 Java 的数据类型?

  • A int
  • B String
  • C *point
  • D union
显示答案/隐藏答案正确答案: CD

*point是指针,java中没有这种类型
union是C系的类型,java中没有

考点7:栈

如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()
注:一个元素进栈后可以马上出栈,不用等全部进栈

  • A e3,e1,e4,e2
  • B e2,e4,e3,e1
  • C e2,e3,e4,e1
  • D 任意顺序都有可能
显示答案/隐藏答案正确答案: BC

A选项e3先出栈。那么e1,e2,e3进栈,e3出栈,如果e1想要出栈必须要e2先出栈,所以A是不可能的。

B选项
入栈顺序:e1进,e2进去又出来,e3进,e4进
出栈:e2、e4、e3、e1
C选项
入栈顺序:e1进,e2进去又出来,e3进去又出来,e4进
出栈:e2、e3、e4、e1