Dabai se convirtió en un león de asedio del software Java en el decimonoveno día (métodos de construcción de Java, constructores, conceptos de objetos y referencias, paso de parámetros)

Método de construcción

Acerca del método de construcción en la clase java:

1. El método de construcción también se llama constructor / constructor / Constructor

2. La estructura gramatical del método de construcción:
[修饰符列表] 构造方法名(形式参数列表){ 构造方法体; }

3. Repase la estructura gramatical de los métodos ordinarios:
[修饰符列表] 返回值类型 方法名(形式参数列表){ 方法体; }

4. Para el constructor, no es necesario especificar el "tipo de valor de retorno" y no se puede escribir void. Mientras se escriba vacío, este método se convierte en un método ordinario.

5. Para el método de construcción, el nombre del método de construcción debe ser consistente con el nombre de la clase.

6. ¿Qué hace el método de construcción?

  • El significado del método de construcción es que se puede crear un objeto llamando al método de construcción.

7. ¿Cómo se debe llamar al constructor?

  • El método ordinario se llama así: cuando hay estática en el 类名.方法名(实参列表)modificador de método :, cuando no hay estática en la lista de modificadores de método:引用.方法名(实参列表)
  • new 构造方法名(实参列表)

8. ¿Existe un valor de retorno después de que se ejecuta la llamada al constructor?

  • Cada método de construcción en realidad tiene un valor de retorno después de que finaliza la ejecución, pero no es necesario escribir esta declaración de "valor de retorno". El programa Java devuelve automáticamente el valor cuando finaliza el método de construcción.
  • Y el tipo de valor de retorno es el tipo de clase donde se encuentra el constructor. Dado que el tipo de valor de retorno del constructor es la propia clase, no es necesario escribir el tipo de valor de retorno.

9. Comentar y descomentar: Ctrl + /, comentario de varias líneas: ctrl + shift + / \

10. Cuando no se define ningún método de construcción en una clase, el sistema proporciona un método de construcción sin parámetros para la clase de forma predeterminada. Este método de construcción se denomina constructor predeterminado.

11. Cuando una clase define claramente su constructor, el sistema ya no proporciona un constructor predeterminado para esta clase por defecto. Se recomienda proporcionar manualmente un método de construcción sin parámetros para la clase actual durante el desarrollo. Porque el método de construcción sin parámetros es demasiado común.

El papel del método de construcción.

  • 1. Crea un objeto
  • 2. Mientras crea el objeto, inicialice el espacio de memoria de la variable de instancia.

Las variables de instancia de las variables miembro pertenecen a las variables de nivel de equipo. Dichas variables deben tener objetos antes de poder tener variables de instancia.

Cuando la variable de instancia no se asigna manualmente, el sistema la asigna de forma predeterminada. Entonces, ¿cuándo se completa la asignación predeterminada del sistema? ¿Es durante la carga de clases?

  • No, porque solo se cargan fragmentos de código cuando se carga la clase y el objeto aún no se ha creado. Por tanto, la variable de instancia no se inicializa en este momento.
  • De hecho, el espacio de memoria de las variables de instancia se abre e inicializa durante la ejecución del método de construcción.
  • Cuando el sistema asigna por defecto, también se hace durante la ejecución del método de construcción.

Objetos y referencias

Objetos y referencias

  • Objeto : el espacio de memoria que se abre actualmente en la memoria del montón con el operador nuevo se denomina objeto.
  • Referencia : Es una variable, no necesariamente una variable local, sino también una variable miembro. La referencia guarda la dirección de la memoria y apunta al objeto en la memoria del montón.
  • Todo el acceso a los datos relacionados con la instancia debe accederse de “引用.”alguna manera, porque el objeto solo se puede encontrar por referencia.
  • Solo hay una referencia nula, se producirá una excepción de puntero nulo al acceder a los datos relacionados con la instancia del objeto.

Paso de parámetros

La principal investigación y estudio es que cuando se llama al método, está involucrado el problema de la transmisión de parámetros ¿Cómo transferir datos?

  • Pasar por valor

int i = 10;
int j = i; i se pasa a j, de hecho, solo el 10 guardado en la variable i se pasa a j, j es en realidad un nuevo espacio de memoria

Usuario u = 0x1234;
Usuario u2 = u;
u se pasa a u2, en realidad asigna el valor de 0x1234 a u2, u y u2 son en realidad dos variables locales diferentes, pero estas dos variables apuntan a la memoria del montón El mismo objeto java.

El problema de la transferencia de parámetros involucrada en la llamada al método en lenguaje java

El parámetro que pasa realmente pasa el valor específico guardado en la variable

Ejemplo 1:

public class Test01()
{
    
    
	public static void main(String[] args){
    
    
		
		//int i = 10;
		//add(i)等同于:add(10)
		int i = 10;
		add(i);//add方法调用的时候,给add方法传递了一个变量i,实际上传递的是变量中保存的具体值
		System.out.println("main-->"+ i );
	}

	public static void add(int i){
    
    
		i++;
		System.out.println("add-->"+ i);
	}
}

Resultado de la compilación:
Resultado de la compilación
Ejemplo 2:

public class Test02(){
    
    
 public static void main(String[] args){
    
    
        User u = new User(20);
      
       //User u =0x1234;
       //add(u)等同于:add(0x1234)
        add(u);//传递u给add方法的时候,实际上传递的是U变量中保存的值,只不过这个值是一个java对象的内存地址
        System.out.println("main-->"+ u.age);
    }

    public static void add(User u ){
    
    
        u.age++;
        System.out.println("add-->"+ u.age);
    }
}

class User
{
    
    
    int age;
    public User(int i){
    
    
        age = i;
    }
}

Resultados de la compilación:
Inserte la descripción de la imagen aquí
conclusión final:

Cuando se llama al método, implica problemas de parámetros. Al pasar, Java solo sigue un mecanismo gramatical, que es pasar el "valor" almacenado en la variable, pero a veces el valor es un valor literal de 10. Es la dirección de memoria 0x1234 de otro objeto java.

Supongo que te gusta

Origin blog.csdn.net/qq2632246528/article/details/113062589
Recomendado
Clasificación