Red de conocimiento informático - Conocimientos de programación - Prueba escrita de programación

Prueba escrita de programación

Java orientado a objetos

1. ¿Cuál es la diferencia entre super() y this()?

This(): objeto de la clase actual, objeto de clase superpadre.

Super(): El acceso a los miembros y comportamientos de la clase padre en la subclase debe cumplir con las reglas de herencia de clases.

Esto representa el objeto actual; por supuesto, se puede acceder a todos los recursos.

En el constructor, si super() no está escrito en la primera línea, el compilador lo insertará automáticamente. Pero si la clase principal no tiene un constructor sin parámetros, o la función es privada (modificada con privada), entonces debe agregar una estructura de instanciación a la clase principal. Éste no tiene este requisito porque se crea una instancia de sí mismo.

En el método, los métodos utilizados por super y this son similares, excepto que super necesita considerar si puede acceder a los recursos de su clase principal.

2. ¿Cuál es la diferencia entre ámbito público, protegido, privado y cuando no se escribe?

Público: Disponible en diferentes paquetes, disponible en el mismo paquete y disponible dentro de una clase.

Privado: Dentro de la clase

Protegido: Están disponibles subclases de diferentes paquetes, subclases del mismo paquete y subclases dentro de una clase.

Cuando no está escrito: en el mismo paquete o clase.

3. Programe y genere la siguiente imagen.

* * * * *

* * * *

* * *

* *

*

El código es el siguiente:

Impresión de clase pública{

public static void main(String[]args){

para (int I = 0;ilt5;i) {

for(int j = 5;j gti;j -) {

sistema imprimir(" * ");

}

sistema . println();

}

}

}

4.Mecanismo de delegación de eventos JAVA y mecanismo de recolección de basura.

El concepto de mecanismo de delegación de eventos de Java, en el que una fuente genera un evento y lo envía a uno o más oyentes. En este escenario, el oyente simplemente espera hasta recibir un evento. Una vez que se acepta el evento, el oyente maneja el evento y regresa.

Mecanismo de recolección de basura La recolección de basura es el proceso de reclamar o liberar memoria asignada a objetos pero que ya no están en uso. Si un objeto no tiene referencia a él o su valor asignado es nulo, entonces el objeto auxiliar es adecuado para la recolección de basura.

5. En JAVA, ¿cómo salir de los múltiples bucles anidados actuales?

Utilice el método de retorno de interrupción.

6. ¿Qué es la serialización de Java y cómo implementarla? (Escribe un ejemplo)

Serialización: un mecanismo para procesar flujos de objetos, es decir, transmitir el contenido del objeto. Puede leer y escribir objetos de transmisión y transferir objetos de transmisión entre redes. La serialización es para resolver los problemas causados ​​​​por la lectura y escritura de flujos de objetos.

Implementación de serialización: implemente la interfaz Serializable para las clases que necesitan ser serializadas. No existen métodos que implementen esta interfaz. implementsSerializable es solo marcar el objeto como serializable y luego construir un ObjectOutputStream con un flujo de salida (como FileOutputStream). Luego, utilizando el método writeObject(Object obj) del objeto ObjectOutputStream, puede escribir el objeto cuyo parámetro es obj (es decir, guardar su estado) y restaurarlo utilizando el flujo de entrada.

7. ¿Puede un archivo fuente ".java" contener varias clases (no clases internas)? ¿Cuáles son las restricciones?

Por supuesto. Si el modificador de esta clase es público, entonces el nombre de su clase y el nombre del archivo deben ser los mismos.

8. ¿Cuáles son los métodos de clasificación? Por favor enumere. ¿Implementar clasificación rápida usando JAVA?

Los métodos de clasificación incluyen clasificación por inserción (clasificación por inserción directa y clasificación Hill), clasificación por intercambio (clasificación por burbuja y clasificación rápida), clasificación por selección (clasificación por selección directa y clasificación por montón), clasificación por combinación y clasificación por asignación (cuadro). ordenar).

Pseudocódigo para clasificación rápida.

9. La diferencia entre sobrecargar y sobrescribir. ¿Puede un método sobrecargado cambiar el tipo de valor de retorno?

Anular anular, la subclase anula el método de la clase principal y la referencia pasada por la subclase a la clase principal llama al método de la subclase.

Sobrecargar múltiples métodos de una clase con el mismo nombre y diferentes tipos de parámetros.

Ambas son manifestaciones diferentes del polimorfismo de Java.

El método sobrecargado consiste en cambiar el tipo de valor de retorno.

1, clase pública Ctest(){

sistema público estático void main(){

salida. ;

}

} 168888

