Resumen de los conceptos básicos de Java (superdetallado)

Características del lenguaje Java

1. Orientado a objetos

Orientado a objetos (OOP) es la base del lenguaje Java y una característica importante del lenguaje Java. Concepto orientado a objetos: todo en la vida se puede llamar objeto, y todo lo que se puede ver en todas partes en la vida es un objeto. Podemos extraer y extraer las características de estado (atributos) y las características de comportamiento (métodos) de estas cosas. representado en una forma fija.

2. Simple y fácil de usar

El lenguaje Java es una evolución de C y C++. Omite todas las funciones incomprensibles y confusas (como los punteros) del lenguaje C y se vuelve más riguroso, conciso y fácil de usar.

3. Robustez

El mecanismo de verificación de seguridad de Java elimina muchos errores de programa en el azul. Además, el lenguaje Java también tiene muchas funciones para garantizar la estabilidad y robustez del programa (mecanismo de tipo fuerte, manejo de excepciones, recolección automática de basura, etc.), lo que reduce los errores de manera efectiva y hace que las aplicaciones Java sean más robustas.

4. Seguridad

Java se suele utilizar en el entorno de red, por esta razón, Java proporciona un mecanismo de seguridad para prevenir ataques de código malicioso, lo que puede mejorar la seguridad del sistema.

5. Independencia de la plataforma

La independencia de la plataforma Java se realiza mediante la máquina virtual Java, y el software Java puede ejecutarse normalmente en cualquier entorno informático sin estar limitado por el hardware informático y el sistema operativo.

6. Admite subprocesos múltiples

No hay un mecanismo integrado de subprocesos múltiples en el lenguaje C++, por lo que se debe invocar la función de subprocesos múltiples del sistema operativo para la programación de subprocesos múltiples, mientras que el lenguaje Java proporciona soporte de subprocesos múltiples. El mecanismo de subprocesos múltiples permite que el programa de aplicación ejecute múltiples tareas en paralelo al mismo tiempo, lo que permite que el programa tenga una mejor interactividad y rendimiento en tiempo real.

7. Distribuido (programación de red de soporte)

El lenguaje Java tiene capacidades de red poderosas y fáciles de usar y es muy adecuado para desarrollar programas de computación distribuida. Java proporciona una interfaz de programación de aplicaciones de red (java.net), que nos permite acceder de forma remota a objetos a través de URL, Socket, etc.

8. Conviven la compilación y la interpretación

Java es un lenguaje donde la compilación y la interpretación coexisten


Fundamentos de la sintaxis de Java

Identificador: una secuencia válida de caracteres utilizada para identificar nombres de clases, nombres de objetos, nombres de variables, nombres de métodos, nombres de tipos, nombres de matrices y nombres de archivos.

Identificadores legales:

  • Consta de letras, números, guión bajo "_", signo de dólar "$" o "¥", y el primer carácter no puede ser un número.
  • Las palabras clave de Java y las palabras reservadas no se pueden utilizar como identificadores.
  • Los identificadores distinguen entre mayúsculas y minúsculas.


inserte la descripción de la imagen aquí
Palabras clave: palabras reservadas a las que se les ha dado un significado específico en el lenguaje Javaconst、goto : no se usan en las versiones de Java, pero pueden usarse como palabras clave en versiones futuras

Variable: una cantidad que se puede cambiar mientras se ejecuta el programa. Para usar una variable en un programa, primero debe crearla y darle un nombre, y especificar el tipo de información que puede almacenar, esto se llama "declaración de variable", también llamada creación de un contenedor.

Uso de variables:

  • Declaración de variable: nombre de variable de tipo de datos;
  • Asignación de variables: nombre de variable = datos;
  • Operación de variables: poner en una declaración de impresión para la salida o la operación

Hay tres tipos de anotaciones en Java:

  • comentario de una sola línea
  • comentario de varias líneas
  • Notas de documentación

tipo de datos

inserte la descripción de la imagen aquí

Tipos de datos básicos (8), también conocidos como tipos de datos primitivos: tipos
inserte la descripción de la imagen aquí
de datos de referencia (3): arreglos, clases, interfaces

