Quelle est la Chaîne de classes compareTo() de retour de méthode
Dans l'API Java sur les oracles site web: "compareTo Retourne: "la valeur 0 si la chaîne de l'argument est égal à cette chaîne; une valeur inférieure à 0 si la chaîne est lexicographiquement inférieur à l'argument de chaîne; et une valeur supérieure à 0 si la chaîne est lexicographiquement plus de l'argument chaîne." "
Ici est une instruction if:
String a = "abd";
String b = "abc";
if(a.compareTo(b) >= 1)
retourne true
depuis que la chaîne a est plus grand, de manière lexicographique.
Ma question est, ne l'compareTo retourne toujours 0, 1, ou -1? ou faut-il retourner le réel montant que la chaîne est plus grand ou plus petit que l'argument chaîne.
Ainsi, dans le ci-dessus si relevé, puisque "abd" est plus grand que "abc" est-il de retour 1?
- Il suffit de l'essayer :
System.out.println(a.compareTo(b))
- docs.oracle.com/javase/7/docs/api/java/lang/...
- Ces réponses ne sont pas à l'abri; la valeur de retour (bien que presque toujours -1, 0 ou 1) est dépendant de l'implémentation.
- Vous ne devriez pas prendre plus que ce que dit la documentation, et de la documentation dit: 0, inférieure à 0 ou supérieure à 0. Vous pouvez regarder la mise en œuvre, mais sur un autre Java mise en œuvre, il pourrait être différente et votre programme ne fonctionnera pas.
Vous devez vous connecter pour publier un commentaire.
Aussi loin que vous êtes concernés, il n'y a pas de dire ce que l'ampleur de la
compareTo
valeur de retour est, il suffit de le signer. Dans la pratique, la plupart descompareTo
implémentations sera de retour -1, 0, ou 1, mais le contrat spécifiquement dit positif ou négatif, et vous devez écrire votre code en conséquence (p. ex., à l'aide deint compare = a.compareTo(b); if(compare > 0) {...} else...
).String
classe. Dans ce cas, oui, il est directement en soustrayant les deuxchar
valeurs pour éviter d'avoir à la branche.Selon http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo%28java.lang.String%29
Pour le dernier cas, pour les longueurs de la
String
, par la documentation qui semble elle peut renvoyer à d'autres que -1, 0, 1Falmarri pleinement répondu à cette question; par opposition à seulement indiquant les conditions dans lesquelles la valeur de retour devraient être positifs, négatifs ou nuls.
"C'est la définition lexicographique de la commande. Si les deux chaînes sont différentes, c'est soit qu'ils ont des caractères différents à certains index est un index valide pour les deux chaînes, ou de leurs longueurs sont différentes, ou les deux. Si ils ont des caractères différents, à une ou plusieurs positions d'index, soit k le plus petit indice; puis la chaîne dont le caractère à la position k est la plus petite valeur, telle que déterminée en utilisant le < opérateur, de manière lexicographique précède l'autre de la chaîne. Dans ce cas, compareTo renvoie la différence des deux valeurs de caractères à la position k dans les deux chaînes de caractères-qui est, la valeur:
cette.charAt(k)-anotherString.charAt(k)
Si il n'y a pas d'indice de la position à laquelle ils diffèrent, alors la chaîne plus courte, de manière lexicographique précède la longue chaîne. Dans ce cas, compareTo renvoie la différence de la longueur des chaînes-qui est, la valeur:
cette.length()-anotherString.longueur()"