Для Android используйте BackAndroid для выхода из приложения:
import React, {
BackAndroid,
} from 'react-native';
BackAndroid.exitApp();
Локальные переменные Java имеют защиту, известную как определенное присваивание , это означает, что вы не можете прочитать значение из них до того, как присвоите ему значение.
Они также определены в области действия : доступ к переменной можно получить только в пределах определенного фрагмента программы.
Вместе с этими двумя вещами вам не нужна отдельная переменная для каждой итерации цикла: вы гарантированно присваиваете локальной переменной значение перед ее использованием, поэтому вы гарантированно перезаписываете любое значение, которое было хранится в нем раньше, если таковые имеются.
Переменные - действительно просто полезная концепция в исходном коде. После компиляции байт-код не имеет имен переменных: компилятор просто определил, что он может временно использовать определенную часть памяти для хранения значения в течение ограниченного времени. Он будет многократно использовать эту память, но таким образом, чтобы она не перекрывала использование.
С небольшим упрощением:
Внутри блока { ... }
, int k = 0;
создает переменную, и эта переменная существует до того момента, когда вы достигнете конца блока, и там переменная разрушается. Таким образом, в любой момент во время выполнения программы существует не более одного n
, j
или k
.
Немного ближе к реальности:
Компилятор просматривает весь метод, находит список переменных, которые могут существовать параллельно (i
, n
, j
, k
и foundIt
), и выделяет достаточно места в стеке для этих переменных (5 мест в вашем примере). Эти места в стеке существуют с момента, когда вы вводите свой метод, до тех пор, пока вы не вернетесь из него, но они не используются постоянно, например, место k
содержит только полезные значения с момента выполнения int k = 0;
до конца итерации текущего цикла.