Red de conocimiento informático - Material del sitio web - El orden de ejecución de los objetos instanciados en el lenguaje Java

El orden de ejecución de los objetos instanciados en el lenguaje Java

¡¡¡El lenguaje C no sólo es adecuado para exámenes!!!

UNIX, vulnerabilidades de WINDOWS, microcontroladores. ¡¡¡C se usa en muchos lugares!!!

El lenguaje C es la base del lenguaje de alto nivel. Para aprender el lenguaje informático, puedes aprender C primero, pero si no lo necesitas en el futuro. También puedes aprender C ++ directamente, pero es un poco más difícil comenzar.

El lenguaje C es programación de procedimientos, que generalmente resulta en el llamado programa de microcontrolador, es decir, todas las funciones solo pueden estar contenidas en unos pocos (generalmente uno) módulos de código.

C++ es programación orientada a objetos (POO), que elimina las deficiencias de la programación procedimental de C. La programación orientada a objetos normalmente implica el uso de muchos módulos de código, cada uno con una funcionalidad específica y de forma aislada. ¡La programación orientada a objetos proporciona una diversidad muy poderosa, lo que aumenta en gran medida las posibilidades de reutilización del código!

Una de las ventajas destacadas del lenguaje C es que es adecuado para múltiples sistemas operativos (como DOS y UNIX) y múltiples modelos de máquinas.

Por supuesto, el lenguaje C también tiene sus propias deficiencias, como:

Las restricciones gramaticales del lenguaje C no son demasiado estrictas: las restricciones gramaticales del lenguaje C no lo son Demasiado estricto y no hay restricciones sobre el tipo de variables. Estricto, lo que afecta la seguridad del programa, no hay verificación familiar para subíndices fuera de límites, etc. Desde una perspectiva de aplicación, C es más difícil de dominar que otros lenguajes de alto nivel.

En resumen, el lenguaje C tiene las características tanto de un lenguaje de alto nivel como de un lenguaje ensamblador; es a la vez un lenguaje de diseño de sistemas exitoso y, a veces, un lenguaje de programación de uso común que se puede utilizar para escribir programas de aplicación; no depende del hardware de la computadora, se puede usar para escribir varios programas del sistema; es un lenguaje de programación popular y ampliamente utilizado.

C++: Lenguaje orientado a objetos. Es un lenguaje independiente y no depende del lenguaje C. Es el lenguaje de programación más complejo. VC es un lenguaje compilado utilizando el compilador Microsoft Visual C++ y es ligeramente diferente del C++ estándar.

Cada variable en un programa Java es un tipo de datos básico (booleano, carácter, byte, corto, int, largo, punto flotante, doble) o un par de referencias a objetos

C++ tiene muchos tipos básicos, además de estructura, unión, enumeración, matriz y puntero, los punteros de C++ pueden apuntar a objetos o no.

Java No hay tipos de enumeración ni unión porque Java no ve la necesidad. para usarlos. La eliminación de elementos de lenguaje opcionales es uno de los principales cambios que Java ha realizado en C/C++. Por lo tanto, generalmente se considera que Java es más liviano y optimizado que C++.

Java usa el juego de caracteres Unicode, mientras que C++ generalmente usa. Juego de caracteres ASCII. Pero ASCII es un subconjunto de Unicode, por lo que los programadores que estén acostumbrados a usar ASCII no sentirán la diferencia.

El tipo booleano en Java no se puede convertir a ningún otro tipo y viceversa, C++ ha introducido recientemente el bool. tipo, que representa booleano,

La plantilla es una "idea de programación genérica", que es completamente diferente de la "idea de programación orientada a objetos". C ++ admite en gran medida este nuevo método, especialmente después de la aparición de. STL

Java actualmente no admite programación genérica, pero se dice que Sun introducirá programación genérica en Java. Sun tiene planes de introducir plantillas en Java

C++ admite la "sobrecarga de operadores", una característica polimórfica importante y una poderosa herramienta para la abstracción de datos y la programación genérica. Permite realizar cuatro operaciones aritméticas directamente sobre objetos, al igual que los tipos de datos básicos

Java no soporta este mecanismo polimórfico, además para reducir la complejidad

Ambos lenguajes soportan métodos de sobrecarga

En C++, para permitir que el tiempo de ejecución decida dinámicamente qué función llamar, se debe modificar una función usando virtual.

Para admitir el polimorfismo, la palabra clave virtual se heredará automáticamente

Cualquier función miembro que no sea modificada por virtual (incluida la estática) está vinculada estáticamente, es decir, la versión llamada está bien en el momento de la compilación

Todos los métodos en Java están vinculados estáticamente, excepto los estáticos, finales y privados.

C++ tiene el concepto de "constructor de copia", que se llama automáticamente en tres situaciones

Inicializar un objeto con otro objeto

El objeto se utiliza como real parámetros de llamadas a funciones

Los objetos se utilizan como valores de retorno de funciones

Por lo general, cuando se requiere una "copia profunda" de un objeto (Chien Neng: "Tutorial de programación en C++" ), necesitamos predefinir "constructor de copia", "función sobrecargada del operador de asignación" y "destructor"; de lo contrario, el compilador generará automáticamente una función predeterminada en forma de "copia bit a bit" si la clase contiene punteros o miembros de referencia; Estas tres funciones predeterminadas implicarán errores

