code: public static ULocale getDefault() {
          synchronized (ULocale.class) {
              if (defaultULocale == null) {
                  // When Java's default locale has extensions (such as ja-JP-u-ca-japanese),
                  // Locale -> ULocale mapping requires BCP47 keyword mapping data that is currently
                  // stored in a resource bundle. However, UResourceBundle currently requires
                  // non-null default ULocale. For now, this implementation returns ULocale.ROOT
                  // to avoid the problem.
  
                  // TODO: Consider moving BCP47 mapping data out of resource bundle later.
  
                  return ULocale.ROOT;
              }
              Locale currentDefault = Locale.getDefault();
              if (!defaultLocale.equals(currentDefault)) {
                  defaultLocale = currentDefault;
                  defaultULocale = forLocale(currentDefault);
  
                  if (!JDKLocaleHelper.hasLocaleCategories()) {
                      // Detected Java default Locale change.
                      // We need to update category defaults to match the
                      // Java 7's behavior on Java 6 or older environment.
                      for (Category cat : Category.values()) {
                          int idx = cat.ordinal();
                          defaultCategoryLocales[idx] = currentDefault;
                          defaultCategoryULocales[idx] = forLocale(currentDefault);
                      }
                  }
              }
              return defaultULocale;
          }
      }
docs: Returns the current default ULocale.
  <p>
  The default ULocale is synchronized to the default Java Locale. This method checks
  the current default Java Locale and returns an equivalent ULocale.
  
  @return the default ULocale.