Java: Übergeben von Parametern nach Wert oder Referenz

Eine einfache Erklärung der Prinzipien der Parameterübergabe in Java.





Viele Programmierer verwechseln häufig, welche Parameter in Java als Wert und welche als Referenz übergeben werden. Lassen Sie uns diesen Prozess visualisieren und dann werden Sie sehen, wie einfach alles ist.





Beginnen wir mit den Grundlagen.





Daten werden über Parameter zwischen Methoden übertragen. Es gibt zwei Möglichkeiten, Parameter zu übergeben:





  1. (by value). . . , .





  2. (by reference). () . , . , , , .





Java :





  1. , , .





  2. — (heap).





: ?





Java





, .





Beispiel für die Übergabe von Grundelementen nach Wert

Java , processData



. , ( main



) .





:





Objektübertragung

? Java , ? , Java - ? , . : "Java ".





, .





Stapel- und Heapspeicher
(stack) (heap)

, ,  fruits



processData



. fruitRef



fruit



. fruits



fruitsRef



. . , . , , , .





:





Übergeben eines Objekts als Referenz
Stapel- und Heapspeicher
(stack) (heap)

fruitRef



new



. fruitRef



, , , , , .





, Java . .





.





, .





Entfernen eines Knotens in einer verknüpften Liste

:





class Node {
   int data;
   Node next;
   Node(int d){
       data = d;
       next = null;
   }
}
class LinkedList {
   public static Node push(Node head, int data) {
       Node newNode = new Node(data);
       newNode.next = head;
       head = newNode;
       return head;
   }
   public static void deleteNode(Node head, int position) {
  
       // List is empty
       if (head == null){
           return;
       }

      // If position is 1st, removing head node
      if (position == 1) {
          head = head.next;
          return;
      }
      Node prevNode = head;
      int i = 2;
      while (prevNode != null && i != position) {
          prevNode = prevNode.next;
          i++;
      }
     // When position is more than number of node
     if (prevNode == null || prevNode.next == null) {
         return;
     }
     prevNode.next = prevNode.next.next;
   }
   public static void printList(Node head) {
       Node currNode = head;
       while (currNode != null) {
           System.out.print(currNode.data + " ");
           currNode = currNode.next;
       }
   }
   public static void main(String[] args) {
       Node head = null;
       head = push(head, 5);
       head = push(head, 4);
       head = push(head, 3);
       head = push(head, 2);
       head = push(head, 1);
       System.out.println("Created Linked list is: ");
       printList(head);

       // Delete node at position 2
       deleteNode(head, 2);

       System.out.println("\nLinked List after Deletion at position 2: ");
       printList(head);
   }
}

      
      



, — (Position = 1



). , ? , .





Entfernen des ersten Knotens einer einfach verknüpften Liste

:





public static Node deleteNode(Node head, int position) {
   // List is empty
   if (head == null){
      return head;
   }

   // If position is 1st, removing head node
   if (position == 1) {
       head = head.next;
       return head;
   }
   Node prevNode = head;
   int i = 2;
   while (prevNode != null && i != position) {
       prevNode = prevNode.next;
       i++;
   }
   // When position is more than number of node
   if (prevNode == null || prevNode.next == null) {
       return head;
   }
   prevNode.next = prevNode.next.next;
   return head;
}
public static void main(String[] args) {
   Node head = null;
   head = push(head, 5);
   head = push(head, 4);
   head = push(head, 3);
   head = push(head, 2);
   head = push(head, 1);
   System.out.println("Created Linked list is: ");
   printList(head);

   // Delete node at position 2
   head = deleteNode(head, 2);

   System.out.println("\nLinked List after Deletion at position 2: ");
   printList(head);
}
//Rest of the code remains same

      
      



, Java: . 






" Oracle Java Programmer (OCAJP)".





, 15 .












All Articles