Runtime myRuntime = Runtime.getRuntime();
myRuntime.gc();
//и будет вам счастье
пара вопросов по Java
вопрос: суперкласс - это предок всех класов или класс-родитель дочернего класса?
воторой вопрос: если метод в классе объявляется безо всякого модификатора, то каким он считается public, protected или private?
Ответ на второй: public
спасибо Criolit
Ответ на второй: public[/QUOTE]
Ай ай ай =)) private конечно же )
А я думал это тоже, что и internal в .NET: доступен из того же пакета
Ответ на второй: public[/QUOTE]
На второй ответ правильно сказать не public а default
public - полный доступ.
protected - доступен внутри пакета и наследуемыми классами
default - доступен только внутри пакета
private - доступен только внутри класса
как вывести код символа?
с кодом символа я разобрался, а в какая кодировка используется?
0ver10PD конечно прав )
System.out.println(Charset.defaultCharset());
В книге П.Ноутон и Г.Шилдт "Java2" написано на странице 174 в листинге указано: доступ по умолчанию public. Так это что ошибка в книге? Если да, то оторвать редактору одно место :)!
Согласен, что не логично. Сейчас проверю.
Видимо так и есть. Проверить довольно легко ведь - достаточно создать метод без модификаторов и попытаться к нему обратиться из другого класса.
Да и не логично было бы Public делать )
Собственно из официальной спецификации языка:
http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html
Таки public по умолчанию.
20ver10PD а в каком пакете находится Chareset?
таки неправильно
создай классы в разных пакетах, и попробуй обратится на прямую к переменной, тоже самое если в разных пакетах и твой класс наследует класс в котором переменная default
http://www.janeg.ca/scjp/declarations/access.html
или гугл в помошь "java access modifiers" но достаточно проверит самому
[QUOTE=Михаил]20ver10PD а в каком пакете находится Chareset?[/QUOTE]
java.nio.charset.Charset
Но относительно дефолтной кодировки - такого метода я никогда не видел, может в новой jre есть такая имплементация, но в 1.4.2 НЕТУ!!!
Чтоби достать дефолтний Charset (пакет: java.nio.charser) делаю так:
Charset.forName(System.getProperty("file.encoding"))
создай классы в разных пакетах, и попробуй обратится на прямую к переменной, тоже самое если в разных пакетах и твой класс наследует класс в котором переменная default
http://www.janeg.ca/scjp/declarations/access.html
или гугл в помошь "java access modifiers" но достаточно проверит самому
java.nio.charset.Charset[/QUOTE]
Во блин как в этой Java намутили с доступом к членам класса.
Но относительно дефолтной кодировки - такого метода я никогда не видел, может в новой jre есть такая имплементация, но в 1.4.2 НЕТУ!!!
Чтоби достать дефолтний Charset (пакет: java.nio.charser) делаю так:
Charset.forName(System.getProperty("file.encoding"))[/QUOTE]
Согласен, что в 1.4.2 этого нету, я юзаю 1.5.0 (в ней так и написано что это начиная с версии 1.5 появилось, и кстати по исходникам оно именно так ее и получает в 1.5)
то есть если я напишу так
String s=new String("nmn");
int i;
for(i=0;i<10;i++)s=s+i;
то всего экземпляров класса String будет 11 или 1?
теоретически правильным будет ответ, что остаётся 1 строка, т.к. на каждой итерации при создании нового объекта строки переменная уже не будет указывать на старый объект и он должен быть уничтожен... на практике я предполагаю, что реальное количество строковых объектов может и не равняться 1, а быть и больше... смотря насколько сборщик мусора хорошо выполняет свою работу(при большом желании можно было вызывать его на каждой итерации, но кому это надо?)
а когда вызывается сборщик мусора?
нормальное положение шлакбаума - закрытое
Код:
String s=new String("nmn");
int i;
for(i=0;i<10;i++)s=s+i;
Действительно екземляров будет 11. Пока сборщик мусора (GC) не виполнится. Но ето не самое плохое в данои ситуации - хуже то - что 11 раз будет виделятся место в пам'яти (а если GC будет виполнятся при каждои итерации, то ето притормозит роботу програми).
Для виполнения операции з строками лучше использовать клас StringBuffer - он бистрее и намного зручнее.
Runtime.getRuntime().gc(); , мы всего-лишь говорим сборщику мусора, что мы хотим его вызвать. Вызов этого метода не обязательно приводит к выполнению очистки. В Sun-овском экзамене есть вопрос, что-то типа: "Можно ли принудительно вызвать сборщик мусора?". На буржуйском, естественно. Правильный ответ - НЕТ! Мы можем только попросить... А как он решит - это его дело, и я подозреваю, что разные реализации будут вести себя по-разному. Такие вот пироги.
Runtime.getRuntime().gc(); , мы всего-лишь говорим сборщику мусора, что мы хотим его вызвать. Вызов этого метода не обязательно приводит к выполнению очистки. В Sun-овском экзамене есть вопрос, что-то типа: "Можно ли принудительно вызвать сборщик мусора?". На буржуйском, естественно. Правильный ответ - НЕТ! Мы можем только попросить... А как он решит - это его дело, и я подозреваю, что разные реализации будут вести себя по-разному. Такие вот пироги.[/QUOTE]
Читай SUNовский JavaDoc http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#gc()
Цитата:
Runs the garbage collector. Calling this method suggests that the Java virtual machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse.
Запускает сборщик мусора. Вызов этого метода предполагает что виртуальная машина Java тратит "усилия" на предстаящий сбор неиспользуемых объектов для очистки памяти они занимают доступно для быстрого (дальнейшего) использования.
Вот здесь http://java.sun.com/docs/hotspot/gc1.4.2/faq.html пункт 14