He estado cambiando de C# a Java por un tiempo. Me gustaría resumir cuál creo que es la diferencia entre la sintaxis de Java y C#. Si tienen opiniones diferentes, me gustaría preguntarles a todos cuándo Haihan aprendió Java por primera vez. , sintió que la sintaxis era más o menos la misma que la de C# (debería decir C# Aproximadamente igual que Java, después de todo, C# de Microsoft imita intencionalmente los hábitos de sintaxis de Java)
Bill Gates dijo una vez: "Java es el lenguaje de programación más destacado"
Más cerca de casa, exploremos las diferencias de sintaxis entre Java y C#. . .
1. Espacios de nombres y paquetes
Para organizar clases que implementan funciones similares juntas, C# introduce el concepto de espacio de nombres (espacio de nombres)
El equivalente de esto en Java se llama paquete.
2. Diferencias en el control de acceso a las clases
C# tiene sólo dos tipos: público y predeterminado (igual que interno)
Todas las clases pueden acceder al público (en el mismo proyecto y en diferentes proyectos).
interno (el valor predeterminado es interno cuando no se agrega ningún carácter de control antes de la palabra clave de clase), lo que indica que solo se puede acceder a la clase en el mismo proyecto
Sólo hay dos tipos de Java: público y predeterminado
Todas las clases pueden acceder a public de forma predeterminada (cuando no se agrega ningún carácter de control antes de la palabra clave de clase), solo pueden acceder a él todas las clases del mismo paquete.
3. Control de acceso de los miembros de la clase
Hay cuatro tipos en C#: público, protegido, privado (predeterminado), interno (tenga en cuenta que interno y predeterminado son diferentes aquí)
Todas las clases pueden acceder al público.
Sólo se puede acceder a protected mediante subclases.
Solo se puede acceder a privado (es decir, de forma predeterminada cuando no se escriben caracteres de control) dentro de la clase.
Se puede acceder al interno mediante clases en el mismo proyecto.
Java también tiene cuatro tipos: público, protegido, privado y predeterminado.
Todas las clases pueden acceder al público.
Se puede acceder a protected mediante otras clases en el mismo paquete o mediante subclases en diferentes paquetes.
Privado solo se puede usar dentro de una clase y otras clases en este paquete pueden acceder a él de manera predeterminada. Si una subclase y la clase principal están en paquetes diferentes, la subclase no puede acceder a los miembros de control de acceso predeterminados en la clase principal.
4. La herencia de clases en C# se implementa mediante dos puntos: y extends se usa en Java.
La interfaz se implementa mediante dos puntos: en C# y se implementa en Java.
Las clases selladas se implementan usando sellado en C# y final en Java.
Las constantes se implementan como constantes en C# y finales en Java.
Las propiedades en C# se implementan usando bloques de código set y get. En Java, los campos similares a los de C# generalmente se usan para representar propiedades, o se implementan usando constructores setter y getter.
Existe un concepto de clase parcial en C# pero no en Java
Hay un atributo modificado de solo lectura en C# que es de solo lectura, pero no en Java.
Hay métodos virtuales modificados y anulados y métodos anulados en C#, pero no en Java. Los métodos de la clase principal predeterminada en Java son todos virtuales.
Existen conceptos de bloques de código estático{} y sincronizado{} en Java, pero no en C#.
Existe un concepto de etiquetas (como etiquetaA:) en Java, pero no en C#
En C#, la subclase usa base.method() para llamar al método de la clase principal, y en Java, se usa super.method().
En C#, se usa para determinar si una instancia pertenece a una determinada clase, y en Java, se usa instancia de.
En C#, se usa foreach(int i in array) para recorrer cada elemento de la matriz, y en Java, se usa for(int i: array)