(La anulación y la sobrecarga de métodos son manifestaciones diferentes del polimorfismo de Java. La anulación se produce entre clases principales y subclases. La sobrecarga es una manifestación de polimorfismo en una clase. Si un método definido en una subclase tiene el mismo nombre y parámetros que su clase principal, decimos que el método se anula en la subclase. Cuando un objeto usa este método, llamará a la definición en la subclase. Para ello, la definición en la clase principal parece estar "protegida". Si hay varios métodos con el mismo nombre definidos en una clase, son diferentes El número de parámetro o el tipo de parámetro es diferente, lo que se denomina sobrecarga de métodos.

El método sobrecargado es cambiar el tipo de valor de retorno)

Cuáles son las características de 10. ¿Clase final?

Los métodos de constantes de atributos no se pueden anular y las clases no se pueden heredar.

11. El orden de ejecución de las clases durante la herencia es generalmente una pregunta de opción múltiple. ¿Qué quieres imprimir?

Respuesta: Clase principal:

Prueba de embalaje

Clase pública FatherClass {

public FatherClass() {

system . out . println(" FatherClassCreate ");

}

}

Subclase:

Prueba de contenedor

p>

Importar pruebas. Clase principal;

La clase pública ChildClass extiende FatherClass{

public ChildClass() {

system out . p>

p>

}

Public static void main(String[] args) {

clase padre fc = nueva clase padre();

clase secundaria cc = nueva clase secundaria();

}

}

Resultado de salida:

C:>; prueba de java.

Subclase

Creación de clase padre

Creación de clase padre

Creación de subclase

12.

Prueba de embalaje;

Clase pública OuterClass {

Clase privada InterClass {

Interfaz pública(){

sistema . out . println(" crear entre clases ");

}

}

Clase externa pública(){

InterClass IC = new InterClass();

system out . println(" creación de clase externa ");

}

Public static void main(String[). ] args){

clase externa oc = nueva clase externa();

}

}

Resultado de salida:

C:>;prueba de Java/clase externa creación de clase interna creación de clase externa

13. ¿Cómo usar JAVA para implementar la clasificación y usar clases JAVA para implementar la serialización (dos formas)?

14. Por ejemplo, en el marco de la colección, ¿qué tipo de interfaz se debe implementar para implementar la comparación?

15. El código para ordenar por método de inserción es el siguiente

Prueba de empaquetado

Importar Java util

. Clasificación por inserción de categorías {

ArrayList al

public InsertSort(int num, int mod) {

al = nueva lista de matriz (num);

Random rand = new Random();

system out . println("ArrayList sort before:");

for(int I = 0; iltnumi){

al . add(new Integer(math . ABS(rand . nextint()) mod 1));

system out . al . get(I));

}

}

public void SortIt(){

Entero tempInt

int MaxSize = 1;

for(int I = 1; ltal . size(); i ){

tempInt =(Integer)al remove(I);

if(tempint . int value() gt;=((Integer)al . get(MaxSize-1)).intValue()){

al.add(MaxSize, tempInt );

tamaño máximo

sistema fuera . ( int j = 0; j ltMaxSizej ){

if((Integer)al . get(j)).

int valor()>;=tempInt.intValue()){

al.add(j, tempInt);

maxsize;

system.out. println(al . tostring());

Romper;

}

}

}

}

system . out . println(" Ordenar ArrayList después de: ");

for(int I = 0; iltal . size(); i ) {

system . out . println(" al[" I "]= " al . get(I));

}

}

Vacío estático público main(String[] args) {

insertar ordenación es = nueva inserción ordenación(10, 100);

Sí. sort it();

}

}

La forma de implementar la serialización de clases JAVA es implementar la interfaz java.io.Serializable.

La comparación en el marco de la colección requiere la implementación de la interfaz Comparable y la interfaz Comparator.

16. Programación: escriba una función para interceptar una cadena. La entrada es una cadena y el número de bytes, y la salida es una cadena interceptada por bytes. Pero asegúrese de que los caracteres chinos no se corten en dos mitades. Por ejemplo, "I ABC" 4 debe cortarse en "I AB", ingrese "I ABC Chinese DEF", 6 debe generarse como "I ABC" en lugar de. "Yo ABC chino mitad" ".

