comment mettre à jour les variables, passés à une méthode?
quand j'ai passer des variables à ma méthode, ils ne sont pas mis à jour dans le code principal, mais seulement passés à la méthode. comment le faire qu'une fois passé variable de mise à jour dans le code principal? Merci!
////////////here is main code:
public static class MyCoding extends MainScreen{ static int mee=1;
public static void myCode(){
Status.show("mee="+mee, 2000); //shows me=1
Moo.moo(mee);
Status.show("mee="+mee, 2000);//should be mee=76547545 but still shows mee=1 !
}
}
////////////here is my method:
public static class Moo extends MainScreen{
public static void moo(int bee){
mee=76547545;
return;
}
}
Quoi faire? Merci!
le passage par valeur vs passez par référence -, le commentaire qui l'accompagne, stackoverflow.com/questions/40480/is-java-pass-by-reference devrait aider à clarifier les choses.
ce lien devrait être la réponse!
vous faites mal ici. mee=76547545; Voir mon post.
ce lien devrait être la réponse!
vous faites mal ici. mee=76547545; Voir mon post.
OriginalL'auteur ShoulO | 2011-12-15
Vous devez vous connecter pour publier un commentaire.
Passant Type De Données Primitif Arguments
De Référence Passant De Données Des Arguments De Type
Pour obtenir le comportement que vous attendez, vous devrez retourner une valeur et l'affecter à la variable d'origine.
Et dans votre méthode:
La transmission de l'Information d'une Méthode ou d'un Constructeur
OriginalL'auteur Beau Grantham
Java paramètres de la méthode sont
pass-by-value
de sorte que vous ne peut pas obtenir les mises à jour de la valeur. Vous devez créer une classe avec un champ int et passer la référence de l'objet comme argument.Dans MyCoding et Moo clases,
OriginalL'auteur adatapost
Java passe primitives (ints/flotteurs/cordes), et des méthodes par la COPIE de leur VALEUR. D'autre part, les autres OBJETS ne sont pas copiés passés dans une méthode (c'est-à d'autres objets de maintenir l'état, et peut être modifiée par une méthode externe).
Il n'y a pas de notion de style C les pointeurs en java, de sorte que vous ne pas écraser une valeur entière dans les méthodes de java - plutôt, vous définissez entiers sur le résultat d'un calcul qui se produit dans une méthode . Ou, plus couramment, vous devez définir les objets, et l'utilisation des getters et setters de ces objets pour obtenir/définir les valeurs.
Dans votre cas... vous devez soit (1) déclarer le nombre entier que vous êtes le calcul dans la méthode comme une variable globale ou (2) retour à la valeur calculée à l'appel de la classe, et faire le réglage dans la classe qui a déclaré à l'origine/accède à la variable d'intérêt.
1) Vous pouvez soit faire de la "mee" variable statique, variable globale, et de l'éditer n'importe où
ou
2) Vous pouvez modifier le "meuh" méthode retourne un entier, et de définir le mee méthode pour que la valeur retournée.
OriginalL'auteur jayunit100
1er de tous, je n'ai pas trouver n'importe quelle variable
bee
, je pense que tu veux diremee
.il suffit de passer à l'objet courant comme
this
oui c'est bon si j'ai une seule variable, que faire si j'ai plusieurs d'entre eux - comme le Moo.moo(mee,zee,vee)
mise à jour du code... le vérifier..
merci pour la réponse. Je ne comprends pas ce que "(ce)" signifie? (aussi ma faute de frappe erreur - devrait être Moo.moo(ce) au lieu de Gryb.moo(ce), désolé). L'utilisation de "ce" a été toujours une source de confusion pour moi
c'est l'instance en cours d'exécution de la classe. vous devez lire les détails à ce sujet. Il est très utile
OriginalL'auteur dku.rajkumar
DANS votre code
et d'essayer de changer
les deux sont différents. Lors de votre déclaration d'une variable comme statique cette variable doit appelée par ClassName dans d'autres classes. Vous avez suivi correct ici.
Changer le mee=76547545; ligne
Et exécuter le code.Assez;
OriginalL'auteur alishaik786
La réponse est simple, vous n'êtes pas d'affecter la valeur de retour de mee
essayer cette
moo()
a un vide type de retour....OriginalL'auteur user710502