Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > локальные переменные в классе


Автор: ressac 17.10.2008, 16:10
я раньше учил С , там всё просто с переменными было а тут вот столкнулся с проблемой.

Код

public class Main {

    public static void main(String[] args) {
        
    double k = 8.89345;
    
    { // блок для проверки

        double k; // говорит что уже есть, но ведь это отдельный блок,  почему нельзя?
    }
    

    }

}

Автор: gelo86 17.10.2008, 16:16
В яве нет такого, что можна в нутренном блоке переопределят переменную. Да и не красиво так программировать.

Автор: niasilil 19.10.2008, 04:19
зато вне метода так можно сделать. smile  так делают, но редко. 
Код

public class Test {

    private double d = 0;
    {
        double d = 2.0;
    }

    public static void main(String[] args) {
        // ...
    }
}

а внутри метода скобки не объявляют новый local scope, если очень надо, то делай ссылку на другой метод. Что то же самое по большому счету. 

Автор: ressac 19.10.2008, 10:54
Цитата(niasilil @ 19.10.2008,  02:19)
зато вне метода так можно сделать. smile  так делают, но редко. 
Код

public class Test {

    private double d = 0;
    {
        double d = 2.0;
    }

    public static void main(String[] args) {
        // ...
    }
}

а внутри метода скобки не объявляют новый local scope, если очень надо, то делай ссылку на другой метод. Что то же самое по большому счету.

спасибо познавательно
а как я потом вызаву тот (тот что под private double) блок? smile

Автор: susanin 19.10.2008, 11:40
Цитата(ressac @  19.10.2008,  10:54 Найти цитируемый пост)
а как я потом вызаву тот (тот что под private double) блок?

можно попросить Девида Блейна.. smile  а вообще переменная живет только в блоке {} поэтому после него ее вызвать нельзя

Автор: ressac 20.10.2008, 21:11
susanin, спасиб smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)