La división de vacío estático público (fuente de cadena, intnum) genera una excepción {

intk = 0;

Stringtemp =

for(int; Yo = 0; yo ltsource.length(). yo ){

byte[]b=(fuente.charAt(i) " "). getBytes();

k = k b longitud;

if(k gt;num){

Descanso;

}

temp = fuente temporal . charat(I);

}

sistema fuera . p>

15, programación Java, imprime la hora actual de ayer.

Clase pública AyerActual{

public void main(String[] args){

calendar cal = calendar . >cal.add(calendario.fecha,-1);

sistema . println(cal . gettime());

}

}

16. Lectura y escritura de archivos, implementando un contador.

public int getNum(){

int I =-1;

Pruebe {

String stri =

lector almacenado en búfer en = nuevo lector almacenado en búfer(nuevo lector de archivos(f));

while((stri=in.readLine())!=null){

I = entero parse int(stri . trim());

}

in .

e. printstacktrace();

}

Devolver I;

}

public void setNum(){

int I = getNum();

i;

Prueba {

PrintWriter out = new PrintWriter(newBufferedWriter(new FileWriter(f, false)));

out . write(string . value of(I)); //Puede deberse a la codificación. Si escribe int directamente, habrá confusión entre la codificación de Java y la codificación de Windows, así que escriba String aquí.

fuera . close();

}catch(excepción e){

e . p>

}

17, indica los resultados del siguiente programa.

Nivel A

sistema estático {

out . >Público A(){

sistema . print(" 2 ");

}

}

Extensión de clase B. A{

estático{

sistema . print(" a ");

}

public B(){

sistema . out . print(" b ");

}

}

Clase pública Hola{

Public static void main(String[] ars){

a ab = new B(); //Ejecutar aquí, resultado: 1a2b

ab = new B() ; /Ejecutar aquí, resultado: 1a2b2b

}

Nota: el segmento de código estático de una clase puede considerarse como el código de la primera vez que se carga la clase (cargado por la máquina virtual) . Para la carga de una clase, primero se debe ejecutar la construcción de su clase base y luego su propia construcción.

18. ¿Cuál es la diferencia entre clase abstracta e interfaz?

(1) La interfaz se puede implementar varias veces y la clase abstracta solo puede usar una única extensión (2) La interfaz está definida y la clase abstracta se puede definir (3) El campo predeterminado. de la interfaz se define como: publicstatic final, y el campo predeterminado de la clase abstracta es "amigable" (visible en este paquete).

Utilice clases abstractas cuando necesite acumular funciones y utilice interfaces cuando no necesite acumular funciones.

19. ¿Cuál es el mecanismo reflexivo de clase?

A través de objetos de clase se pueden obtener campos, métodos, constructores, interfaces, superclases, modificaciones, etc.

Esta clase le permite crear instancias de una instancia, establecer propiedades y activar métodos. Todo en Spring es reflexivo, struts e hibernación se desarrollan de forma reflexiva a través de clases.

20. ¿Cuáles son los paquetes y las clases principales en el mecanismo de reflexión de clases?

①Lang de Java.clase②Lang de Java.reflexión. interfaz

21. ¿Cuáles son los tres procesos para realizar cursos?

① object.getclass () ② class.class o integer . tipo(int)integer . ¿Llamar a un método en una clase?

① Generar una matriz de clases para explicar los parámetros del método ② Obtener el método a través del objeto de clase y los parámetros del método ③ Activar el método a través de método.invoke (instancia, matriz de valores de parámetros).

23. ¿Cómo convertir caracteres numéricos en números enteros (Doble)?

integer . parse int(" 1234 ")double . parse double(" 123.2 ")

24.

1 "" 1.0 ""

25. Cómo quitar dos decimales y redondear.

Double d = 1256.22d; d = d/100; system out . println(math . round(d)*

26. hora, minutos y segundos?

calendario c = calendario . getinstance();

c.set(calendario. año, 2004);

c.set(calendario. mes, 0); );

c.set(calendar.monthday,31);

system out . println(c . get(Calendar.YEAR) " " (c.get( Calendar. Mes) 1) " " c.get(Calendar. Month Day);

27. ¿Cómo obtener el número de milisegundos desde 1970 hasta ahora?

Fecha dat. = new Date(); long now = dat. gettime();

O System.currentTimeMillis()

28. >

La fecha actual más un día, si la fecha actual es diferente al mes resultante, es el último día

Toma el primer día del mes siguiente, el primer día del mes siguiente -1

public static void main(String[] args){

calendario c = calendario . getinstance();

c.set(calendario. año , 2004);

c.set(calendario.mes,0);

c.set(calendario.

Día del mes, 30);

Calendario c 1 =(Calendario)c . clone();

system out . c.get(calendario. mes) 1) " " c.get(calendario. día del mes)

c.add(calendario. día del mes,

if ( c.get(calendar.month)! =c1.get(calendar.month)){

System.out.println("es el último día");

}de lo contrario {

System.out.println("Pasado mañana no");

}

}

29. ¿formatear la fecha? /p>

Importar texto Java. formato de fecha simple;

SimpleDateFormat SDF = newSimpleDateFormat(" yyyy-MM-DD hh:MM:ss ");

Fecha dat = nueva fecha();

string str = SDF format(dat); //Convertir fecha en cadena

println(str);

Java . util . date d 1 = SDF . la cadena a una cadena codificada ISO-8859-1

String a = new String("clock".getbytes("GB 2312"),"ISO-8859-1");

String a = new String(" in ".getBytes(" iso-8859-1 "));

Debería ser String a = new String("clock ".getbytes("GB 2312 "),"ISO-8859-1");

cadena a 1 = nueva cadena(a.getbytes("iso-8859-1"));