Tipo de conversión:

  • Conversión automática de tipos, también llamada conversión implícita
  • Conversión de tipo coercitivo, también llamada conversión explícita
    inserte la descripción de la imagen aquí

operador

Operador: un símbolo especial que se utiliza para representar operaciones de datos, asignaciones y comparaciones de números y enteros

Clasificación de operadores: operadores aritméticos, operadores de asignación, operadores de comparación, operadores lógicos, operadores ternarios

1. Operador aritmético
inserte la descripción de la imagen aquí
2. Operador de asignación
inserte la descripción de la imagen aquí
3. Operador de comparación
inserte la descripción de la imagen aquí
4. Operador lógico
inserte la descripción de la imagen aquí
5. Operador ternario
Expresión condicional b?x:y;, primero calcule la condición b y luego haga un juicio. Si el valor de b es verdadero, se calcula el valor de x, y el resultado de la operación es el valor de x; de lo contrario, se calcula el valor de y, y el resultado de la operación es el valor de y.
inserte la descripción de la imagen aquí


Declaración de control de flujo de Java

elegir estructura

si declaración: if(条件表达式){ 一条或多条语句 };

inserte la descripción de la imagen aquí

sentencia if else: sentencia if(条件表达式) {语句块1} else {语句块2}
inserte la descripción de la imagen aquí
if multi-branch: sentencia
inserte la descripción de la imagen aquí
switch switch:
inserte la descripción de la imagen aquí

estructura de bucle

En el programa, cuando desee realizar un determinado trabajo repetidamente, puede utilizar la declaración de bucle, que incluye: for loop, while loop, do...while loop.

sentencia de bucle for: sentencia de bucle
inserte la descripción de la imagen aquí
while: sentencia de bucle
inserte la descripción de la imagen aquí
do...while:
inserte la descripción de la imagen aquí

Salto de proceso

Declaración de salto de proceso:break,continue

  • romper: finaliza el juicio de condición de caso en el interruptor y finaliza el bucle en el cuerpo del bucle
  • continuar: actúa en el cuerpo del bucle, finaliza el bucle actual del cuerpo del bucle y entra en el siguiente bucle

formación

Una matriz es una colección de datos, un contenedor que se utiliza para almacenar cualquier tipo de datos, incluidos los tipos de datos primitivos y los tipos de datos de referencia, pero una vez que se especifica el tipo de matriz, solo se puede usar para almacenar datos del tipo especificado.

Hay tres formas de declarar una matriz:

  • tipo de datos [] nombre de matriz = nuevo tipo de datos [longitud];
  • tipo de datos [] nombre de matriz = {datos, datos, ..., datos};
  • datatype[] arrayname = new datatypelength[] {datos,datos,…,datos};

Matriz unidimensional:

  • Declaración de variable de matriz:
    sintaxis: 数据类型[] 数组名;, como: int[] num;, double[] d;,String[] str;

  • La creación de objetos de matriz:
    sintaxis: 数组名 = new 数据类型[长度];, como: num = new int[4];, la longitud de la matriz no se puede cambiar después de declarar su longitud

  • Asignación:
    Sintaxis: 数组名[下标] = 数据;, como: num[0] = 3;

  • El uso y recorrido de los elementos de la matriz:
    Sintaxis: 数组名[下标], obtener el subíndice especificado es el dato.
    inserte la descripción de la imagen aquí

Matriz bidimensional:

  • Declaración de variable de matriz:
    sintaxis: 数据类型[][] 数组名;, como: int[][] num;, double[][] d;,String[][] str;

  • La creación de objetos de matriz:
    sintaxis: 数组名 = new 数据类型[外长度][内长度];, como: num = new int[4][3];, la longitud de la matriz no se puede cambiar después de declarar su longitud

  • Asignación:
    Sintaxis: 数组名[外下标][内下标] = 数据;, como: num[0][0]= 3;

  • El uso y recorrido de los elementos de la matriz:
    Sintaxis: 数组名[外下标][内下标], obtener el subíndice especificado es el dato.
    inserte la descripción de la imagen aquí


Objetos y Clases

Objeto: Hay individuos objetivos que se pueden distinguir unos de otros, como este carro, esta persona, esta casa, esta mesa, esta planta, este cheque, esta gabardina. En pocas palabras: todo es un objeto.

