code: public static PackedDecimal valueOf(String zahl) {
          String trimmed = StringUtils.trimToEmpty(zahl);
          if (StringUtils.isEmpty(trimmed)) {
              return EMPTY;
          }
          if ((trimmed.length() == 1 && Character.isDigit(trimmed.charAt(0)))) {
              return CACHE[Character.getNumericValue(trimmed.charAt(0))];
          } else {
              return WEAK_CACHE.computeIfAbsent(zahl, PackedDecimal::new);
          }
      }
docs: Liefert den uebergebenen String als {@link PackedDecimal} zurueck.
  Diese Methode ist dem Konstruktor vorzuziehen, da fuer gaengige Zahlen
  wie "0" oder "1" immer das gleiche Objekt zurueckgegeben wird.
  <p>
  Im Gegensatz zum String-Konstruktor darf man hier auch 'null' als Wert
  uebergeben. In diesem Fall wird dies in {@link #EMPTY} uebersetzt.
  </p>
  <p>
  Die erzeugten PackedDecimals werden intern in einem "weak" Cache
  abgelegt, damit bei gleichen Zahlen auch die gleichen PackedDecimals
  zurueckgegeben werden. Dies dient vor allem zur Reduktion des
  Speicherverbrauchs.
  </p>
  
  @param zahl String aus Zahlen
  @return Zahl als {@link PackedDecimal}