Java только фигурные скобки

Я читал книгу, и было несколько примеров с программами, которые имеют только фигурные скобки

например

 public static void main(String args[]){
     //what is the uses of curly braces here.
     {
          //some code
     }
 }

Ответ 1

Это блок кода. Объявленные в нем переменные не видны в верхнем блоке (тело метода вне этих завитушек), то есть они имеют более ограниченную область.

Ответ 2

Будьте осторожны, это НЕ ВСЕГДА блок инициализации, как предлагали другие. В вашем случае это механизм с переменной видимостью, называемый блоком или блоком кода.

Если это вне метода, то это!

Пример

public class MyClass {

   {
      // this is an initialisation block
   }

}

Однако, если он находится внутри метода, это НЕ! В этом случае (что имеет место в вашем примере) это кодовый блок. Все, что инициализировано внутри фигурных скобок, не видно снаружи

Пример

public static void main(String args[]){

     {
          String myString = "you can't see me!";
     }
     System.out.println(myString); // this will not compile because myString is not visible.
 }

Ответ 3

Он называется Блок

Блок представляет собой последовательность операторов, деклараций локального класса и операторов объявления локальной переменной в фигурных скобках.

Также смотрите:

Ответ 4

В некоторых случаях вы можете логически отделять свой код от этого, и на самом деле есть один случай, который я применяю очень часто: демо-данные. Например, у вас есть класс генерации демо-данных, который создает записи демо-данных и вставляет их в вашу базу данных. Вы помещаете каждый отдельный элемент в такой блок и можете копировать-вставлять без изменения имен переменных.

Ответ 5

Эта идея использования фигурных скобок как конструкции кодирования является обсуждаемой проблемой в мире Java. Есть несколько объяснений, которые люди придумывают, когда сами видят фигурные скобки. Поэтому я собираюсь попытаться ответить на ваш вопрос с практической точки зрения.

Подразумеваемый вопрос в вашем сообщении здесь, действительно - когда/почему они используются? Практически говоря, следующие случаи могут привести к одиночному кодовому блоку:

1) Программист хотел дополнительно определить область, чтобы повторно использовать имена переменных, не опасаясь столкновения для ясности (т.е. создание нескольких объектов одного типа в блоке вставки unit test или базы данных).

другие возможные причины:

2) Забытый if/else/for/while цикл кода, который находится в разработке.

3) Оставшийся артефакт удаленной команды if/else/for/while.

4) Автогенерированный код использует область видимости для упрощения создания нескольких аналогичных компонентов с идентичными именами переменных (т.е. рассмотрим генератор gui, который должен был создать код для 100 переключателей - вместо того, чтобы увеличивать имена переменных на кнопку, он может использовать область видимости).

5) Как крошечный, многоразовый, пассивный логический блок с минимальными побочными эффектами: программист, почувствованный как блок кода в методе, был настолько неясным, его переменные и внутренние побочные эффекты должны иметь минимальную видимость для внешнего мира. То есть программист использовал блок кода в качестве анонимной лямбда-функции бедного человека (хотя и без возвращаемого значения). В этом шаблоне можно сделать что-то похожее на нижеследующее:

//lets say I want to make a primary key for a dogs name in a database. 
String dogNameKey=null;
{
    long time = System.currentTimeInMilliseconds();
    String theName = "spot";
    dogName=theName+"_"+time;
}

Ясно, что простая стратегия для обозначения этой записи (dogNameKey) недостойна внешнего метода - это слишком просто. Но в то же время переменная "время" не должна иметь никакой опоры или доступности вне логики для повышения этого имени, т.е. Она не должна даже иметь отношение к методу, который содержит этот крошечный блок генерации ключей. Таким образом, используя фигурные скобки, я все понял. Если бы labmda был возможен, то вся эта область охвата могла бы быть обернута одной анонимной функцией.

Теперь - я мог бы вставить несколько из этих блоков, и имена переменных были бы одинаковыми, поэтому было бы легко отсканировать их на глаз.

* Таким образом, когда вы видите фигурные скобки сами по себе - они, как правило, очень важны - либо они реализуют конкретное выборочное обследование, либо являются артефактом ошибки или потенциально автогенерированного кода. Скоринг может также использоваться для "запуска" рефакторинга метода без фактического написания нового метода путем разделения его независимых частей... хотя IDE намного лучше, чем люди. *