Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Java

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 25.09.2009, 19:16   #31
zondercap
Неактивный пользователь
 
Аватар для zondercap
 
Пол:Мужской
Регистрация: 25.09.2009
Сообщений: 2
Репутация: 1
По умолчанию Re: Простые (ли?) задачки по JAVA

Добавлено через 41 минуту
Цитата:
Сообщение от ana Посмотреть сообщение
Теперь вернёмся к нашей задаче и попробуем разобраться, а сколько
объектов будет доступно для garbage collector после выполнения цикла в main?

Код:

public class Garbage {
public static void main(String[] args) {

for (int i = 1; i < 5; i++) {
Nowa nowa = new Nowa();
}
System.gc();
System.out.println("Total finalized = " + Nowa.finalized);

}
}

Ну и кого сколько получилось?

Эклипс и виндозная консоль дали одинаковые результаты по вашему исходнику:
Object NOWA created: 1
Object NOWA created: 2
Object NOWA created: 3
Object NOWA created: 4
Total finalized = 4
По теории в момент прохода цикла формируется стек, в него вставляются созданные объекты, после завершения цикла- вызывается GC и в обратном порядке удаляет эти объекты.
небольшая модификация кода даёт наглядный результат размещений объектов в стеке
и обьратного их извлечения:

class Nowa {
static int objID = 0;
static int finalized = 0;
int i;

Nowa() {
i=++objID;
System.out.println("Object NOWA created: " + i);
}

public void finalize() {
System.out.println("Object NOWA deleted: id=" + i);
finalized++;

}
}
public class Garbage {
public static void main(String[] args) {

for (int i = 1; i < 5; i++) {
Nowa nowa = new Nowa();
}
System.out.println("Start GC_____");
System.gc();
System.out.println("Total finalized deleted obj-s = " + Nowa.finalized);

}
}
Результат работы:
Object NOWA created: 1
Object NOWA created: 2
Object NOWA created: 3
Object NOWA created: 4
Start GC_____
Object NOWA deleted: id=4
Object NOWA deleted: id=3
Object NOWA deleted: id=2
Object NOWA deleted: id=1
Total finalized deleted obj-s = 4

Добавлено через 55 минут
Цитата:
Сообщение от refactorer Посмотреть сообщение
как напечатать "Hello, world" в консоли без функции main()

Эклипс помоему не справится с такой задачей, по крайней мере у меня не вышло,
но стандарт(работа из консоли) сработал, сам проверил.
Выход следующий:
1) создаём файл: WithoutMain.java
его содержимое:
public class WithoutMain{

static {
System.out.println("Hello World");
System.exit(0);
}

}

2) Вызываем консоль- cmd
3) в консоли компилируем наш файл командой: javac WithoutMain.java
4) тут же запускаем скомпилированный класс командой: java WithoutMain
и получаем интересующий нас вывод на консоль:
Hello World
PS: работает без main метода благодаря тому, что статический метод всегда вызывается
в момент запуска, в данном случае получается наш безымянный статический метод вызывается будто это метод main.

Добавлено через 1 час 10 минут
Цитата:
Сообщение от ana Посмотреть сообщение
Для любителей семантики Java, попробуйте с карандашиком в руке подсчитать, что программа выведет в консоль. Честно, я не смог справится... запутался

Код:
class Test
{
    public static void main(String args[])
    {
        int i=0, j=0;
        X1: for(i = 0; i < 3; i++)
        {
            X2: for(j = 3; j > 0; j--)
            {
                if(i < j) continue X1;
                else break X2;
            }
        }
        System.out.println(i+" "+j);
    }
}
А вообще, кто нибудь пишет программы с метками?

PS. Задача взята с экзамена SCJP

Программы с меткам думаю редкое явление, не даром же существует пословица-
"з\п программиста обратнопропорциональна кол-ву меток в коде "

Касательно результата работы вышеприведенного кода получаем такие итерации:
1) i=0 j=3 continue
2) i=1 j=3 continue
3) i=2 j=3 continue
выход из внешнего цикла "X1: for(i = 0; i < 3; i++)" и финальный инкремент i
итого имеем:
i=3 j=3
__________________
Возможно, в этом мире ты всего лишь человек, но для кого-то ты весь МИР!

Последний раз редактировалось zondercap; 25.09.2009 в 20:27.. Причина: Добавлено сообщение
zondercap вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: pwz-c 70-40 w2/3Интернет-магазин КНС Нева - KF564C32RSK2-64 - КНС Санкт-Петербург - мы дорожим каждым клиентом!алкоголь и имплантация зубовХорошее предложение в KNS на дигма ноутбук - более 50-ти тысяч наименований товаров со склада в Москвеинтеграция циан и битрикс 24