Clase: un grupo o abstracción de varios objetos con las mismas propiedades y comportamientos. Una clase es una plantilla para crear objetos y consta de dos partes: propiedades y comportamientos.

Una clase es una generalización o abstracción de un objeto, y un objeto es una instanciación de una clase.

declaración de clase

[修饰符] class 类名{//类的声明部分
	[成员变量]
	[成员方法]
}

inserte la descripción de la imagen aquí

Declaración de variables miembro: [修饰符] 数据类型 变量名 [= 初始值];

Declaración del método miembro:

[修饰符] 返回值类型 方法名([数据类型 参数名,……]){
	//方法体,该方法完成的功能代码
}

Declaración del constructor:

[修饰符] 构造器名([数据类型 参数名,……]){
  //构造器完成的功能代码
}

inserte la descripción de la imagen aquí

Nota:
①El nombre del constructor debe ser el mismo que el nombre de la clase
②El constructor no tiene tipo de valor de retorno
③Cualquier clase contiene un constructor. Si no se define explícitamente ningún constructor de clase,
④ el sistema proporcionará un constructor predeterminado sin argumentos para la clase. Una vez que se define explícitamente un constructor en una clase, el sistema ya no proporciona un constructor predeterminado para la clase.

uso de clase

Declaración de variables de clase: 类名 对象名;
creación de objetos de clase, asignación a variables: asignación de 对象名 = new 构造器([参数列表]);
inserte la descripción de la imagen aquí
propiedades de objetos: 属性:对象名.属性名、对象名.属性名 = 数据;
inserte la descripción de la imagen aquí
invocación de propiedades y métodos:属性:System.out.println(对象名.属性名);方法:对象名.方法名();
inserte la descripción de la imagen aquí

Variables miembro y variables locales:

  • Variables miembro: declaradas fuera del cuerpo del método en la clase, pueden tener valores predeterminados y pueden usar modificadores. Alcance: Toda la clase
  • Variables locales: declaradas en el cuerpo del método o bloque de código, no tienen valor predeterminado y solo se pueden modificar con final. Alcance: el cuerpo del método actual

Parámetros: la esencia de los parámetros es una variable local especial, que solo se puede definir entre paréntesis del método.

sobrecarga

Sobrecarga de métodos: Múltiples métodos con el mismo nombre de método pero diferentes parámetros están definidos en la misma clase

Sobrecarga en la misma clase, con el mismo nombre de método y diferentes parámetros (diferente número, orden y tipo de parámetros)
inserte la descripción de la imagen aquí
sobrecargando el constructor:
inserte la descripción de la imagen aquí

El tipo de valor de retorno del método:

  • Sin tipo de retorno: nulo,return;//结束方法体
  • Hay tipos de valores de retorno: tipos de datos (tipos de datos básicos, tipos de datos de referencia),return 数据;//结束方法体,并且返回一条数据

palabras clave

esta palabra clave:

esta es una referencia especial que apunta al objeto actual

Dos formas de usar esto:
si hay un conflicto de nombres entre las variables locales y las variables miembro, las variables miembro y las variables locales se pueden distinguir por el nombre de esta variable miembro.
inserte la descripción de la imagen aquí
Un constructor necesita llamar a otro constructor de esta clase, que puede ser llamado por el método this(), pero this() debe escribirse en la primera línea.
inserte la descripción de la imagen aquí
palabra clave estática:

Variables estáticas: las variables miembro modificadas con estática se denominan variables estáticas. La diferencia entre las variables estáticas y las variables no estáticas es que las variables estáticas son compartidas por todos los objetos, y solo hay una copia en la memoria, que es solo cuando la clase es la primera. cargado se inicializa. Las variables no estáticas son propiedad del objeto y se inicializan cuando se crea el objeto. Hay varias copias, y las copias que pertenecen a cada objeto no se afectan entre sí. El orden de inicialización de las variables miembro estáticas se inicializa en el orden en que se definen.

