В классе Random определено также несколько методов, которые возвращают псевдослучайные величины для примитивных типов Java.
Дополнительно следует отметить наличие двух методов: double nextGaussian() - возвращает случайное число в диапазоне от 0.0 до 1.0 распределенное по нормальному закону, и void nextBytes(byte[] arr) - заполняет массив arr случайными величинами типа byte.
Пример использования Random:
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); Random r = new Random(100); // Generating the same sequence numbers for(int cnt=0;cnt<9;cnt++){ System.out.print(r.nextInt() + " "); } System.out.println(); r = new Random(100); for(int cnt=0;cnt<9;cnt++) { System.out.print(r.nextInt() + " "); } System.out.println(); // Generating sequence of bytes byte[] randArray = new byte[8]; r.nextBytes(randArray); test.dumpArray(randArray); } void dumpArray(byte[] arr) { for(int cnt=0;cnt< arr.length;cnt++) { System.out.print(arr[cnt]); } System.out.println(); } } Пример 14.24.
Результатом будет:
-1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224 -1193959466 -1139614796 837415749 -1220615319 -1429538713 118249332 -951589224 81;-6;-107;77;118;17;93; -98; Пример 14.25.
Локализация
Класс Locale
Класс Locale предназначен для отображения определенного региона. Под регионом принято понимать не только географическое положение, но также языковую и культурную среду. Например, помимо того, что указывается страна Швейцария, можно указать также и язык - французский или немецкий.
Определено два варианта конструкторов в классе Locale:
Locale(String language, String country) Locale(String language, String country, String variant)
Первые два параметра в обоих конструкторах определяют язык и страну, для которой определяется локаль, согласно кодировке ISO. Список поддерживаемых стран и языков можно получить и с помощью вызова статических методов Locale.getISOLanguages() Locale.getISOCountries(), соответственно. Во втором варианте конструктора указан также строковый параметр variant, в котором кодируется информация о платформе. Если здесь необходимо указать дополнительные параметры, то их требуется разделить символом подчеркивания, причем, более важный параметр должен следовать первым.
Пример использования:
Locale l = new Locale("ru","RU"); Locale l = new Locale("en","US","WINDOWS");
Статический метод getDefault() возвращает текущую локаль, сконструированную на основе настроек операционной системы, под управлением которой функционирует JVM.
Для наиболее часто использующихся локалей заданы константы. Например, Locale.US или Locale.GERMAN.
После того как экземпляр класса Locale создан, с помощью различных методов можно получить дополнительную информацию о локали.
public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); Locale l = Locale.getDefault(); System.out.println(l.getCountry() + " " + l.getDisplayCountry() + " " + l.getISO3Country()); System.out.println(l.getLanguage() + " " + l.getDisplayLanguage() + " " + l.getISO3Language()); System.out.println(l.getVariant() + " " + l.getDisplayVariant()); l = new Locale("ru","RU","WINDOWS"); System.out.println(l.getCountry() + " " + l.getDisplayCountry() + " " + l.getISO3Country()); System.out.println(l.getLanguage() + " " + l.getDisplayLanguage() + " " + l.getISO3Language()); System.out.println(l.getVariant() + " " + l.getDisplayVariant()); } } Пример 14.26.
Результатом будет:
US United States USA en English eng RU Russia RUS ru Russian rus WINDOWS WINDOWS Пример 14.27.
Класс ResourceBundle
Абстрактный класс ResourceBundle предназначен для хранения объектов, специфичных для локали. Например, когда необходимо получить набор строк, зависящих от локали, используют ResourceBundle.
Применение ResourceBundle настоятельно рекомендуется, если предполагается использовать программу в многоязыковой среде. С помощью этого класса легко манипулировать наборами ресурсов, зависящих от локалей, их можно менять, добавлять новые и т.д.