138 votes

Comment utiliser les pointeurs en Java ?

Je sais que Java n'a pas de pointeurs, mais j'ai entendu dire que les programmes Java peuvent être créés avec des pointeurs et que cela peut être fait par les quelques experts en Java. Est-ce vrai ?

1voto

Jay Points 14781

Comme d'autres l'ont dit, la réponse courte est "non".

Bien sûr, vous pouvez écrire du code JNI qui joue avec les pointeurs Java. Selon ce que vous essayez d'accomplir, cela vous mènera peut-être à quelque chose, mais peut-être pas.

Vous pouvez toujours simuler des pointes en créant un tableau et en travaillant avec des index dans le tableau. Encore une fois, selon ce que vous essayez d'accomplir, cela peut être utile ou non.

1voto

Mustafa Güven Points 2316

Du livre Decompiling Android de Godfrey Nolan.

La sécurité impose que les pointeurs ne sont pas utilisés en Java pour que les pirates ne puissent pas sortir d'une application et pénétrer dans le système d'exploitation. d'exploitation. L'absence de pointeurs signifie que quelque chose d'autre---- dans ce cas, la JVM---- doit doit s'occuper de l'allocation et de la libération de la mémoire. Les fuites de mémoire devraient également devraient également appartenir au passé, du moins en théorie. Certaines applications écrites en C et C++ sont connues pour laisser fuir la mémoire comme une passoire parce que les programmeurs ne font pas attention à la libération de la mémoire. ne font pas attention à libérer la mémoire indésirable au moment opportun----pas que quiconque lisant cet article soit coupable d'une telle pratique. que quiconque lisant ces lignes soit coupable d'un tel péché. La collecte d'ordures devrait également rendre les programmeurs plus productifs, en leur permettant de passer moins de temps à déboguer les problèmes de mémoire.

0voto

Mordan Points 48

Vous pouvez également avoir des pointeurs pour les littéraux. Vous devez les implémenter vous-même. C'est assez basique pour les experts ;). Utilisez un tableau de int/objet/long/octet et voilà, vous avez les bases pour implémenter les pointeurs. Maintenant, toute valeur int peut être un pointeur vers ce tableau int[]. Vous pouvez incrémenter le pointeur, vous pouvez décrémenter le pointeur, vous pouvez multiplier le pointeur. Vous avez bien l'arithmétique des pointeurs ! C'est la seule façon d'implémenter des classes de 1000 attributs int et d'avoir une méthode générique qui s'applique à tous les attributs. Vous pouvez également utiliser un tableau de byte[] au lieu d'un int[]

Cependant, j'aimerais que Java permette de transmettre des valeurs littérales par référence. Quelque chose du genre

//(* telling you it is a pointer) public void myMethod(int* intValue);

-1voto

Krishna Kant Points 1

Tous les objets java sont des pointeurs car une variable qui contient une adresse est appelée pointeur et un objet contient une adresse.

-4voto

user18280260 Points 1

Java peut facilement avoir un pointeur en sachant que le nom du tableau est un pointeur vers le premier index. c'est pourquoi lorsque nous passons un tableau à une fonction, nous n'écrivons pas ses crochets. parce que le tableau est une référence.

public class Main    
{
    public static void func ( int ptr1[] , int ptr2[] )
 {
      int temp;
      temp = ptr1[0];
      ptr1[0] = ptr2[0];
      ptr2[0] = temp;

 }

    public static void main(String[] args) {

        int x = 5;               int y = 8;

        // in c language
        //  int *p = &x;       int *q = &y;

        //  in Java
        int p[] = new int[1];
        int q[] = new int[1];

        p[0] = x;   // same as pointer
        q[0] = y;   // same as pointer

        func( p , q );  // passing address ( refrence )

        System.out.println( "  After Swap " );
        System.out.println( "x = "  + p[0] + "  " +  "y = " + q[0] );

    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X