Старый 19.10.2009, 22:34   #32
ana
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Re: Простые (ли?) задачки по JAVA

Цитата:
Сообщение от zondercap Посмотреть сообщение
PS: работает без main метода благодаря тому, что статический метод всегда вызывается
в момент запуска, в данном случае получается наш безымянный статический метод вызывается будто это метод main.

Прикол! Действительно работает...



Только надо из метода сразу выходить, иначе покажет ошибку... .
Не могу сообразить, где и как это можно применить... .
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...
ana вне форума
 
Ответить с цитированием Вверх
Старый 24.10.2009, 20:54   #33
Matrix9
Неактивный пользователь
 
Пол:Мужской
Регистрация: 24.10.2009
Сообщений: 4
Репутация: 0
По умолчанию Re: Простые (ли?) задачки по JAVA

Да нигде это не надо применять - просто особенность компилятора наверное.
Matrix9 вне форума
 
Ответить с цитированием Вверх
Старый 04.11.2009, 02:29   #34
andrew_001
Неактивный пользователь
 
Регистрация: 28.10.2009
Сообщений: 12
Репутация: 0
Lightbulb Re: Простые (ли?) задачки по JAVA

Цитата:
Сообщение от refactorer Посмотреть сообщение
как напечатать "Hello, world" в консоли без функции main()

написать апплет. определить метод init() и выполнить аплет через appletviewer

Не утверждение, а просто вариант
andrew_001 вне форума
 
Ответить с цитированием Вверх
Старый 03.12.2009, 00:19   #35
ana
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Re: Простые (ли?) задачки по JAVA

Вот следующая задачка, на знание работы do-while

Код:
	static public void main(String d[]) {

		boolean b = true;
		int x = 0;

		do {
			if (x++ > 5)	b = false;
			System.out.println("x= " + x);
		} while (b);
	}
Вопрос простой, что выведет программа?
Пожалуйста не копируйте код в editor,
попробуйте в уме!

И маленькая задачка на знание цикла for

Код:
	static public void main(String[] args) {

		for (byte x = 125; x < 128; ++x) {
			System.out.println(x);
		}
	}
Сколько раз выполнится цикл for?
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...

Последний раз редактировалось ana; 03.12.2009 в 00:41..
ana вне форума
 
Ответить с цитированием Вверх
Старый 03.12.2009, 14:02   #36
Varvar
Новичок
 
Пол:Мужской
Регистрация: 02.11.2007
Сообщений: 26
Репутация: 14
По умолчанию Re: Простые (ли?) задачки по JAVA

Задача 1

x= 1
x= 2
x= 3
x= 4
x= 5
x= 6
x= 7
Varvar вне форума
 
Ответить с цитированием Вверх
Старый 08.04.2010, 12:43   #37
korian
Неактивный пользователь
 
Пол:Мужской
Регистрация: 08.04.2010
Сообщений: 2
Репутация: 0
По умолчанию Re: Простые (ли?) задачки по JAVA

задача 1:
а 7 от куда?
1-6 и хватит

задача 2:
скорее всего не выполница ниразу, потому что 128 = -128

что будет содержать x?
byte x = 1;
x = x << 9;
korian вне форума
 
Ответить с цитированием Вверх
Старый 28.04.2010, 01:28   #38
ana
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Re: Простые (ли?) задачки по JAVA

Один маленький пример>


В main...

Map<Object, Object> map = new TreeMap<Object, Object>();

теперь добавляем элементы

map.put("1", 1);
map.put(1, "1");

Теперь попробуем распечатать размер

System.out.println(map.size());

Ну теперь навскидку, что будет в ответе?

2 или ошибка компиляции или ошибка выполнения... ?
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...
ana вне форума
 
Ответить с цитированием Вверх
Старый 25.10.2012, 20:07   #39
xm02
Неактивный пользователь
 
Пол:Мужской
Регистрация: 02.05.2008
Адрес: qrg
Сообщений: 2
Репутация: 0
По умолчанию Re: Простые (ли?) задачки по JAVA

Жаль, заглох раздельчик
xm02 вне форума
 
Ответить с цитированием Вверх
Старый 22.03.2013, 12:21   #40
bamond
Неактивный пользователь
 
Пол:Мужской
Регистрация: 01.12.2011
Сообщений: 1
Репутация: 0
По умолчанию Re: Простые (ли?) задачки по JAVA

