Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Объявление переменной String / 5 сообщений из 5, страница 1 из 1
20.04.2012, 18:49:45
    #37763834
m.gisko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объявление переменной String
Всем добрый день. Я новичек в java и вот при решении очередной задачки возник вопрос у меня. Сильно не ругайте, если уж вопрос соовсем выходит за рамки. Вот есть два варинта чтения строк в цикле. В первом варинте я переменную String aString[] объявляю перед циклом, а во втором в цикле. Скажите есть ли разница в этих двух примерах и если есть, то как правильнее делать и к чему может привести не правильное объявление?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
           
                String sBufline;
                String arr[] = new String[100];
                String aString[];

                BufferedReader bufreader = new BufferedReader(new InputStreamReader(System.in));

                Pattern pat = Pattern.compile("[ ;:'.,!?/()]+");
                int i=0;
                do{
                        sBufline = bufreader.readLine();
                        aString[] = pat.split(sBufline);

                        for(int k=0;k<aString.length;k++){
                            if(aString[k].equals(args[0])){
                                arr[i]=sBufline;
                                i=i+1;
                            }
                        }
                }while(!sBufline.equals("stop"));


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
                String sBufline;
                String arr[] = new String[100];

                BufferedReader bufreader = new BufferedReader(new InputStreamReader(System.in));

                Pattern pat = Pattern.compile("[ ;:'.,!?/()]+");
                int i=0;
                do{
                        sBufline = bufreader.readLine();
                        String aString[] = pat.split(sBufline);

                        for(int k=0;k<aString.length;k++){
                            if(aString[k].equals(args[0])){
                                arr[i]=sBufline;
                                i=i+1;
                            }
                        }
                }while(!sBufline.equals("stop"));
...
Рейтинг: 0 / 0
20.04.2012, 19:03:51
    #37763851
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объявление переменной String
Чем меньше область видимости (scope) переменной, тем лучше.
Меньше вероятность ошибки связаной с тем что переменная поменяла своё значение где-то ещё.
Проще читать, так как не нужно искать а где же ещё могла использоваться эта переменная.
...
Рейтинг: 0 / 0
21.04.2012, 01:09:50
    #37764140
m.gisko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объявление переменной String
BlazkowiczЧем меньше область видимости (scope) переменной, тем лучше.
Меньше вероятность ошибки связаной с тем что переменная поменяла своё значение где-то ещё.
Проще читать, так как не нужно искать а где же ещё могла использоваться эта переменная.
т.е в данном случае лучше испльзовать второй вариант я так полагаю, что бы не думать, что эта переменная еще принимала ранее какое-то значение......а при прохождении следующего шага в цикле объект String aString[] уничтожается и создается новый, а в первом примере не уничтожается а перезаписывается, да?....спасибо за ответ
...
Рейтинг: 0 / 0
21.04.2012, 08:16:54
    #37764242
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объявление переменной String
m.giskoа при прохождении следующего шага в цикле объект String aString[] уничтожается и создается новый, а в первом примере не уничтожается а перезаписывается, да?
Нет.
Во первых, терминология: String aString[] это не объект, а локальная переменная. Она при исполнении создается один раз при вызове метода, неважно, описана она внутри цикла или нет.

Если же говорить об объекте, на который ссылается эта переменная , то этот объект в обоих случаях создается каждый раз заново в вызове pat.split(sBufline). Старый объект не перезаписывается, а просто теряется, и его память будет переиспользована после сборки мусора.
...
Рейтинг: 0 / 0
22.04.2012, 01:48:31
    #37764892
m.gisko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объявление переменной String
rfq,

спасибо большое...почитал про сборщик мусора)...вопрос закрыт
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Объявление переменной String / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]