¿Cuál es la diferencia entre C y C?
Hay muchos tipos básicos de C, estructuras adicionales, uniones, enumeraciones, matrices y punteros, los punteros C pueden apuntar a objetos, pero no pueden apuntar a objetos
No existen tipos de enumeración y unión en Java porque Java los considera innecesarios. C/C tendrá grandes cambios si se eliminan los elementos faltantes del lenguaje en Java, por lo que generalmente se considera que Java es más liviano y optimizado que C/C
Java usa el juego de caracteres Unicode y C/C normalmente utiliza el juego de caracteres ASCII. ASCII es un subconjunto de Unicode y los programadores están acostumbrados a sentirse menos diferentes que ASCII.
Los tipos booleanos de Java no se pueden convertir a otros tipos y viceversa. C ha introducido recientemente el tipo bool, que representa el tipo booleano, y el tipo entero como juicio lógico.
¿La plantilla es "universal"? La idea de programación es diferente de la "idea de programación orientada a objetos". C lo ha soportado en gran medida. Este nuevo método de programación, especialmente con la aparición de STL
La programación genérica también es compatible con Java, sin embargo, Sun planea introducir plantillas Java
C admite la sobrecarga de operadores, que es una característica muy importante en múltiples herramientas de programación para la abstracción y generalización de datos. Permite que los objetos cuaternarios sean iguales a los tipos de datos básicos.
Java no admite este polimorfismo para reducir la complejidad.
p> p>
¿Estos dos lenguajes admiten la sobrecarga de métodos?
En C, esta función debe usarse para determinar dinámicamente qué función llamar, lo que permite que la palabra clave virtual se herede automáticamente. para admitir polimorfismo
¿Qué funciones no son miembros virtuales? El enlace estático determina a qué versión llamar en el momento de la compilación
Todos los métodos en Java excepto el enlace estático, final, privado, estático y dinámico. proceso
Concepto de constructor de copia C, llamado automáticamente en tres situaciones
El objeto inicializa un objeto y toma otro objeto como parámetro de la llamada a la función. Otro objeto se utiliza como parámetro de la llamada de función
Valor de retorno de la función de objeto
Por lo general, cuando un objeto necesita ser "copiado en profundidad" (Plataforma de entretenimiento Qiangui: "Tutorial de programación en C "), necesitamos predefinir el "constructor de copia" y la "función sobrecargada del operador de asignación" y el "destructor"; de lo contrario, el dispositivo de compilación generará automáticamente la función predeterminada "bitcopy".
Si la clase contiene miembros de puntero o miembros de referencia, las tres funciones predeterminadas significan errores
Java no tiene estructura sintáctica ni lógica semántica
C admite funciones en línea, lo que puede evitar pilas Llamadas a funciones en para mejorar la eficiencia de la operación
Semántica de llamadas de Java
La lista de inicialización del constructor se usa así: Primero, la construcción del objeto de clase base se llama de acuerdo con el orden en que se llama la clase base. El constructor se hereda y luego llama al constructor del objeto miembro en el orden de la declaración para construir el constructor del objeto miembro.
La inicialización de Java no inicializa la lista. aparecerá una lista en el mecanismo del orden de construcción de la lista
Son básicamente lo mismo:
Las variables estáticas llaman al constructor de la clase base para inicializar el objeto de la clase base
Bloque de inicialización estática (Java) /gt .static (estático) y /gt; inicialización de variable de instancia
El resto del constructor
Java usa la palabra clave abstracta para modificar un método abstracto o clase abstracta
La sintaxis de C es "función virtual pura", "clase abstracta"
Además, el uso de clases abstractas como clases base en la jerarquía de herencia también proporciona conceptos comunes que son implementados por objetos que no son instanciados directamente
En métodos abstractos y subclases y clases de clases abstractas en Java, la palabra clave final sigue al método o variable
La clase final no se pueden heredar
Métodos finales que no pueden ser sobrecargados por subclases
Las variables finales son constantes
Palabras clave en C, las constantes se pueden definir usando const o #define
Miembros constantes Las funciones también pueden ser:
Palabras clave en C, las constantes se pueden definir usando const o #define
Palabras clave en C, las constantes también pueden ser:
Palabras clave en C.
e., "Función miembro ordinaria", cuando una función miembro constante apunta a datos miembros o llama a una función miembro no constante, el compilador se quejará
No debemos declarar funciones de datos miembros como constantes
La sintaxis y la semántica de la palabra clave estática en Java y C son básicamente las mismas
Las variables miembro estáticas se denominan variables de clase, como todos los objetos****
A ::X (C): debe inicializarse fuera del cuerpo de la clase
AX (código Java): BR/gt debe inicializarse dentro del cuerpo de la clase Los métodos de miembros estáticos también se denominan métodos de clase y se utilizan para; acceder a variables estáticas
A:: F () (C)
AF () (Java)
Ambos tienen sintaxis de clase interna y de clase local, y no ¿No hay una función amigable y una generalización amigable? Concepto, semántica estricta
Java admite paquetes de métodos externos y no permite que las clases utilicen métodos externos
C admite la palabra clave amigo, lo que permite que los métodos de miembros privados a los que se accede externamente accedan a miembros privados del class No es un lenguaje de programación puramente orientado a objetos
Las clases o interfaces Java se pueden utilizar para fines públicos o no públicos, pero las clases C no
La sintaxis de acceso del. Tres tipos similares son ligeramente diferentes. Diferente
C también hereda modificadores de permisos, pero Java no
Clase A: protege B, público ****C (C)
La clase A extiende B (JAVA)
La súper palabra clave de Java se refiere a la clase principal del objeto y generalmente se usa para llamar al constructor o método de la clase principal
C no tiene la palabra clave super
Ambos, ver objetos
El concepto de paquetes Java y la organización de clases son fáciles de encapsular e implementar, y también son beneficiosos para temas como como seguridad. C no tiene el concepto de una clase a la que pueda acceder cualquier clase
Las miniaplicaciones Java se pueden incrustar en documentos HTML y luego descargarlas y ejecutarlas a través de un navegador web
API Java, soporte especial para comunicación de red
C no tiene capacidades de red integradas
Los programadores de C deben realizar explícitamente la administración de memoria dinámica utilizando la función de eliminación del operador rest o free(), destructor para liberar objetos y espacio de datos dinámico asignado; de lo contrario, se producirán "pérdidas de memoria"
En Java, la recolección de basura es automática. Cuando se libera la última variable de referencia del objeto, el objeto se convierte en candidato para la recolección de basura
Java no admite destructores
El método finalize() se utiliza para liberar la memoria no abierta previamente. recursos como identificadores de archivos/gt; el código fuente de Java se compila en código de bytes (archivos de clase), y el código binario de bytes es el único código reconocido por la JVM en un nivel inferior. Java no tiene nada que ver con la arquitectura.
C multiplataforma se compila directamente en código de máquina binario en la plataforma básica y lo ejecuta la CPU en la plataforma
Por lo tanto, al interpretar y en ejecución, los programas Java son relativamente lentos, es más lento
El lenguaje Java admite operaciones de subprocesos múltiples, sincronización y exclusión mutua, lo que permite subprocesos concurrentes
C Este mecanismo incorporado
Javadoc.