1. Método de transferencia de parámetros
Para resolver el problema del título, primero introduzca el método de aprobación de parámetros. Actualmente, hay tres métodos de transferencia de parámetros principales para varios lenguajes de programación:
1. Pase por valor
2. Pase por referencia
3. Pase por puntero
El método de representación de valor de valor (función) recibe una copia de la variable proporcionada por la persona que llama sin cambiar el valor del parámetro; La referencia pasa el valor de la variable proporcionada por la persona que llama; El puntero recibe el valor del valor (función) que el puntero recibe por el puntero sin cambiar el valor y la dirección del puntero, pero la dirección apuntada por el puntero puede cambiarse.
2. Método de transferencia de parámetros Java
Desafortunadamente, solo hay un método de aprobación de parámetros proporcionado por Java, que se pasa por valor. Es decir, el método obtiene una copia de todos los valores de parámetros, y el método no puede modificar el contenido de la variable de parámetro que se le pasa a él.
Los tipos de parámetros del método Java se pueden dividir en dos categorías:
1. Tipos de datos básicos
2. Referencia de objeto
Los amigos que tienen experiencia en el desarrollo de Java saben que para los tipos de datos básicos, los métodos Java no pueden cambiar el contenido de las variables. Entonces, ¿no se puede modificar el contenido por referencia al objeto de la clase personalizada? Esto puede explicarse por un ejemplo simple. El código es el siguiente:
PUBPC Class myClass {private Object Num; PUBPC myClass (objeto num) {this.num = num; } objeto PUBPC getNum () {return num; } pubpc void setnum (objeto num) {this.num = num; }} PUBPC Class Main {PUBPC static void Change (myclass myclass) {myclass.setnum (100); } PUBPC static void main (string [] args) {myclass a = new myClass (10); System.out.println ("El valor antes de llamar al método de cambio es:"+a.getNum ()); cambio (a); System.out.println ("El valor después de llamar al método de cambio es:"+a.getNum ()); }}Los resultados de la salida de ejecución del código anterior son los siguientes:
A partir de los resultados, se puede ver que el método de cambio puede modificar el estado del objeto. En otras palabras, los métodos Java pueden cambiar el estado del parámetro de un objeto. Entonces, ¿esto significa que los métodos Java usan pases de referencia para parámetros de tipos de datos personalizados (clases personalizadas)? Para confirmar los resultados, puede escribir un ejemplo simple, y todas las clases personalizadas siguen siendo myClass arriba. El código es el siguiente:
pubpc static void swap (myclass A, myclass b) {myclass tmp = a; a = b; b = tmp; } PUBPC static void main (string [] args) {myclass a = new myClass (10); MyClass b = nueva myclass (100); System.out.println ("El valor de A antes de intercambio es:"+a.getNum ()); System.out.println ("El valor de B antes del intercambio es:"+B.getNum ()); intercambio (a, b); System.out.println ("El valor de A después del intercambio es:"+A.GetNum ()); System.out.println ("El valor de B después del intercambio es:"+B.getNum ()); }}Los resultados de la ejecución son los siguientes:
De los resultados anteriores, podemos encontrar que los métodos Java aún usan el valor de valor para la aprobación de parámetros de clases personalizadas, no el paso de referencia. Entonces, ¿por qué los métodos Java pueden modificar el estado del objeto?
Puede considerar el proceso de ejecución específico de llamar al método de cambio para encontrar la respuesta.
El proceso de ejecución específico es:
MyClass se inicializa en una copia con el parámetro A, que es una referencia al objeto.
El método SetNum se aplica a la referencia de este objeto. El número del objeto MyClass referenciado por MyClass y A se cambia a 100.
Después de finalizar el método, la variable de parámetro MyClass ya no se usa. Y A continúa referiéndose al objeto MyClass cuyo número se convierte en 100. Como se muestra en la figura a continuación.
Por lo tanto, la razón por la cual los métodos Java pueden cambiar el estado del parámetro del objeto es que el método obtiene una copia de la referencia del objeto, y la referencia del objeto y otras copias en el método se refieren al mismo objeto al mismo tiempo.
Ahora, resumamos los parámetros del método Java:
Los métodos no pueden modificar los parámetros de un tipo de datos básico;
Los métodos pueden cambiar el estado de los parámetros del objeto;
Los métodos no pueden hacer que los parámetros del objeto se refieran a un nuevo objeto (la razón es consultar el proceso de ejecución específico al llamar al método de cambio).
3. Intercambie los valores numéricos de las variables
Como ya sabes la razón, no es difícil saber la razón. Publique mi código personal directamente:
PUBPC Swap natic void (MyClass A, MyClass B) {Object tmp = a.getNum (); A.SetNum (B.GetNum ()); B.SetNum (TMP);}Los resultados de la ejecución son los siguientes:
El intercambio es válido.
Referencias: Java Core Technology Volumen I.
El artículo anterior sobre Java intercambia el método de implementación numérica de dos variables es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.