Cinco preguntas del examen escrito diario de Java-2020-9-16

Cinco preguntas del examen escrito diario de Java-2020-9-16

/ ... / se puede anidar // los comentarios también se pueden anidar / ... / comentario.

Respuesta correcta: B Su respuesta: B (correcta)

正确
错误

La clase interna (también llamada clase interna miembro) puede tener 4 tipos de derechos de acceso. ()

Respuesta correcta: A Su respuesta: B (incorrecta)

正确
错误

Análisis:

Puedes entender la clase interna como un miembro de la clase. Los miembros tienen 4 derechos de acceso, ¡y también la clase interna! Son permisos de acceso privados, protegidos, públicos y predeterminados.

  • Los miembros estáticos no se pueden definir en clases internas

  • La clase interna puede acceder directamente a las variables miembro en la clase externa,

  • La clase interna se puede definir fuera del método de la clase externa, también se puede definir en el cuerpo del método de la clase externa

    • El tipo de acceso de la clase interna definida fuera del cuerpo del método puede ser de cuatro tipos: público, protegido, predeterminado, privado, etc. -Al crear un objeto de instancia de la clase interna, primero debe crear un objeto de instancia de la clase externa y luego usar esta clase externa Objeto de instancia para crear un objeto de instancia de la clase interna
    • No puede haber ningún modificador de tipo de acceso delante de la clase interna definida en el método, al igual que la variable local definida en el método, pero el modificador final o abstracto se puede usar frente a la clase interna. Este tipo de clase interna es invisible para otras clases, y otras clases no pueden hacer referencia a este tipo de clase interna, pero los objetos de instancia creados por este tipo de clase interna se pueden pasar a otras clases para su acceso.
  • La palabra clave estática se puede agregar delante de la clase interna definida fuera del método para convertirse en una clase anidada estática, que ya no tiene las características de una clase interna, por lo que en un sentido estricto, no es una clase interna.

¿Cuál es el resultado de la siguiente ejecución de código ()?

public class Demo {
    
    
    class Super {
    
    
        int flag = 1;

        Super() {
    
    
            test();
        }

        void test() {
    
    
            System.out.println("Super.test() flag=" + flag);
        }
    }

    class Sub extends Super {
    
    
        Sub(int i) {
    
    
            flag = i;
            System.out.println("Sub.Sub()flag=" + flag);
        }

        void test() {
    
    
            System.out.println("Sub.test()flag=" + flag);
        }
    }

    public static void main(String[] args) {
    
    
        new Demo().new Sub(5);
    }
}

Respuesta correcta: A Su respuesta: C (incorrecta)

Sub.test() flag=1
Sub.Sub() flag=5

Sub.Sub() flag=5
Sub.test() flag=5

Sub.test() flag=0
Sub.Sub() flag=5

Super.test() flag=1
Sub.Sub() flag=5

Análisis:

El orden de ejecución del código en herencia es:

1. El objeto estático de la clase principal, el bloque de código estático de la clase principal

2. Objeto estático de subclase, bloque de código estático de subclase

3. La clase principal es un objeto no estático, la clase principal es un bloque de código no estático

4. Constructor de clase principal

5. Subclase de objeto no estático, subclase de bloque de código no estático

6. Constructor de subclase

Para esta pregunta: cuando solo se piensa en el nuevo Sub (5), la clase padre inicializa int flag = 1, y luego ejecuta el constructor de superclase Super (), el método test () ejecutado en el constructor de superclase, factor La clase reescribe el método test (), por lo que el método test () en el constructor de la clase principal realmente ejecuta el método test () de la subclase, por lo que la salida es Sub.test () flag = 1, y luego se ejecuta la subclase El constructor Sub (5) asigna el indicador a 5, por lo que el resultado de la salida es el indicador Sub.Sub () = 5. Finalmente, se eligió A.

A partir de la pregunta anterior, pensé en una pregunta similar que escribí la última vez:

package com.lbl.bstTest;

public class Base {
    
    
    private String baseName = "base";

    public Base() {
    
    
        callName();
    }

    public void callName() {
    
    
        System.out.println(baseName);
    }

    static class Sub extends Base {
    
    
        private String baseName = "sub";

        public void callName() {
    
    
            System.out.println(baseName);
        }
    }

    public static void main(String[] args) {
    
    
        Base b = new Sub();
    }
}

resultado de la operación:

Inserte la descripción de la imagen aquí

¿Por qué se llama?

Parece ser similar a la pregunta anterior. Después de mi investigación, descubrí que el problema radica en

//下面一题定义baseName是private私有的,所以子类无法继承,所以得到结果是null
private String baseName = "base";
//上面定义是的default类型,所以子类可以使用,所以结果是1
 int flag = 1;

¿Cuál de las siguientes opciones es el cálculo correcto del coseno de 42 grados (ángulo)?

Respuesta correcta: C Su respuesta: D (incorrecta)

double d=Math.cos(42)
double d=Math.cosine(42)
double d=Math.cos(Math.toRadians(42))
double d=Math.cos(Math.toDegrees(42))

Análisis:

Calcule el valor del coseno usando el método cos () de la clase Math

Porque la unidad del parámetro en Math.cos es radianes

  • toRadians () es convertir ángulos a radianes
  • toDegrees () convierte radianes en ángulos

El recolector de basura CMS no involucra subprocesos de usuario en esas etapas

Respuesta correcta: AC Su respuesta: A (incorrecta)

初始标记
并发标记
重新标记
并发清理

Análisis:

** Subprocesos a nivel de usuario ** se refiere a subprocesos que se implementan en programas de usuario sin soporte de kernel. No dependen del núcleo del sistema operativo. Los procesos de aplicación utilizan la biblioteca de subprocesos para proporcionar funciones para crear, sincronizar, programar y administrar subprocesos Para controlar el hilo del usuario.

El proceso GC de CMS tiene 6 etapas (4 concurrentes, 2 suspende otras aplicaciones)

1. Marca inicial STW

2. Marcado concurrente

3. Limpieza previa simultánea (limpieza previa simultánea)

4. Comentario final (comentario STW)

5. Barrido concurrente

6. Reinicio simultáneo

Al marcar por primera vez y volver a marcar, debemos suspender otras aplicaciones, entonces los hilos de usuario no participarán en estas dos etapas

Supongo que te gusta

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