El orden de ejecución de los objetos instanciados en el lenguaje Java
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 p>
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 p>
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ánticaEn 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 p>
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.