Cinco preguntas escritas del examen diario-2020-9-13

Cinco preguntas escritas del examen diario-2020-9-13

  1. La modificación que no se puede usar al definir variables miembro en una clase es ()

    Respuesta correcta: B Su respuesta: B (correcta)

final
void
protected
static

Análisis:

void solo se puede usar para modificar métodos

final se puede utilizar para modificar métodos y variables, las variables modificadas se convierten en constantes

protegido está protegido

estático es estático

  1. Hay uno de los siguientes objetos:
public class DataObject implements Serializable{
    
    
    private static int i=0;
    private String word=" ";
    public void setWord(String word){
    
    
        this.word=word;
    }
    public void setI(int i){
    
    
        Data0bject. i=I;
     }
}

Cree un DataObject de la siguiente manera:

DataObject object=new Data0bject ( );
object. setWord("123");
object. setI(2); 

Serialice este objeto en un archivo y lea el archivo en otra JVM para la deserialización. ¿Puedo preguntar los valores de word yi en el objeto DataObject leído en este momento:

Respuesta correcta: D Su respuesta: C (incorrecta)

"", 0
"", 2
"123", 2
"123", 0

Análisis:

Los objetos se serializan, no las clases, las variables de clase no se serializarán

  1. Java no crea instancias de variables estáticas y variables transitorias modificadas durante la serialización, porque static representa un miembro de la clase y transient representa los datos temporales del objeto. Se declara que estos dos tipos de miembros de datos no se pueden serializar

La siguiente declaración sobre la compilación del programa es correcta ()

Respuesta correcta: C Su respuesta: D (incorrecta)

java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
java编译出来的目标文件与具体操作系统有关
java在运行时才进行翻译指令
java编译出来的目标文件,可以运行在任意jvm上

Análisis:

R: Java se compila en código de bytes y luego se traduce a código de máquina que puede ser reconocido por la JVM de cada sistema. Esta es la naturaleza multiplataforma de las aplicaciones multiplataforma de programación única de Java.

B: los archivos fuente de Java generan archivos de clase, que no tienen nada que ver con el sistema

C: Tenga en cuenta que el código de bytes y el código de máquina no son lo mismo. Cuando se ejecuta un programa de Java, el código de bytes se traducirá a código de máquina por jvm, por lo que Java es un lenguaje interpretado

D: Preste atención a la versión de JVM, como una persona que usa pantalones, ¿alguien puede usar un par de pantalones?

  1. ¿Cuál de las siguientes afirmaciones sobre el manejo de excepciones de JAVA es correcta ()

Respuesta correcta: ABD Su respuesta: AC (incorrecta)

finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
throws是用来声明一个成员方法可能抛出的各种非运行异常情况
final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
throw是用来明确地抛出一个异常情况

Análisis:

throws se usa para declarar los tipos de excepción que el método no necesita manejar en el método, y pueden ser múltiples clases de excepción seguidas por el nombre de la clase de excepción en el método

Throw se usa para lanzar un objeto de una clase de excepción específica. El objeto de excepción usado en el método solo puede ser una entidad de tipo de excepción. El bloque try debe ser el mismo que el bloque catch o finalmente, y no puede existir solo. Los dos deben aparecer como uno.

El bloque finalmente se ejecutará siempre, independientemente de si hay un error. Pero si el bloque de instrucción try o el bloque de instrucción catch ejecutado usa la instrucción de salida del sistema JVM, el bloque finalmente no se ejecutará. Generalmente, colocamos el código para cerrar el recurso en el archivo. Garantiza que los recursos siempre se puedan cerrar

Entonces, mire esta pregunta. A definitivamente tiene razón. C no tiene nada que ver con el manejo de excepciones, así que no lo elijo. Incluso si importa, está mal

final se utiliza para declarar propiedades, métodos y clases. Indique respectivamente que la propiedad no se puede cambiar, que el método no se puede invalidar y que la clase no se puede heredar.

Entonces, la opción C dice que el método no se puede heredar, no se puede anular.

  1. Con respecto a la palabra clave volátil, ¿cuál de las siguientes descripciones es incorrecta?

    Respuesta correcta: BD Su respuesta: AC (incorrecta)

    用volatile修饰的变量,每次更新对其他线程都是立即可见的。
    对volatile变量的操作是原子性的。
    对volatile变量的操作不会造成阻塞。
    不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
    

Análisis:

Una vez que una variable compartida (variable miembro de clase, variable miembro estática de clase) es modificada por volátil, tiene dos semánticas:

  1. Esto garantiza la visibilidad de diferentes subprocesos que operan en esta variable, es decir, si un subproceso modifica el valor de una variable, el nuevo valor es inmediatamente visible para otros subprocesos.
  2. Está prohibido reordenar instrucciones.

Volatile solo proporciona una garantía de que cuando se accede a la variable, el último valor se lee de la memoria cada vez, y el valor no se almacena en caché en el registro; se leerá de la memoria cada vez.

Y la modificación de esta variable, volátil no aporta garantía atómica.

Debido a las actualizaciones oportunas, es probable que otro hilo pueda acceder al último valor de variable y no pueda salir del ciclo

El contador debe utilizar la protección de bloqueo en subprocesos múltiples.

Supongo que te gusta

Origin blog.csdn.net/qq_37924905/article/details/108570376
Recomendado
Clasificación