угу .... надеюсь будут еще посты на эту тему =(
bamond вне форума
 
Ответить с цитированием Вверх
Старый 23.08.2014, 14:28   #41
soyGoodMan
Неактивный пользователь
 
Пол:Мужской
Регистрация: 23.08.2014
Сообщений: 5
Репутация: 0
По умолчанию Re: Простые (ли?) задачки по JAVA

Сорри, ответил не туда

Добавлено через 29 минут
Цитата:
Сообщение от ana Посмотреть сообщение
Один маленький пример>


В main...

Map<Object, Object> map = new TreeMap<Object, Object>();

теперь добавляем элементы

map.put("1", 1);
map.put(1, "1");

Теперь попробуем распечатать размер

System.out.println(map.size());

Ну теперь навскидку, что будет в ответе?

2 или ошибка компиляции или ошибка выполнения... ?

----------------------------------------------------------------
мне кажется, не дойдет до сравнения. По спецификации,
TreeMap предполагает, что туда будут вставляться только пары со
сравнимыми ключами. При вставке, он будет их упорядочивать.
Первой вставкой вставится ключ "1" типа String со значением 1 типа Integer
При второй вставке будет вставляться ключ 1 типа Integer со значением
"1" типа String и в это время TreeMap попытается упорядочить ключи, сравнив их друг с другом,
т.е. вызвав "1".compareTo(1), и получится ClassCastException.

Добавлено через 42 минуты
Цитата:
Сообщение от ana Посмотреть сообщение
Вот следующая задачка, на знание работы do-while

Код:
	static public void main(String d[]) {

		boolean b = true;
		int x = 0;

		do {
			if (x++ > 5)	b = false;
			System.out.println("x= " + x);
		} while (b);
	}
Вопрос простой, что выведет программа?
Пожалуйста не копируйте код в editor,
попробуйте в уме!

И маленькая задачка на знание цикла for

Код:
	static public void main(String[] args) {

		for (byte x = 125; x < 128; ++x) {
			System.out.println(x);
		}
	}
Сколько раз выполнится цикл for?

Задача 1
Будет очевидно выполяться 6 раз (от 0 до 5), пока счетчик не вырастет до 5-и. Дальше условие 5++ > 5 не сработает, будет напечатана очередная строка для следующего значения счетчика (x = 6), и уйдет на следующую итерацию; там условие 6++ > 5 сработает, будет напечатана в последний раз строка для следующего значения счетчика, и выйдет из цикла. То есть, всего 7 строк от x=1 до x=7 включительно.
Задача 2
Т.к. макс. значение байта 127, условие выхода из цикла никогда не будет верно.

Последний раз редактировалось soyGoodMan; 23.08.2014 в 15:12.. Причина: забыл добавить ответ на зад.2
soyGoodMan вне форума
 
Ответить с цитированием Вверх
Старый 25.09.2015, 20:07   #42
Petro37
Постоялец
 
Пол:Мужской
Регистрация: 15.12.2007
Сообщений: 208
Репутация: 162
По умолчанию Re: Простые (ли?) задачки по JAVA

Цитата:
Сообщение от ana Посмотреть сообщение
Для любителей семантики Java, попробуйте с карандашиком в руке подсчитать, что программа выведет в консоль. Честно, я не смог справится... запутался

Код:
class Test
{
    public static void main(String args[])
    {
        int i=0, j=0;
        X1: for(i = 0; i < 3; i++)
        {
            X2: for(j = 3; j > 0; j--)
            {
                if(i < j) continue X1;
                else break X2;
            }
        }
        System.out.println(i+" "+j);
    }
}
А вообще, кто нибудь пишет программы с метками?

PS. Задача взята с экзамена SCJP

Как-то пробовал но всё никак не уловлю в этом толк.


Код:
public class Test {
	
		public static void main(String args[])
				    {
				    	int t = 0;int w = 0;
				        int i=0, j=0;
				        X1: for(i = 0; i < 3; i++, w++)
				        {
				            X2: for(j = 3; j > 0; j--, t++)
				            {
				                if(i < j) continue X1;
				                else break X2;
				            }
				        }
				        System.out.println(i+" "+j+" "+t+" "+w);
				    }
		
			}
3 3 0 3

Я добавил в циклы по одной переменной. И сразу стало видно, что код во втором цикле не выполнится ни разу.
Petro37 вне форума
 
Ответить с цитированием Вверх
Старый 10.03.2017, 19:59   #43
pitonby
Новичок
 
Пол:Мужской
Регистрация: 10.03.2017
Сообщений: 5
Репутация: 2
По умолчанию Re: Простые (ли?) задачки по JAVA

Эх, только зарегался, и вижу хорошая тема затухла((
pitonby вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загадки и задачки Nu Je Юмор 200 25.01.2021 08:58
Java начинающему. Что нужно для разработки Java-приложения? mrzed Java 37 24.03.2011 15:31
Помогите решить задачки Vladylbkin Программирование 1 07.10.2009 22:44

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 00:09. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.19222 секунды с 11 запросами