1. Метод передачи параметров
Чтобы решить проблему заголовка, сначала введите метод передачи параметров. В настоящее время существует три основных метода передачи параметров для различных языков программирования:
1. Пройти по значению
2. Пропустите ссылку
3. пройдите по указателю
Метод представления (функция), проводящего значение, получает копию переменной, предоставленной вызывающим абонент, без изменения значения параметра; Значение переменной, предоставленной вызывающим абонентом, передается ссылкой; Значение значения (функции) получено по указателю указателем, полученным указателем без изменения значения и адреса указателя, но адрес, указанный указателем, может быть изменен.
2. Метод передачи параметров Java
К сожалению, существует только один метод прохождения параметров, предоставляемый Java, который передается по значению. То есть метод получает копию всех значений параметров, и метод не может изменить содержание переменной параметра, передаваемой ей.
Типы параметров метода Java можно разделить на две категории:
1. Основные типы данных
2. Ссылка на объект
Друзья, которые имеют опыт работы в области Java, знают, что для основных типов данных методы Java не могут изменить содержание переменных. Значит, не может быть изменено контент путем ссылки на объект пользовательского класса? Это можно объяснить простым примером. Код заключается в следующем:
pubpc class myclass {private Object num; pubpc myclass (объект num) {this.num = num; } pubpc Object getNum () {return num; } pubpc void setnum (объект num) {this.num = num; }} Pubpc Class Main {pubpc static void изменение (myclass myclass) {myclass.setnum (100); } pubpc static void main (string [] args) {myClass a = new MyClass (10); System.out.println («Значение перед вызовом метода изменения:»+a.getnum ()); изменение (а); System.out.println («Значение после вызова метода изменения:»+a.getnum ()); }}Приведенные выше результаты вывода выполнения кода следующие:
Из результатов можно видеть, что метод изменения может изменить состояние объекта. Другими словами, методы Java могут изменить состояние параметра объекта. Значит ли это, что методы Java используют эталонные проходы для параметров пользовательских типов данных (пользовательские классы)? Чтобы подтвердить результаты, вы можете написать простой пример, и все пользовательские классы по -прежнему являются MyClass выше. Код заключается в следующем:
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 = new MyClass (100); System.out.println («Значение до обмена:»+a.getnum ()); System.out.println («Значение b до обмена:»+b.getnum ()); обмен (а, б); System.out.println («Значение After Swap:»+a.getnum ()); System.out.println («значение b после обмена:»+b.getnum ()); }}Результаты выполнения следующие:
Из приведенных выше результатов мы можем обнаружить, что методы Java по -прежнему используют прохождение значения для прохождения параметров пользовательских классов, а не передачи ссылок. Тогда почему методы Java могут изменить состояние объекта?
Вы можете рассмотреть конкретный процесс выполнения вызова метода изменения, чтобы найти ответ.
Конкретный процесс выполнения:
MyClass инициализируется в копию с фактическим параметром A, который является ссылкой на объект.
Метод SETNUM применяется к ссылке этого объекта. Число объекта MyClass, на которое ссылается MyClass, и A изменяется на 100.
После завершения метода переменная параметра MyClass больше не используется. И A продолжает ссылаться на объект MyClass, чье число становится 100. Как показано на рисунке ниже.
Следовательно, причина, по которой методы Java могут изменить состояние параметра объекта, заключается в том, что метод получает копию ссылки на объект, а ссылка на объект и другие копии в методе одновременно относятся к одному и тому же объекту.
Теперь давайте обобщу параметры метода Java:
Методы не могут изменять параметры основного типа данных;
Методы могут изменить состояние параметров объекта;
Методы не могут создавать параметры объекта, относящиеся к новому объекту (причина состоит в том, чтобы ссылаться на конкретный процесс выполнения при вызове метода изменения).
3. Обмен численные значения переменных
Поскольку вы уже знаете причину, нетрудно узнать причину. Разместите мой личный код напрямую:
Pubpc Static Void Swap (MyClass A, MyClass B) {Object TMP = A.GetNum (); a.setnum (b.getnum ()); b.setnum (tmp);}Результаты выполнения следующие:
Обмен действителен.
Список литературы: Java Core Technology Том I.
Приведенная выше статья о Java Favily Метод численной реализации двух переменных является всем контентом, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.