- •Пакет java.lang Класс Object (1)
- •Пакет java.lang Класс Object (2)
- •Пакет java.lang Класс Object (3)
- •Пакет java.lang Класс Object (4)
- •Пакет java.lang Класс Class (1)
- •Пакет java.lang Класс Class (2)
- •Пакет java.lang Класс Class (3)
- •Пакет java.lang Класс System(1)
- •Пакет java.lang Класс System(2)
- •Пакет java.lang Класс System(3)
- •Пакет java.lang Класс System(4)
- •Пакет java.lang Класс System(5)
- •Пакет java.lang Класс Runtime (1)
- •Пакет java.lang Класс Runtime (2)
- •Пакет java.lang Класс Process
- •Пакет java.lang Класс String (1)
- •Пакет java.lang Класс String (2)
- •Пакет java.lang Класс String (3)
- •Пакет java.lang Класс String (4)
- •Пакет java.lang Класс String (5)
- •Пакет java.lang Класс String (6)
- •Пакет java.lang Класс String (7)
- •Пакет java.lang Класс String (8)
- •Пакет java.lang Класс String (9)
- •Пакет java.lang Класс String (10)
Пакет java.lang Класс System(4)
Метод public void loadLibrary( String libName )
загружает библиотеку нативных функций с указанным именем.
Если будет произведено несколько вызовов загрузки библиотеки с одним и тем же именем, то фактически выполнен будет только первый, а все остальные будут проигнорированы.
Обычно загрузка таких библиотек производится следующим образом: в классе, использующем native-реализации методов, пишется статический инициализатор. Например:
static { System.loadLibrary( "LibFile" ); }
Таким образом, к моменту, когда класс будет загружен и инициализирован, необходимый код для исполнения native-методов также будет загружен.
Метод public void load( String filename )
подгружает файл с указанным названием в качестве библиотеки.
В принципе, этот метод работает точно так же, как и метод loadLibrary( ), только принимает в качестве аргумента именно название файла, а не название библиотеки, тем самым позволяя загрузить любой файл с кодом нативных функций.
Пакет java.lang Класс System(5)
С помощью вызова метода public static native int identityHashCode( Object object )
можно получить оригинальный хэш-код объекта, вычисляемый (возможно многократно замещенным) методом hashCode( ) класса Object;
Метод public static native long currentTimeMillis( )
возвращает текущее время; это значение представляет собой количество миллисекунд, прошедших с 1 января 1970 года.
Метод public static native long nanoTime( )
возвращает количество наносекунд, прошедших с момента запуска виртуальной машины. С помощью вызова метода public static void gc( )
можно явным образом запустить сборщик мусора (garbage collector). Метод public static void runFinalization( )
обеспечивает вызов метода finalize( ) у всех объектов, ожидающих финализации (т.е., отмеченных сборщиком мусора, как ненужные и помещенных в соответствующий список).
Методы public static SecurityManager getSecurityManager( ) и public static void setSecurityManager( final SecurityManager s )
позволяют получать/устанавливать дополнительные средства контроля безопасности (используемые, например, браузерами при выполнении апплетов).
Путем вызова метода public static void exit( int status )
можно завершить исполнение виртуальной машины, а вместе с ней и приложения; аргумент понимается как код завершения ( 0 – нормальное, != 0 – ошибка ).
Пакет java.lang Класс Runtime (1)
Класс Runtime содержит некоторые методы взаимодействия приложения с JVM во время выполнения программы.
Каждое приложение может получить только один экземпляр данного класса путем вызова статического метода
public static Runtime Runtime.getRuntime( ).
Все вызовы этого метода всегда возвращают ссылку на один и тот же объект.
Класс Runtime содержит ряд методов, имеющихся и в классе System ( gc( ), exit( ), runFinalization( ), load( ), loadLibrary( ) ).
Вообще-то методы класса System просто вызывают свои аналоги из класса Runtime.
Однако пользоваться немного удобнее именно методами статического класса System (не надо получать экземпляр класса Runtime).
Метод
public void halt(int status )
осуществляет немедленный останов JVM. Он не завершает запущенные процессы нормальным образом и должен использоваться исключительно в аварийных ситуациях.
Методы
public native long frееMетоrу( ) и public native long totalMemory( )
возвращают количество свободной и всей памяти, находящейся в распоряжении JVM для размещения объектов, в байтах. Эти значения следует считать справочными, поскольку количество памяти меняется динамически.
Пакет java.lang Класс Runtime (2)
Несколько вариантов перегруженного метода ехес (): public Process exec( String command )
public Process exec( String command, String[ ] envVars )
public Process exec( String command, String[ ] envVars, File workDir ) public Process exec( String cmdAndArgs[ ] )
public Process exec( String[ ] cmdAndArgs, String[ ] envVars )
public Process exec( String[ ] cmdAndArgs, String[ ] envVars, File workDir )
запускают в отдельных процессах операционной системы исполняемые файлы. Аргументы этих методов:
•command – командная строка исполняемого файла;
•cmdAndArgs – массив строк, нулевым элементом которого является имя исполняемого файла, а остальные – его аргументы командной строки;
•envVars – массив переменных окружения для создаваемого процесса;
•workDir – название рабочего каталога создаваемого процесса.
Например, Runtime.getRuntime( ).exec( "notepad" ) запускает на платформе MS Windows программу «блокнот» без аргументов командной строки, рабочим каталогом которой будет рабочий каталог родительского процесса.
Экземпляр класса Process, возвращаемый любым методом exec, сохраняет связь с созданной дочерней программой и позволяет родительской программе взаимодействовать с ней.
Пакет java.lang Класс Process
Методом public void destroy ( )
можно остановить порожденный процесс. Метод public int waitFor( )
приостанавливает родительский процесс до тех пор, пока не закончится запущенный процесс.
Метод public int exitValue( )
позволяет получить его код завершения (естественно, в том случае, если не вызывался метод destroy( )).
Три метода:
public java.io.OutputStream getOutputStream( ), public java.io.InputStream getlnputStream( ), public public java.io.InputStream getErrorStream( )
возвращают входной поток (stdin), выходной поток (stdout), и поток ошибок (stderr) запущенного процесса. Ими можно воспользоваться для организации взаимодействия с дочерней задачей.
Пакет java.lang Класс String (1)
Класс String имеет много конструкторов: String( ) — создается объект с пустой строкой;
String( String str ) — из одного объекта создается другой (этот конструктор использовать не стоит);
String( StringBuffer str ) — преобразованная копия объекта класса StringBuffer;
String( StringBuilder str ) — преобразованная копия объекта класса StringBuilder;
String( byte[ ] byteArray ) — объект создается из массива байтов byteArray (понимаемых как ASCII-символы);
String( char[ ] charArray ) — объект создается из массива charArray символов Unicode;
String( byte [ ] byteArray, int offset, int count ) — объект создается из части массива байтов byteArray, начинающейся с индекса offset и содержащей count байтов;
String( char[ ] charArray, int offset, int count ) — то же, но массив состоит из двухбайтовых символов Unicode;
String( byte[ ] byteArray, String encoding ) — символы, записанные в массиве байтов, задаются в Unicode-строке, с учетом кодировки encoding;
String( byte[ ] byteArray, int offset, int count, String encoding ) — то же самое, но только для части массива.
String( byte[ ] byteArray, Charset charset ) — символы, записанные в массиве байтов, задаются в Unicode-строке, с учетом кодировки, заданной аргументом charset;
String( byte[ ] byteArray, int offset, int count, Charset charset ) — то же самое, но только для части массива.
Еще есть устаревшие конструкторы, которыми пользоваться не рекомендуется. Многие конструкторы могут выбрасывать исключения при некорректных аргументах.
Пакет java.lang Класс String (2)
В качестве строки encoding для кириллицы могут использоваться: "CP1251" – кодировка MS Windows;
"CP866" – кодировка MS DOS;
"KOI8-R" – кодировка *UNIX;
"ISO8859-5" – международная кодировка кириллицы.
Независимо от исходной кодировки все строки всегда содержат символы UNICODE.
При работе с консолью (метод System.out.println( …)) нужно помнить, что строки, выводимые в консольное окно, должны быть представлены в кодировке MS DOS. Поэтому их нужно явно преобразовывать в нужную кодировку, например, так:
String str = "Россия"; |
// строка UNICODE |
try{ |
|
System.out.println( str + "\n" + new String(str.getBytes("CP866"), "CP1251") ); } catch( Exception e ){
System.out.println( e.toString( ) );
}
Вот что появится в результате на консоли: ╨юёёш
Россия // это строка, полученная двойным преобразованием. Сначала
//UNICODE -> массив байтов в кодировке CP866, потом этот массив
//байтов снова в UNICODE, но с использованием кодировки CP1251
//В процессе вывода на консоль эта UNICODE-строка еще раз
//преобразовывается, но уже в кодировку CP866
Пакет java.lang Класс String (3)
Класс String имеет большое количество методов, из которых два статических метода: public static String copyValueOf( char[ ] charArray )
public static String copyValueOf( char[ ] charArray, int offset, int count )
по существу представляют собой еще два способа создать строку.
Пример:
char[ ] symbols = { 'с', 'и', 'м', 'в', 'о', 'л', 'ь', 'н', 'ы', 'й', ' ', 'м', 'а', 'с', 'с', 'и', 'в', '.',};
String fullString = String.copyValueOf( symbols ); |
// "символьный массив." |
String partString = String.copyValueOf( symbols, 11, 6 ); |
// "массив" |
Конечно, использовать эти методы с литералами смысла не имеет, однако эти методы удобно применять, если символьные UNICODE-массивы читаются из файлов или поступают из сети.
Для большинства типов есть статический метод преобразования значения в строку: static public String valueOf( … ):
static public String valueOf( boolean booleanValue ) static public String valueOf( char charValue )
static public String valueOf( char[ ] charArray )
static public String valueOf( char[ ] charArray, int offset, int count ) static public String valueOf( int intValue )
static public String valueOf( long longValue ) static public String valueOf( float floatValue ) static public String valueOf( double doubleValue ) static public String valueOf( Object objectValue )
Пакет java.lang Класс String (4)
Операции со строками.
Для строк в Java перегружен знак операции +, означающий конкатенацию:
System.out.println( "Current time in milliseconds: " + System.currentTimeMillis );
Выведено будет что-то вроде:
Current time in milliseconds: 1350190412046
Знаки операций сложения и конкатенации выполняются слева направо:
System.out.println( "0" + 1 + 2 ); |
// 012 |
System.out.println( "0" + (1 + 2) ); |
// 03 |
System.out.println( 1 + 2 + "0"); |
// 30 |
Есть еще один способ выполнить конкатенацию строк – вызвать метод: |
|
public String concat( String anyString) |
// anyString прицепляется в конец |
Удалить начальные и завершающие пробелы, табуляции, … можно методом: |
|
public String trim( ) |
// возвращает новый экземпляр строки |
Узнать длину строки можно с помощью метода: public int length( )
Получить подстроку: public String( int beginIndex )
public String( int beginIndex, int endIndex )
Для сравнения двух строк можно использовать методы:
public int compareTo( String anyString ) |
// -1: currentString < anyString, 0: ==, … |
|
public int compareToIgnoreCase( String anyString ) |
// не регистро-чувствительный |
|
Пакет java.lang Класс String (5)
Сравнить подстроку данной строки с подстрокой точно такой же длины другой строки можно методом:
public boolean regionMatches( int indThis, String otherStr, int indOther, int len )
Здесь:
indThis – индекс начала подстроки внутри данной строки; otherStr – другая строка;
indOther – индекс начала подстроки внутри другой строки otherStr len – длина сравниваемых подстрок.
Результат false получается в следующих случаях:
•хотя бы один из индексов indThis или indOther отрицателен;
•хотя бы одно из indThis + len или indOther + len больше длины соответствующей строки;
•хотя бы одна пара символов не совпадает.
Этот метод различает символы, записанные в разных регистрах. Если надо сравнивать подстроки без учета регистров букв, то следует использовать метод:
public boolean regionMatches( boolean flag, int indThis, String otherStr, int indOther, int len)
Если первый аргумент равен true , то регистр букв при сравнении подстрок не учитывается, если false – учитывается.
Выяснить, удовлетворяет ли строка в целом шаблону поиска заданного регулярного выражения, можно с помощью метода:
public boolean matches( String regex )