Método estático: un método miembro modificado con estático se denomina método estático. Se puede acceder a los métodos estáticos sin ningún objeto (para los métodos estáticos, no hay esto). Debido a esta característica, no se puede acceder a las clases de clases no estáticas en estático. Métodos de miembros Variables y métodos de miembros no estáticos, porque los métodos/variables de miembros no estáticos deben depender de objetos específicos para ser llamados.

Formato de llamada:类名.静态变量名 ,类名.静态方法名()

Clase interna estática (la clase modificada estática solo puede modificar la clase interna): hay una gran diferencia entre la clase interna estática y la clase interna no estática: la clase interna no estática guardará implícitamente una referencia después de la compilación, la referencia es a la clase adjunta que lo creó, pero la clase interna estática no lo hace. La ausencia de esta referencia significa: 1. Su creación no depende de la creación de la clase envolvente. 2. No puede usar ninguna variable miembro no estática ni métodos de la clase adjunta.

Bloque de código estático:
Es un bloque de código precedido por estático, que generalmente se usa para hacer algún trabajo de inicialización para el trabajo de la clase, como inicializar algunas variables estáticas. Puede haber muchos bloques inicializadores estáticos en una clase y pueden aparecer en cualquier parte del cuerpo de la clase. El sistema de tiempo de ejecución garantiza que los bloques de inicialización estáticos se llamen en el orden en que aparecen en el código fuente.

Se puede usar un bloque estático para optimizar el rendimiento del programa: porque solo se ejecuta una vez cuando se carga la clase

inserte la descripción de la imagen aquí

palabra clave super:
super representa el objeto de la clase padre,

Uso:
super.属性名、super.方法名(); se usa para llamar a la variable de instancia del mismo nombre oculta por la clase principal
super([参数列表])en la subclase. Se usa para llamar al constructor de la clase principal en el constructor de la subclase.

El constructor de cada subclase proporcionará un super() predeterminado sin llamar explícitamente a super(), y super() debe ser la primera declaración del constructor.

palabra clave final:

La palabra clave final, que significa final, inmodificable y la más inmutable, se utiliza para modificar clases, métodos y variables, y tiene las siguientes características:

  • Clases modificadas: las clases no se pueden heredar y todos los métodos miembros en las clases finales se designarán implícitamente como métodos finales;
  • Variable modificadora: La variable es constante. Si es una variable de tipo de datos básicos, su valor no se puede cambiar una vez que se inicializa; si es una variable de tipo de referencia, no se puede permitir que apunte a otro objeto después de que se inicializa .
  • Método modificador: el método no se puede anular

Explicación: Hay dos razones para usar métodos finales. La primera razón es bloquear el método para evitar que las clases heredadas cambien su significado; la segunda razón es la eficiencia. En implementaciones anteriores de Java, los métodos finales se convirtieron en llamadas en línea. Pero si el método es demasiado grande, es posible que no vea ninguna mejora en el rendimiento de las llamadas en línea (ahora las versiones de Java no necesitan usar métodos finales para estas optimizaciones). Todos los métodos privados en una clase son implícitamente finales.

inserte la descripción de la imagen aquí
Referencia: https://gitee.com/SnailClimb/JavaGuide

Modificadores
de acceso Los modificadores de acceso restringen el acceso a variables miembro y métodos miembro
inserte la descripción de la imagen aquí


Tres características de Java

paquete

La encapsulación se refiere a ocultar la información de estado (atributos) de un objeto y no permite que los objetos externos accedan directamente a la información interna del objeto (implementación privada). Pero es posible proporcionar algunos métodos a los que el mundo exterior puede acceder para manipular propiedades.

Haga que las variables miembro de la clase sean privadas y proporcione métodos públicos get y set para controlar las acciones de acceso de los atributos para garantizar la seguridad de las operaciones en atributos privados:
inserte la descripción de la imagen aquí

heredar

La herencia se extiende: cuando los mismos atributos y comportamientos existen en varias clases, estos contenidos se extraen en una sola clase, entonces varias clases no necesitan definir estos atributos y comportamientos, solo heredan la clase única. Varias clases se pueden llamar subclases, y una sola clase se llama padre o superclase.

inserte la descripción de la imagen aquí
Sintaxis básica:

[修饰符] class 子类名 extends 父类名{
   类体部分
}

