6
votes

Pourquoi la méthode shortvalue () est concrète mais intvalue () est abstraite dans java.lang.number?

J'ai lu code source de java.lang.number code> et je me suis demandé pourquoi

  1. intvalue () code> li>
  2. longvalue () code> li>
  3. floatvalue () code> li>
  4. doublevalue () code> li> ol>

    est abstrait mais p>

    1. shortvalue () code> li>
    2. bytevalue () code> li> ol>

      béton. p>

      code source: p> xxx pré>

      Pourquoi les fondateurs Java l'ont donc fait? P>

      Je ne vois pas de grandes différences entre ces méthodes. Son semble comme apparenté. P>

      PS fort> p>

      de la classe longue: p> xxx pré>

      de la classe d'entier

      public byte byteValue() {
              return (byte)value;
          }
      
      
          public short shortValue() {
              return (short)value;
          }
      
      
          public int intValue() {
              return value;
          }
      
      
          public long longValue() {
              return (long)value;
          }
      
      
          public float floatValue() {
              return (float)value;
          }
      
          public double doubleValue() {
              return (double)value;
          }
      


0 commentaires

3 Réponses :


1
votes

octet et court sont les versions de consommation de la mémoire inférieure et, étant donné que intvalue est abstrait , la mise en œuvre de IntTValue peut être utilisé pour l'octet et court. Je pense que c'est pourquoi ils auraient dû le faire comme ça.


5 commentaires

Je ne comprends pas comment relier la consommation de la mémoire et l'abstrait


Un résumé est utilisé pour laisser la mise en œuvre de la méthode de la classe qui s'étend sur numéro et puisque intvalue est abstraite, la mise en œuvre de intvalue peut être utilisé pour octet et court , car ils ne sont que des versions plus courtes de int


Je ne comprends pas la chaîne complète. IntTValue est abstraite, la mise en œuvre d'IntTValue peut être utilisée pour des octets et courts, car elles ne sont que des versions plus courtes de INT == Longvalue est abstraite, la mise en œuvre de Longvalue peut être utilisée pour INT et d'octets et courts, comme ils ne sont que des versions plus courtes de long


@gstackoverflow true, mais octet et courte est moins utilisé, une implémentation par défaut (la plupart du temps inutile) réduit le fardeau des classes implémentées numéro .


@Boris l'araignée, je ne comprends vraiment pas cette réponse (




0
votes

@anirudh monsieur, petite confirmation Comme vous avez dit que l'octet et la méthode courte consomment la mémoire moindre pour stocker la valeur, mais ce n'est pas la bonne façon d'effectuer une opération en prenant la même variable. Parce que la variable d'octets sera Rendez-vous la valeur négative.

// selon (étape 1) Entier est l'objet de la classe wrapper qui est stocké avec 100 000 valeur supérieure à la plage d'octets. Mais l'utilisation de la mémoire est moins comparable à la mémoire de la mémoire ou à la plage. Parce que la plage int comporte jusqu'à 600000 ou smthng. Le restant est une perte de mémoire (en dehors de 100 000), vous avez donc dit que la valeur INT (100 000) si nous nous convertissons en octets comme (étape 2), plus l'utilisation de la mémoire sera réduite. Mais la valeur est stockée à l'intérieur de la variable "B" est une valeur négative. Nous ne pouvons donc effectuer aucune opération avec la valeur d'origine (100 000). S'il vous plaît suggérer moi si je suis mal pensé.

Étape 1: - Integer io = nouveau entier (100000);

étape 2: - octet b = io.bytevalue ();


0 commentaires