Java no tiene tal estructura sintáctica ni lógica semántica

C++ admite funciones en línea, lo que puede evitar llamadas a la pila y mejorar la eficiencia

<. p>Java no tiene esta semántica

En C++, la lista de inicialización del constructor se usa así. En C++, la lista de inicialización se usa así: primero se llama al constructor de la clase base. orden de herencia Para construir el objeto de clase base, luego llame al constructor del objeto miembro en el orden de declaración para construir el objeto miembro y finalmente inicialice las variables miembro que aparecen en la lista.

Java no lo hace. utilice la lista de inicialización como mecanismo de construcción

Su orden de construcción es básicamente el mismo:

Inicialización estática de variables

Bloque de inicialización estática (Java)

Construido llamando al constructor de la clase base Objeto de clase base

Inicialización de variables de instancia

El resto del constructor

Java usa el resumen palabra clave para calificar métodos abstractos o clases abstractas

La sintaxis correspondiente de C++ es "función virtual pura" y "clase abstracta"

Ambas usan clases abstractas como clases base en la jerarquía de herencia.

Java tiene la clave final Word, puede modificar clases, métodos o variables

Las clases finales no se pueden heredar

Los métodos finales no se pueden sobrecargar con subclases

Las variables finales son constantes

C++ no tiene esta palabra clave, puedes usar const o #define para definir constantes

const también puede modificar funciones miembro, es decir, "funciones miembro constantes". Al modificar datos miembros o llamar a funciones miembro no constantes, el compilador informará un error

Debemos declarar funciones que no modifican datos miembros como constantes

En Java y C++, la palabra clave estática La sintaxis y la semántica son básicamente las mismas.

Las variables miembro estáticas, también conocidas como variables de clase, están controladas por todos los objetos de la clase.

A:x (C++): Deben inicializarse fuera del cuerpo de la clase

A.x (Java): Deben inicializarse dentro del cuerpo de la clase

Métodos de miembros estáticos, también conocidos como métodos de clase que acceden a variables estáticas

A::f() (C++)

A.f() (Java)

Ambos Ambos tienen la sintaxis y la semántica de clases internas y clases locales

Java no tiene los conceptos de funciones amigas y clases amigas. Admite estrictamente la encapsulación y no permite que métodos externos accedan a miembros privados de. la clase.

Y C++ admite la palabra clave amigo, lo que permite que métodos externos accedan a miembros privados de la clase, por lo que no es un lenguaje de programación puramente orientado a objetos.

Una clase o interfaz en Java se puede modificar públicamente o no, mientras que una clase en C++ no se puede modificar

La semántica de estos tres derechos de acceso es la misma, pero la sintaxis es ligeramente diferente

C++ también tiene modificadores de herencia, y Java no

Clases A: protegida B, pública C (C++)

clase A extiende B (Java)

Java tiene la palabra clave super, que se refiere al objeto principal y generalmente se usa para llamar al objeto principal. El constructor o método general

C++ no tiene la palabra clave super

Ambos tienen la palabra clave this , que se refiere al objeto actual

Java tiene un concepto de paquete, organiza clases para facilitar el empaquetado y la implementación, y es propicio para la seguridad de clases. C ++ no tiene este concepto, cualquier clase puede acceder a una clase;

Un subprograma de Java se puede incrustar en un documento HTML y luego descargarse y ejecutarse en el navegador web.

La API de Java admite específicamente la comunicación de red

C++ no tiene funciones integradas. en capacidades de red

Los programadores de C++ deben implementar explícitamente la administración de memoria dinámica, usar el operador de eliminación o la función free() en el destructor para liberar objetos y otro espacio de datos asignado dinámicamente. Utilice el operador de eliminación o la función free() en el destructor para liberar objetos y otro espacio de datos asignado dinámicamente; de ​​lo contrario, provocará "pérdidas de memoria".

Por otro lado, en Java, la recolección de basura es automática. . Cuando se libera la última variable de referencia de un objeto, el objeto se convierte en candidato para el recolector de basura

Por lo tanto, Java no admite destructores

El método finalize() se utiliza principalmente para lanzamiento Recursos que no son de memoria abiertos anteriormente, como identificadores de archivos

El código fuente de Java se compila en código de bytes (archivos .class). Bytecode es un código binario de bajo nivel que solo la JVM comprende y es independiente de un procesador específico. Debe ser interpretado y ejecutado por la JVM instalada en el sistema operativo y convertido al código de máquina de la plataforma correspondiente, por lo que Java es de arquitectura neutral y multiplataforma

mientras que C++ se compila directamente en el sistema subyacente. plataforma Código de máquina binario, por lo tanto, los programas Java son más lentos cuando se interpretan y ejecutan

El lenguaje Java admite subprocesos múltiples, lo que permite la sincronización y exclusión mutua de subprocesos concurrentes

C++ no tiene esto Un mecanismo incorporado

Javadoc.exe puede convertir el contenido y la estructura de un programa Java en un documento en formato HTML

Javadoc.exe.