Question

Que ce soit pour des comparaisons ou pour l’initialisation d’une nouvelle variable, cela fait-il une différence que vous utilisez?

Je sais que BigDecimal.ZERO est une fonctionnalité 1.5, c'est donc un problème, mais si j'utilise la version 1.5, est-ce important?

Merci.

Était-ce utile?

La solution

BigDecimal.ZERO est une constante prédéfinie et ne doit donc pas être évalué à partir d'une chaîne au moment de l'exécution comme BigDecimal (" 0) . Ce sera plus rapide et ne nécessitera pas la création d'un nouvel objet.

Si votre code doit être exécuté sur les versions antérieures à la version 1.5, vous pouvez utiliser le modèle Singleton (bien mal signé) pour créer un objet équivalent à BigDecimal.ZERO . La première fois qu'il est utilisé, il appelle BigDecimal ("0") pour créer un objet zéro et le restitue lors des appels suivants. Sinon, si votre code est exécuté sur un système 1.5, votre objet singleton peut simplement renvoyer BigDecimal.ZERO sans pénalité d'exécution.

Autres conseils

L'utilisation de ZERO ne crée pas de nouvel objet et ne nécessite aucune analyse. Certainement la voie à suivre.

Avant de parler de pénalités d’exécution, assurez-vous que ce code est important. Configurez le profilage et mesurez le cas d'utilisation complet.

Néanmoins, préférez Bigdecimal.ZERO tel que coché lors de la compilation, alors que vous pouvez taper accidentellement new BigDecimal (" 9) , ce que le compilateur acceptera, mais ce qui causera des bugs dans votre application.

Par curiosité, j’ai vérifié auprès du constructeur de BigDecimal et il n’a aucune optimisation pour le paramètre "0". chaîne. Donc, oui, il y a une différence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top