Je me demandais simplement si cela et d'autres fonctions connexes comme ces entiers sont l'une de ces choses que l'on ne devrait pas être dérangé avec et juste aller avec Long a = 1L
; simple et direct.Y at-il une différence entre Long a = Long.valueOf (1) ou Long a = 1L?
Répondre
Ils sont essentiellement les mêmes, le compilateur crée en interne un appel à Long.valueOf() lorsqu'il doit convertir une primitive longue en Long, c'est ce qu'on appelle "boxe".
En code normal, vous devez utiliser le type primitif long, il est plus efficace que Long. Vous n'avez besoin de Long que lorsque vous avez besoin d'objets, par exemple pour mettre des valeurs longues dans des collections.
Voyons ce qui se passe sous les couvertures. Tout d'abord, considérez ceci:
public class Example {
public static void main(String[] args) {
Long a = Long.valueOf(1L);
System.out.println(a);
}
}
avec ce Compile javac Example.java
. Puis démonter avec javap -c Example
. Le résultat est le suivant:
Compiled from "Example.java"
public class Example extends java.lang.Object{
public Example();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: lconst_1
1: invokestatic #2; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
4: astore_1
5: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;
8: aload_1
9: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/Object;)V
12: return
}
Ok, modifiez maintenant le programme à ce qui suit:
public class Example {
public static void main(String[] args) {
Long a = 1L;
System.out.println(a);
}
}
Compile et démonter à nouveau.
Vous verrez que cette version du programme se compile exactement comme la première version; le compilateur a généré l'appel à Long.valueOf(...)
automatiquement.
Voir: Autoboxing
- 1. Pourquoi il y a une différence entre "importation" et "importation *"?
- 2. Y a-t-il une différence entre DataTable.Clear et DataTable.Rows.Clear?
- 3. convertir la chaîne en long long
- 4. Fonction de hachage pour une paire de long long?
- 5. trouver 1 an il y a DateTime
- 6. Qu'est-ce que "long long (^ blockFun)() = (long long (^)()) moreBlockFun" signifie et fait?
- 7. Spécificateur de format pour « long long »
- 8. Y a-t-il une différence entre une "fonction" et une "macro" dans Objective-C?
- 9. En Perl, y a-t-il une différence entre/^/et/^/m?
- 10. Y a-t-il une différence entre délégué/sélecteur et cible/action?
- 11. Y a-t-il une différence de performance entre ces deux morceaux de code?
- 12. Y a-t-il une différence entre SqlConnection.CreateCommand et new SqlCommand?
- 13. Y a-t-il une différence entre installer mod_python via httpd.conf et conf.d dans apache?
- 14. Y a-t-il une différence entre DateTime dans C# et DateTime dans SQL Server?
- 15. Y a-t-il une différence entre la décoration de noms/mangling et la décoration d'attributs?
- 16. PostgreSQL Long VACUUM
- 17. php long running script
- 18. Quelle est la différence entre double a = a + int b et int a + = double b?
- 19. cookie le plus long
- 20. Long polling with NSURLConnection
- 21. Java - int/long, float/double
- 22. Validez une entrée de type long
- 23. Déplacer une imageview le long d'un chemin
- 24. long Datatype débordement
- 25. JQuery "long>"
- 26. Pourquoi y a-t-il de fines lignes haies (1 pixel?) Entre les éléments ItemsControl?
- 27. Y a-t-il une raison d'utiliser ENUM dans VBA?
- 28. Quel a été le plus long moment pour réparer un bug?
- 29. data.frame sous-ensemble format long
- 30. long sur une machine 64 bits
cette question était-inspirée par: http://stackoverflow.com/questions/130965/what-is-the-worst-code-youve-ever-written/1213190#1213190? – outis
Nope n'a jamais vu cette question avant –