La herencia es una técnica de creación de una nueva clase utilizando la definición de una clase existente como base. La definición de una nueva clase puede agregar nuevas propiedades o métodos (extender la clase principal), o tener las propiedades y métodos de la clase principal, y pasar el suyo propio. El método nuevamente implementa el método de la clase principal (anulando). Mediante el uso de la herencia, se pueden crear nuevas clases rápidamente, lo que puede mejorar la reutilización del código, la capacidad de mantenimiento del programa, ahorrar mucho tiempo para crear nuevas clases y mejorar nuestra eficiencia de desarrollo.
inserte la descripción de la imagen aquí
Java solo admite herencia única, no herencia múltiple. Una clase solo puede tener una clase principal, no varias clases principales. Java admite varias capas de herencia (jerarquía de herencia). Java hereda las variables miembro no privadas y los métodos miembro de la clase principal, pero tenga en cuenta que la subclase no puede heredar el constructor de la clase principal.

Nota: No heredar solo para obtener una función en otras clases, debe haber una relación de pertenencia ("es un") entre clases

Reescritura de métodos:
cuando un método de instancia heredado por una subclase de la clase principal no puede satisfacer las necesidades funcionales de la subclase, el método de instancia debe volver a implementarse en la subclase. Este proceso se denomina reescritura, también conocido como anulación, cobertura.

La premisa de la reescritura de métodos: herencia, el modificador de la subclase es mayor o igual que la clase principal, el nombre del método, la lista de parámetros y el tipo de valor devuelto deben ser los mismos
inserte la descripción de la imagen aquí

polimorfismo

Polimorfismo: Múltiples formas de una cosa (la premisa del polimorfismo: herencia, reescritura, upcasting)
inserte la descripción de la imagen aquí
A través del polimorfismo, se puede mejorar la reutilización del código y se puede reducir el acoplamiento entre módulos.


clase abstracta

El concepto de clase abstracta:
un método sin un cuerpo de método se puede definir en Java, y la implementación concreta del método se completa con una subclase.Este método se denomina método abstracto, y la clase que contiene el método abstracto es una clase abstracta. . Por ejemplo, el método para calcular el perímetro y el área de la clase Shape no se puede determinar, por lo que dicho método se puede declarar como abstracto para que se pueda implementar en una subclase concreta.

Declaración de clase abstracta: Declaración de [修饰符] abstract class 类名 [extends 父类名]{类体}
método abstracto: [修饰符] abstract 返回值类型 方法名([参数列表]);
Debido a que los métodos abstractos no pueden determinar la función específica que se ejecutará, todos los métodos abstractos no tienen cuerpo de método, y es necesario agregar punto y coma después de los paréntesis.
inserte la descripción de la imagen aquí
Además de usar la modificación abstracta, las clases abstractas y las ordinarias Las clases son las mismas que las clases ordinarias. De manera similar, las clases abstractas no pueden tener métodos abstractos, pero una vez que una clase tiene métodos abstractos, la clase debe declararse abstracta.

El uso de clases abstractas:
debido a que las clases abstractas no son una clase concreta, no se pueden instanciar, pero las clases abstractas se pueden usar para declarar variables.Las
clases abstractas se pueden heredar, y todos los métodos abstractos de las clases abstractas se implementan en subclases para lograr el clase abstracta cosificada
inserte la descripción de la imagen aquí


interfaz

En Java, la interfaz no es solo una "convención" en el proceso de desarrollo del programa, sino también una clase abstracta más abstracta.

Sintaxis de declaración de [修饰符] interface 接口名{[常量];[抽象方法];}
inserte la descripción de la imagen aquí
interfaz: Sintaxis de implementación de interfaz: [修饰符] class 类名 [extends 父类名] [implements 接口1,接口2,……]{类体部分}
inserte la descripción de la imagen aquí

Una clase puede implementar múltiples interfaces, resolviendo así las deficiencias de la herencia única de Java.
inserte la descripción de la imagen aquí
El papel de la interfaz:

  • Mejorar la reutilización del programa
  • Mejorar la escalabilidad del programa
  • Reducir el acoplamiento de programas
  • herencia múltiple

Supongo que te gusta

Origin blog.csdn.net/Lzy410992/article/details/118852573
Recomendado
Clasificación