CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] probleme methodes

Hiepa
Hiepa
Niveau 10
26 novembre 2012 à 22:45:39

Bonsoir, alors voila ya un truc que je ne comprend pas tres bien, le fait que les parametres des methodes cesse d'exister une fois la methode terminé.
J'ai essaye ce code, avec une methode toute simple pour multiplier le nombre par 6 et le renvoyer:

public static void main(String[] args) {
double number=10;
Multiply(number);
System.out.printf("%f",number);
}

private static double Multiply(double test) {
double miles = test * 6;
return miles;
}

Le truc la c'est que quand je print la variable number apres l'utilisation de la methode multiply, elle vaut tjrs 10, et meme quand je met que la method ne retourne rien du tout:
private static void Multiply(double test) {
test = test * 6;

, ca renvoie tjrs 10, quelqun peut me clarifier sur ce point ?

godrik
godrik
Niveau 30
26 novembre 2012 à 23:00:48

les types primitifs sont passe par copie.

Hiepa
Hiepa
Niveau 10
26 novembre 2012 à 23:10:50

Donc en gros si je veux que dans mon main je puisse utiliser ma methode, je dois l'appeller tout le temps ? Par exemple en print ,e je dois mettre println(Multiply(number) ?

godrik
godrik
Niveau 30
26 novembre 2012 à 23:31:35

tu peux le stocker aussi.
number = Multiply(number)

Hiepa
Hiepa
Niveau 10
26 novembre 2012 à 23:39:43

Ok alors assumons qu'on a une methode qui a pour parametre un array de int et dont le but et de multiplier ses elements par 2:

public static void modifyArray(int []array){
for(int counter=0; counter <array.length;counter++)
array[counter]*=2;
}

Dans ce cas pourquoi quand on reprint le contenu de l'array, on voit que ses elements on bel et bien etes changé? C'est parce quon le passe par reference ?

PocoIo
PocoIo
Niveau 10
27 novembre 2012 à 00:10:10

En Java les tableaux sont des objets, à noter que les paramètres sont toujours passés par copie en Java mais quand on passe un objet en paramètre on passe la référence de l'objet et non l'objet lui-même, cela-dit la référence elle-même est passée par copie.

Hiepa
Hiepa
Niveau 10
27 novembre 2012 à 00:42:12

Et c'est pour ca que le changement s'effectue meme en dehors de la methode ?

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment